Source_Code

Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategy
Indicators Used
Moving average indicator
Miscellaneous
It sends emails
0 Views
0 Downloads
0 Favorites
Source_Code
//+------------------------------------------------------------------+                                                  
//|                                               valick2004@mail.ru |
//+------------------------------------------------------------------+


//---- input parameters

extern int     Magic=94754;
extern int     Magic1=95454;
extern int     Magic2=45764;
extern int     Orders =1;
extern int     StopLoss=2816;
extern int     TakeProfit=5676;
extern int     StopLoss2=5735;
extern int     TakeProfit2=3549;
extern string   ____= "Ïàðàìåòðû Òðåéëèíã ñòîïà";
extern bool     UseTrailing = true;//âûêëþ÷àòåëü òðåéëèíãà
extern int     lMinProfit         = 1811;//ïîðîã òðàëà äëèííûõ ïîç
extern int     lTrailingStop      = 3037;//ðàçìåð òðàëà äëèííûõ ïîç
extern int     lTrailingStep      = 5;// øàã òðàëà
extern int     sMinProfit              = 4279;//ïîðîã òðàëà êîðîòêèõ ïîç
extern int     sTrailingStop           = 2520;//ðàçìåð òðàëà êîðîòêèõ ïîç
extern int     sTrailingStep           = 5; //øàã òðàëà

extern string     ______= "Ïàðàìåòðû áëîêà MoneyManagement";
extern double    Lots = 0.01;
extern double    Lots2 = 0.01;
extern double    T1 = 0.0016;
extern double    T2 = 0.0014;
extern double    T3 = 650;
extern double    T33 = 140;
extern double    X = 260;
extern double    X1 = 540;
extern double    T333 = 0.0051;
extern double    T3333 = 0.0082;
extern double    X2 = 131;
extern double    X22 = 650;
extern double    T4 = 0.0002;
extern double    T5 = 0.0004;
extern bool      MoneyManagement=true;
extern int       MarginPercent=3;
extern double Limit_Lot1 = 0.01;
extern double Limit_Lot2 = 0.01;
extern int Limit_Dist1 = 100;
extern int Limit_Dist2 = 100;



//----------------------------------

int ticket;
int ticket1;
 double lots;
static int prevtime = 0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
 
if (Time[0] == prevtime) return(0); // Áàð ïðåæíèé, à ñëåäîâàòåëüíî âûõîäèì
   prevtime = Time[0]; // Ñâåæèé áàð, çàïîìèíàåì âðåìÿ
//----
   if (UseTrailing) TrailPositions(); //òðåéëèíã ñòîï
   // Îáúÿâëÿåì ïåðåìåííûå
   int total, cnt;
   double MA1,MA2;
   
   // double lots;
   // Âû÷èñëÿåì íà÷àëüíûå ïàðàìåòðû èíäèêàòîðîâ äëÿ ïîèñêà óñëîâèé âõîäà
   
   MA1 = iMA(NULL,0,T3,0,MODE_SMMA,PRICE_MEDIAN,0);  // çåë¸íàÿ
   MA2 = iMA(NULL,0,T33,0,MODE_SMMA,PRICE_MEDIAN,0);
   
   total=OrdersTotal();
   //Comment( LotsCounting() );
//=======================================================================
 
//============Îòêðûòèå ïîçèöèé  =======================================  
   if ( NumberOfPositions(NULL , -1, Magic )<Orders ) 
   { //åñëè  îòêðûòûõ ïîçèöèé ìåíåå Orders
      // Ïðîâåðêà óñëîâèé äëÿ ñîâåðøåíèÿ ñäåëêè áàé
      if (! NumberOfBarOpenLastPos(NULL, 0,OP_BUY, Magic)  ==0) 
     
      { //çàïðåò íåñê. ïîç íà îäíîì áàðå
         if((  MA1<MA2)&&(iATR(NULL,0,X,0)<T1)&&((MA2-MA1)<T4)&&(iStdDev(NULL,0,X1,0,MODE_EMA,PRICE_CLOSE,0)<T333))//ïîêóïàåì
         {  
            lots=LotsCounting();    
            
            ticket=OrderSend(Symbol(),OP_BUY,Limit_Lot1,Ask,3,Ask-Point*StopLoss2,Ask+Point*TakeProfit2,"Main_Order",Magic,0,Green);//âåäóùàÿ ñäåëêà
            ticket1=OrderSend(Symbol(), OP_BUYLIMIT, Limit_Lot1*2, Ask - Limit_Dist1*4*Point, 5, 0, 0, "Limit", Magic1, 0, Aqua );
               ticket1=OrderSend(Symbol(), OP_BUYLIMIT, Limit_Lot1*4, Ask - Limit_Dist1*8*Point, 5, 0, 0, "Limit", Magic1, 0, Aqua );
             ticket1=OrderSend(Symbol(), OP_BUYLIMIT, Limit_Lot1*8, Ask - Limit_Dist1*9*Point, 5, 0, 0, "Limit", Magic1, 0, Aqua );
               SendMail("from your expert", "Ñäåëêa îòêðûòà");
                
            if(ticket < 0) 
            {
               Print("Îøèáêà îòêðûòèÿ îðäåðà BUY #", GetLastError()); 
               Sleep(10000); 
               prevtime = Time[1]; 
               return (0); 
            } 
         }
      }
      //=================================================================
      // Ïðîâåðêà óñëîâèé äëÿ ñîâåðøåíèÿ ñäåëêè ñåëë 
      if (! NumberOfBarOpenLastPos(NULL, 0,OP_SELL, Magic)  ==0) 
     
      {//çàïðåò íåñê. ïîç íà îäíîì áàðå 
         if((MA1>MA2)&&(iATR(NULL,0,X2,0)<T2)&&((MA1-MA2)<T5)&&(iStdDev(NULL,0,X22,0,MODE_EMA,PRICE_CLOSE,0)<T3333))//ïðîäàåì
         {
            ticket=OrderSend(Symbol(),OP_SELL,Limit_Lot2,Bid,3,Bid+Point*StopLoss,Bid-Point*TakeProfit,"Main_Order",Magic,0,Red);//   âåäóùàÿ ñäåëêà
           
              SendMail("from your expert", "Ñäåëêà îòêðûòà");
           
           
           
            if(ticket < 0)
            {
               Print("Îøèáêà îòêðûòèÿ îðäåðà SELL #", GetLastError()); 
               Sleep(10000);  
               prevtime = Time[1]; 
               return (0); 
            } 
         }
      }
 }    
 //åñëè  îòêðûòûõ ïîçèöèé ìåíåå Orders 
//============ êîíåö áëîêà îòêðûòèÿ ïîçèöèé ===========================
 
//================Çàêðûòèå ïîçèöèé=====================================
//----------------------------------------------------------------------
   if( Orders_Total_by_comm( "Main_Order", Magic, Symbol()) == 0 )
   {
      Close_All_Order(Magic1, Symbol());
      
   }
   for ( int v = OrdersTotal() - 1; v >= 0; v -- )                  {       
      if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES))                {           
        if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)     { 
        
//çäåñü ìû äîëæíû çàêðûòü SELLLIMIT BUYLIMIT (è âîîáùå âñå ÷òî îñòàëîñü) êîãäà çàêðîåòñÿ ñäåëêà ñ êîìåíòàðèåì "AllTime Sell" "AllTime BUY"
//-------------------------------------------------------                       
    }  // Symbol()  
  } // select
} //total 
//================== Êîíåö áëîêà çàêðûòèÿ  =============================
   
  return(0);
  }
//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ Êîíåö ôóíêöèè int start() ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ

//---- Çàêðûòèå îðäåðà ïî òèïó è êîììåíòàðèþ ----//
void Close_All_Order( int mn, string sym)
{
   for(int i= OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if( sym==OrderSymbol() && OrderMagicNumber() == mn )
         if(OrderType()<=1)OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3);
         else OrderDelete(OrderTicket());
   }
}

int Orders_Total_by_comm(string comm, int mn, string sym)
{
   int num_orders=0;
   for(int i= OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if( OrderMagicNumber() == mn && sym==OrderSymbol())
      {
         if( StringFind( OrderComment(), comm) >= 0 )
            num_orders++;
      }
   }
   return(num_orders);
}

double LotsCounting()
{
   return(Lots);
}

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void TrailPositions() {// ôóíêöèÿ òðåéëèíã ñòîï
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)                                      {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()==Magic)           {
      if (Bid-OrderOpenPrice() > lMinProfit*Point)                      {
        if (OrderStopLoss() < Bid-(lTrailingStop+lTrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid-lTrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        }}}
    if (OrderType() == OP_SELL && OrderMagicNumber()==Magic)                 {
      if (OrderOpenPrice()-Ask > sMinProfit*Point)                            {
        if (OrderStopLoss() > Ask+(sTrailingStop+sTrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+sTrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
   
   
                                                                                                
        }}}}  }
//------------------------------------------------------------------------------+

//ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ

//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 19.02.2008                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò êîëè÷åñòâî ïîçèöèé.                                 |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   (""   - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   (-1   - ëþáàÿ ïîçèöèÿ)                  |
//|    mn - MagicNumber                (-1   - ëþáîé ìàãèê)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }
        }
      }
    }
  }
  return(kp);
}
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 19.02.2008                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò íîìåð áàðà îòêðûòèÿ ïîñëåäíåé ïîçèöèè èëè -1.       |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   ("" èëè NULL - òåêóùèé ñèìâîë)          |
//|    tf - òàéìôðåéì                  (    0       - òåêóùèé òàéìôðåéì)       |
//|    op - îïåðàöèÿ                   (   -1       - ëþáàÿ ïîçèöèÿ)           |
//|    mn - MagicNumber                (   -1       - ëþáîé ìàãèê)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}

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 ---