Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
cm_tral_ma
//+------------------------------------------------------------------+
//|                               Copyright © 2016, Õëûñòîâ Âëàäèìèð |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, http://cmillion.ru"
#property link      "cmillion@narod.ru"
#property strict
#property description "Ñîâåòíèê òðàëèò ñòîïëîññ è òåéêïðîôèò ïî èíäèêàòîðó ÌÀ"
//--------------------------------------------------------------------*/
enum tf
  {
   m1=1,    // M1
   m5=5,    // M5
   m15=15,  // M15
   m30=30,  // M30
   h1=60,   // H1
   h4=240,  // H4
   d1=1440, // D1
   t=0,     // current
  };
//--------------------------------------------------------------------*/
extern bool                Tral_SL        = true;        //òðàëèòü ñòîïëîññ   
extern bool                Tral_TP        = true;        //òðàëèòü òåéêïðîôèò   
sinput string              ma             = "";          //ïàðàìåòðû èíäèêàòðà ÌÀ    
extern int                 period         = 55,          //Ïåðèîä óñðåäíåíèÿ äëÿ âû÷èñëåíèÿ ïåðâîé MA.
                           ma_shift       = 0;           //Ñäâèã èíäèêàòîðà ÌÀ îòíîñèòåëüíî öåíîâîãî ãðàôèêà.
input ENUM_MA_METHOD       ma_method      = MODE_SMMA;   //Ìåòîä óñðåäíåíèÿ èíäèêàòîðà ÌÀ. 
input ENUM_APPLIED_PRICE   applied_price  = PRICE_OPEN;  //Èñïîëüçóåìàÿ öåíà èíäèêàòîðà ÌÀ. 
input tf                   timeframe      = t;           //Òàéìôðåéì èíäèêàòîðà ÌÀ. 
sinput int                 Magic          = -1;          //ìàãèê íîìåð îðäåðîâ (-1 âåäåò âñå îðäåðà)
//--------------------------------------------------------------------
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//-------------------------------------------------------------------
void OnTick()
  {
   if(!IsTradeAllowed()) return;
   double stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
   double OSL,OTP,OOP=0,SL=0,TP=0;
   int i,tip;
   double MA=NormalizeDouble(iMA(NULL,timeframe,period,ma_shift,ma_method,applied_price,1),Digits);
   for(i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && (Magic==OrderMagicNumber() || Magic==-1))
           {
            tip = OrderType();
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if(tip==OP_BUY)
              {
               if(Tral_SL && Bid>MA+stoplevel && MA>OSL) SL=MA;
               if(Tral_TP && Ask<MA-stoplevel && MA!=OTP) TP=MA;
               if(SL!=OSL || TP!=OTP)
                 {
                  if(!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",(GetLastError()),">> ");
                 }
              }
            if(tip==OP_SELL)
              {
               if(Tral_SL && Ask<MA-stoplevel && (MA<OSL || OSL==0)) SL=MA;
               if(Tral_TP && Bid>MA+stoplevel && MA!=OTP) TP=MA;
               if(SL!=OSL || TP!=OTP)
                 {
                  if(!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",(GetLastError()),">> ");
                 }
              }
           }
        }
     }
   if(IsTesting() && OOP==0)
     {
      if(Bid>MA+stoplevel+10*Point)
        {
         if(OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),100,0,0,NULL,Magic,0,clrNONE)==-1)
            Print("Îøèáêà îòêðûòèÿ îðäåðà <<",(GetLastError()),">>  ");
        }
      if(Ask<MA-stoplevel-10*Point)
        {
         if(OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),100,0,0,NULL,Magic,0,clrNONE)==-1)
            Print("Îøèáêà îòêðûòèÿ îðäåðà <<",(GetLastError()),">>  ");
        }
     }
   return;
  }
//--------------------------------------------------------------------

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---