 
					        										 
 <code>//+------------------------------------------------------------------+
//|                                                            3.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
input double   Lots=0.01;     
input int      Tp =1000;    
input int      Magik=1001012;  
extern int MA_Fast_Period = 50;
extern int MA_Fast_Method = 1;
extern int MA_Fast_Price = 5;
extern int MA_Slow_Period = 150;
extern int MA_Slow_Method = 1;
extern int MA_Slow_Price = 5;
extern int Sl = 500;
extern int Slippage = 3;
extern int Step  = 600;
double price; 
double pr1=0;
double pr2=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
if ( Digits == 5)
{
Slippage *= 10;
}
return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
 
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
  
 double MA_f_1 = iMA( Symbol(),1440, MA_Fast_Period, 0, MA_Fast_Method, MA_Fast_Price, 1);
 double MA_s_2 = iMA( Symbol(),1440, MA_Slow_Period, 0, MA_Slow_Method, MA_Slow_Price, 1);
 static double Upf,Lowf;
   double Tupf=0,Tlowf=0;
   int i,k;
   for(i=1; i<5000; i++)
     {
      Tupf=iFractals(Symbol(),0,MODE_UPPER,i);
      if(Tupf>0)
         break;
     }
   for(k=1; k<5000; k++)
     {
      Tlowf=iFractals(Symbol(),0,MODE_LOWER,k);
      if(Tlowf>0)
         break;
     }
     
   if(countBuy()== 0 && Ask<Tlowf && Tupf!=Upf && MA_f_1 > MA_s_2)
   {
    if (OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-Sl*10*Point,Bid+Tp*10*Point,"",Magik,0,clrDarkBlue) < 1)
    Print ("Не удалось открыть покупку");
    }
    if(countSell()== 0 && Bid>Tupf && Tlowf!=Lowf && MA_f_1 < MA_s_2)
  {
      if (OrderSend(Symbol(),OP_SELL,Lots,Ask,Slippage,Bid+Sl*10*Point,Ask-Tp*10*Point,"",Magik,0,clrRed)< 1)
      Print("Can   not open sell");
    }
    if(countBuy()>=1)
 {   price = FindLastBuyPrice();
   if ((price-Ask)>= Step*Point&& Ask>iHigh(NULL,1440,1))
  
{
 if (OrderSend(Symbol(),OP_BUY,findorderBuy2lot(),Ask,Slippage,Ask-Sl*10*Point,0,"",Magik,0,clrDarkBlue) < 1)
    Print ("Не удалось открыть дополнительный ордер на покупку");
    ModifiOrders1();
}
}
if(countSell()>=1 )
{ 
  price = FindLastSellPrice();
     if((Bid-price)>= Step*Point&& Bid<iLow(NULL,1440,1))
{
 if (OrderSend(Symbol(),OP_SELL,findorderSell2ot(),Ask,Slippage,Bid+Sl*10*Point,0,"",Magik,0,clrRed) < 1)
    Print ("Не удалось открыть дополнительный ордер на Продажу");
 ModifiOrders2();
}
}
  }
  //+-----------------------------------------------------------------+
  double FindLastBuyPrice()
  {
  int oldticket, ticket = 0;
  double oldopenprice = 0;
  
  for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_BUY)
 {
 
 oldticket = OrderTicket();
 if (oldticket > ticket)
 {
 ticket = oldticket;
 oldopenprice = OrderOpenPrice();
         }
      }
    }
  }
  return(oldopenprice);
 }
   //+-------------------------------------------------------------
   double FindLastSellPrice()
  {
  int oldticket, ticket = 0;
  double oldopenprice = 0;
  
  for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_SELL)
 {
 
 oldticket = OrderTicket();
 if (oldticket > ticket)
 {
 ticket = oldticket;
 oldopenprice = OrderOpenPrice();
         }
      }
    }
  }
  return(oldopenprice);
 }
//+-Подсчет ордеров-----------------------------------------------------------------+
int countBuy()
  {
  int count = 0;
  for (int trade = OrdersTotal()-1; trade >=0; trade--)
  {
   if (OrderSelect(trade,SELECT_BY_POS,MODE_TRADES) == true)
  { 
  if (OrderSymbol() == Symbol() && OrderMagicNumber()== Magik && OrderType() == OP_BUY)           
   count++;
  }
}
return(count);
  }
  //+------------------------------------------------------------------+
   int countSell()
  {
  int count = 0;
  for (int trade = OrdersTotal()-1; trade >=0; trade--)
  {
   if (OrderSelect(trade,SELECT_BY_POS,MODE_TRADES) == true)
  { 
  if (OrderSymbol() == Symbol() && OrderMagicNumber()== Magik && OrderType() == OP_SELL)           
   count++;
  }
}
return(count);
  }
//+----------------убыток по ордеру-------------------------------------------------+  
double OP()
{
double pr=0;
 for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik) 
  {
  if(OrderType() ==OP_BUY)
  {
  pr+=OrderProfit();
  }
  }}}
  return(pr);
  }
  
  double OP1()
{
double pr=0;
 for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik ) 
  {
  if(OrderType() ==OP_SELL)
  {
  pr+=OrderProfit();
  }
  }}}
  return(pr);
  }
//+----------------лот для 2 ордера покупки-------------------------------------------------+  
double findorderBuy2lot()
{
double LoT1=0;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_BUY)
  {
  LoT1=OP()/-100/2;
  }}}
  return (LoT1);
  }
  //+----------------лот для 2 ордера покупки-------------------------------------------------+  
  double findorderSell2ot()
{
double LoT2=0;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_SELL)
  {
  LoT2=OP1()/-100/2;
  }}}
  return (LoT2);
  }
 //+---------------Модификацияbuy-------------------------------------------------+    
void ModifiOrders1()
{double ModPrice;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_BUY)
  {
  ModPrice=FindLastBuyPrice()+20*10*Point;
  for(int i=OrdersTotal()-1; i>=0;i--)
  {
  if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
  {
  if(OrderSymbol()==Symbol()&& OrderMagicNumber() == Magik&&OrderType() == OP_BUY)
  {
  if(OrderModify(OrderTicket(),OrderOpenPrice(),0,ModPrice,NULL,clrDarkBlue))
  Print("Ордера модифицированны");
  else Print(ModPrice);
  
  
  }
  }}}}
  }}
//+---------------МодификацияSell-------------------------------------------------+  
void ModifiOrders2()
{
double ModPrice;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_SELL)
  {
  ModPrice=FindLastSellPrice()-20*10*Point;
  for(int i=OrdersTotal()-1; i>=0;i--)
  {
  if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
  {
  if(OrderSymbol()==Symbol()&& OrderMagicNumber() == Magik&&OrderType() == OP_SELL)
  {
  if(OrderModify(OrderTicket(),OrderOpenPrice(),0,ModPrice,NULL,clrDarkBlue))
  Print("Ордера модифицированны");
  else Print(ModPrice);
  }}}}}}}</code>
					        										 , Код, который вы приктрепили, если вставить в советник, то он начнет открывать сделки по принципу, или же нужно коректировать исходный код советника?
 , Код, который вы приктрепили, если вставить в советник, то он начнет открывать сделки по принципу, или же нужно коректировать исходный код советника?
					        										 
 
					        										
ilyask