TTF_MW_expert





//+------------------------------------------------------------------+
//|         Adviser working by some indicator
//|         Copyright 2007, Victor Lukashuk aka lukas1
//|              
//|         version 01    25.07.2007
//+------------------------------------------------------------------+
//
// Ýêñïåðò îòêðûâàåò è çàêðûâàåò ïîçèöèè ïî ïðîïèñàííîìó èíäèêàòîðó "TTF_MW.mq4"
// à ìîæåò è ïî äðóãîìó èíäèêàòîðó - ýòà âåðñèÿ äëÿ èíäèêàòîðîâ, ðèñóþùèõ òî÷êè
#property copyright "Copyright © 2007, lukas1"
#include <stdlib.mqh>         // áèáëèîòåêà îòîáðàæåíèÿ îøèáîê

extern int    Take_profit=120;
extern int    Stop_loss=40;
extern int    TrailingStep=95;           // øàã òðåéëèíãà
extern double TrailingStop=15;           // ñòîïû ïî òðåéëèíãó
// ïàðàìåòðû äëÿ 1 ÷àñîâîê äëÿ EURUSD
extern string indicator = "TTF_MW";
extern double    open_param1=80;
extern double    open_param2=18;
extern double    open_param3=27.1;
extern int    buffer_for_open_buy=0;
extern int    buffer_for_open_sell=1;

extern double    close_param4=78;
extern double    close_param5=54;
extern double    close_param6=4.6;
extern int    buffer_for_close_buy=0;
extern int    buffer_for_close_sell=0;

extern double    level_comparity=0.5;

extern double Lots  =0.1;
extern int    MAGIC=111222;
int    digits;     // êîëè÷åñòâî çíàêîâ äëÿ ðàáîòû ñ äàííîé âàë. ïàðîé
int    stoplevel;     // ìèíèìàëüíûé îòñòóï óñòàíîâêè ñòîïîâûõ îðäåðîâ
int    spred;  
double f1=0.01;
double s1=0.01;
int Buy=0;
int Sell=0;
double b=1;
int    cnt=0;
double PROF=0;
double STOP=0;
int    ticket,st,pr;  
//+------------------------------------------------------------------+
//|  
//------------------------------------------------------------------------------------------------------------- 
int start() 
  { 
   // â ñàìîì íà÷àëå 20 ðàç ïðîâåðÿåì ÷òî òîðãîâëÿ ðàçðåøåíà
    if (!IsTradeAllowed())  return(0);
    Buy=0;Sell=0;
    f1 =  iCustom(NULL,0,indicator,close_param4,close_param5,close_param6,buffer_for_close_buy, 1);
    s1 =  iCustom(NULL,0,indicator,close_param4,close_param5,close_param6,buffer_for_close_sell, 1);
    if (f1>level_comparity) {Buy=1; }
    if (s1>level_comparity) {Sell=1;}
//Comment (" f1=  ",f1, " s1=  ",s1, " b=  ",b) ;  

if(b<Bars)
  {
// çàêðûâàåì îòêðûòûå ïîçèöèè äëÿ ÁÀÉ
for(cnt=OrdersTotal();cnt>=0;cnt--)
   {OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if ( OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC )  
         if(OrderType()==OP_BUY)   
           {// åñëè ÑÅËË äëèííóþ ïîçèöèþ çàêðûòü 
            if((Sell==1)&&(b<Bars))
              {OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);  // close position
               s1=0.01;
               return(0);
              }
            // check for trailing stop for BUY
            if(TrailingStop>0) // åñëè ïàðàìåòð TrailingStop çàäàí è áîëüøå 0 
              {                 
               if(OrderOpenPrice()<(Bid-Point*TrailingStep)) 
                 {
                  if(OrderStopLoss()<(Bid-Point*(TrailingStop+TrailingStep+1))) 
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,DodgerBlue);
                     // òî ïåðåíîñèì ñòîï óðîâåíü îðäåðà íà óðîâåíü Bid-Point*TrailingStop                    
                     return(0);
    }      }  }  }  }
// çàêðûâàåì îòêðûòûå ïîçèöèè äëÿ ÑÅËË
for(cnt=OrdersTotal();cnt>=0;cnt--)
   {OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if ( OrderSymbol()==Symbol() || OrderMagicNumber()==MAGIC)  
         if(OrderType()==OP_SELL)   
           {// åñëè ÁÀÉ êîðîòêóþ ïîçèöèþ çàêðûòü 
            if ((Buy==1)&&(b<Bars))
              {OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);    // close position
               f1=0.01;
               return(0);
              }
            // check for trailing stop for SELL
            if(TrailingStop>0)  
              {                 
               if(OrderOpenPrice()>(Ask+Point*TrailingStep))
                 {
                  if((OrderStopLoss()>(Ask+Point*(TrailingStop+TrailingStep+1))))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Coral);
                     return(0);
    }      }  }  }  }
    Buy=0;Sell=0;
    f1 =  iCustom(NULL,0,indicator,open_param1,open_param2,open_param3,buffer_for_open_buy, 1);
    s1 =  iCustom(NULL,0,indicator,open_param1,open_param2,open_param3,buffer_for_open_sell, 1);
    if (f1>level_comparity) {Buy=1; }
    if (s1>level_comparity) {Sell=1;}
//Comment (" f1=  ",f1, " s1=  ",s1, " b=  ",b) ;  

// îòêðûâàåì íîâûå îðäåðà ÑÅËË
if (OrdersTotal()<1)
    if((Sell==1)&&(b<Bars))
              {b=Bars;
               // ðàñ÷åò ñòîïîâûõ îðäåðîâ
               PROF=0; STOP=0;
               if(Stop_loss>0)
                  {if(Stop_loss-spred<=stoplevel)   st=stoplevel; else st=Stop_loss-spred;
                   STOP=NormalizeDouble(Ask+st*Point,digits);     
                  }
               if(Take_profit>0)
                  {pr=Take_profit+spred;   //ðàñ÷åò TP îò Ask
                   PROF=NormalizeDouble(Ask-pr*Point,digits);
                  }
               ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,
                                 NormalizeDouble(STOP,digits),    // SL
                                 NormalizeDouble(PROF,digits),    // TP
                                 "sell_",MAGIC,0,Red);
               if(ticket<1) 
                  {Print("Oøèáêà ",ErrorDescription(GetLastError())); 
                   return(0); 
                  }
               else s1=0.01;
               return(0); // exit
              }

// îòêðûâàåì íîâûå îðäåðà ÁÀÉ
if (OrdersTotal()<1)
    if((Buy==1)&&(b<Bars))
              {b=Bars;
               // ðàñ÷åò ñòîïîâûõ îðäåðîâ
               PROF=0; STOP=0;
               stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
               spred    =MarketInfo(Symbol(),MODE_SPREAD);
               digits   =MarketInfo(Symbol(),MODE_DIGITS);        
               if (Stop_loss>0)
                  {if(Stop_loss-spred<=stoplevel)   st=stoplevel; else st=Stop_loss-spred;     
                   STOP=NormalizeDouble(Bid-st*Point,digits);
                  }
               if(Take_profit>0)
                  {pr=Take_profit+spred;   //ðàñ÷åò TP îò Bid
                   PROF=NormalizeDouble(Bid+pr*Point,digits);
                  }               
               ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,
                                 NormalizeDouble(STOP,digits),   // SL
                                 NormalizeDouble(PROF,digits),   // TP
                                 "buy_",MAGIC,0,Blue);
               if(ticket<1) 
                  {Print("Oøèáêà ",ErrorDescription(GetLastError())); 
                   return(0); 
                  }
               else f1=0.01;
               return(0); // exit
              }
   if(AccountFreeMargin()<(300*Lots)) // Ïðîâåðêà íàëè÷èÿ ñâîáîäíûõ ñðåäñòâ äëÿ òîðãîâëè
      {Alert("Ìû íå èìååì äåíåã. Free Margin = ", AccountFreeMargin()); /*ÿ çàìåíèë ôóíêöèþ Print 
       âûâîäÿùóþ ñîîáùåíèÿ â ôàéë îò÷¸òà, êîòîðûé íåïîíÿòíî ãäå ñìîòðåòü íà ôóíêöèþ Alert*/
       return(0);
      }
   return(0);
  }
}



Sample



image not available


Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:




Custom Indicators Used:
Indicator

Order Management characteristics:
Checks for the total of open orders

It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy

Other Features:

It issuies visual alerts to the screen