[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 216

 
stalkertula:

Спасибо за ответ, но алгоритм на русском у меня написан, а вот в mql, я не силен, хотя бы наводку по функциям, которые зафиксировали количество (количество пропишу в настройках) открытых ордеров sell/buy, и далее сигнал на запрет выставления отложек sellstop/buystop.

Почему же в выложенном вами коде никак не отражен этот, уже написанный вами алгоритм?
Думаете враз так вот взять и, глянув на ваш неоформленный никак код, сразу же и указать вам на ошибку?

Его ещё "прочесть" нужно...

Приведу отрывок кода, где всё, набросанное на бумажке, отображено и в коде:

//================================================================================================================   
//------------------------------- Определение тоннеля и его верхней и нижней границ ------------------------------ 
//================================================================================================================   
   if (NormalizeDouble(MathAbs(MA169-MA144),dg)/pt<=sp)           // Если разница МАшек меньше спреда, ... 
      Tonnel=false;                                               // Тоннель меньше спреда - считаем, что он узкий
   if (NormalizeDouble(MathAbs(MA169-MA144),dg)/pt>sp)            // Если разница МАшек больше спреда, ... 
      Tonnel=true;                                                // Тоннель больше спреда - считаем, что он норм.
//-------------------------------------------------------------      
   if (CmpD(MA169,MA144)) {                                       // Если 169-я МАшка выше 144-й, ...
      UP_Limit=MA169+sp*pt;                                       // ... то 169 - верх тоннеля, ...
      DN_Limit=MA144-sp*pt;                                       // ... а 144 - низ тоннеля
      }
   if (CmpD(MA144,MA169)) {                                       // Если 144-я МАшка выше 169-й, ...
      UP_Limit=MA144+sp*pt;                                       // ... 144 - верх тоннеля, ...
      DN_Limit=MA169-sp*pt;                                       // ... 169 - низ тоннеля
      }
   if (NormalizeDouble(MA169-MA144,dg)==0) {                      // Если 169-я МАшка равна 144-й, ...
      UP_Limit=MA169+sp*pt;                                       // ... то 169 - верх тоннеля, ...
      DN_Limit=MA144-sp*pt;                                       // ... а 144 - низ тоннеля
      }
//-------------------------------------------------------------      
      string NameArUP=Prefix+"UP"+TimeToStr(Time[0]);             // Нарисуем тоннель
      string NameArDN=Prefix+"DN"+TimeToStr(Time[0]);
      SetArrow(4, DeepSkyBlue, NameArUP, Time[0], UP_Limit, 0);   // Его верх
      SetArrow(4, Gold,        NameArDN, Time[0], DN_Limit, 0);   // Его низ
//================================================================================================================   
//------------------------------------- Проверка на вхождение цены в тоннель ------------------------------------- 
//================================================================================================================ 
   if (CmpD(UP_Limit, pa) && CmpD(pb, DN_Limit)) {
      if (Above) {                                                // Если цена была выше тоннеля
         LastAbove=true;                                          // Ставим  флаг "прошлого" положения цены "выше"
         LastBottom=false;                                        // Снимаем флаг "прошлого" положения цены "ниже"
         }
      if (Bottom) {                                               // Если цена была ниже тоннеля
         LastBottom=true;                                         // Ставим  флаг "прошлого" положения цены "ниже"
         LastAbove=false;                                         // Снимаем флаг "прошлого" положения цены "выше"
         }
      Inside=true;                                                // Ставим флаг расположения цены внутри тоннеля
      Above=false;                                                // Сброс флага "над"
      Bottom=false;                                               // Сброс флага "под"
      ReadyTradeB=true;                                           // Флаг готовности к торговле Бай
      ReadyTradeS=true;                                           // Флаг готовности к торговле Селл
      }
//================================================================================================================   
//------------------------------- Проверка на расположение цены относительно тоннеля ----------------------------- 
//================================================================================================================ 
   if (CmpD(pa,UP_Limit)) {                                       // Если цена выше тоннеля
      if (Inside) {
         Inside=false;                                            // Сброс флага нахождения цены внутри тоннеля
         LastInside=true;
         }
      Above=true;                                                 // Цена находится над тоннелем
      Bottom=false;
      }
   if (CmpD(DN_Limit,pb)) {                                       // Если цена ниже тоннеля
      if (Inside) {
         Inside=false;                                            // Сброс флага нахождения цены внутри тоннеля
         LastInside=true;
         }
      Bottom=true;                                                // Цена находится под тоннелем
      Above=false;
      }
//================================================================================================================   
//------------------------------------ Проверка на пересечение границ тоннеля ------------------------------------ 
//================================================================================================================ 
// .... пока не отлажу предыдущее, за это не стоит и браться...
//----------------------------------------------------------------

И вот пока простейшее не будет отлажено, дальше двигаться и не стоит...

А что у вас? Всё в кучку сбросили, не комментировали ни строчки. А теперь отдохните недельку и вернитесь к вашему коду. Уверен - часа два вспоминать будете. 100%

 
coronel:
Постоянный лот 0.1.


В таком случае, за неделю это, на мой взгляд, хороший результат. Не помню точно, по-моему, около 800 пунктов получается? Только вот со стабильностью, мне кажется, не всё в порядке: не совсем ровный график... В любом случае, спасибо за ответ. По крайней мере, хоть какая-то цифра нарисовалась. Мне до этого достаточно далеко: 3000-4000 пунктов в год - это предел. Но график баланса у меня поровнее...

Подумал тут: постоянный лот 0.1 - а с каким плечом? По графику баланса не совсем понятно сколько заработано пунктов?

 

Как получить значение выбранного уровня фибы из такого индикатора ?

//+------------------------------------------------------------------+

//| Parabolic_ZZ.mq4 |

//| Copyright © 2009, Vic2008 |

//| |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2009, Vic2008"

#property link ""

#include <stdlib.mqh>

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Magenta

//---- input parameters

extern double SAR_step=0.02; //Параметры параболика.

extern double SAR_maximum=0.2;

extern int BarsCount = 500; //Дистанция в барах для отрисовки индикатора.

extern bool Fibo1_off = False; //Отключение уровней Fibo.

extern bool Fibo2_off = False;

extern bool Fibo_Absolut_Value = False; //Включение абслютных значений цены на Fibo уровнях.

extern color Label_Color = Gray;

extern color Fibo_Color = Blue;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(0,DRAW_SECTION);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(1,DRAW_SECTION,0,2,Magenta);

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

ObjectsDeleteAll(0,OBJ_ARROW);

ObjectDelete("FiboZZLast");

ObjectDelete("FiboZZPrev");

//----

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start()

{

//int counted_bars=IndicatorCounted();

string txt;

int w,PosLow,PosHigh;

double LPic=1000000,HPic=0,price;

datetime TimeTmp;

//----

ExtMapBuffer1[0]=Close[0];

ExtMapBuffer2[0]=EMPTY_VALUE;

for( w=0;w<BarsCount;w++){

if( w!=0 ){ ExtMapBuffer1[w]=EMPTY_VALUE; ExtMapBuffer2[w]=EMPTY_VALUE; }

if( iSAR(NULL,0,SAR_step,SAR_maximum,w) > Close[w] && LPic>=Low[w] ){ LPic=Low[w]; PosLow=w; }

if( iSAR(NULL,0,SAR_step,SAR_maximum,w) < Close[w] && HPic<=High[w] ){ HPic=High[w]; PosHigh=w; }

// H -> L

if( iSAR(NULL,0,SAR_step,SAR_maximum,(w+1)) > Close[w+1] && iSAR(NULL,0,SAR_step,SAR_maximum,w) < Close[w] && HPic!=0)

{

ExtMapBuffer1[PosHigh]=HPic;

ExtMapBuffer2[PosHigh]=HPic;

HPic=0;

}

// L -> H

if( iSAR(NULL,0,SAR_step,SAR_maximum,w) < Close[w] && iSAR(NULL,0,SAR_step,SAR_maximum,w+1) > Close[w+1] && LPic!=1000000 )

{

ExtMapBuffer1[PosLow]=LPic;

ExtMapBuffer2[PosLow]=LPic;

LPic=1000000;

}

}

if( Fibo1_off ) ObjectDelete("FiboZZLast");

if( Fibo2_off ) ObjectDelete("FiboZZPrev");

//Рисуем ценовые метки и уровни FIBO

int wave_cnt=0;

for( w=0;w<BarsCount;w++){

if( ExtMapBuffer2[w]!=EMPTY_VALUE ){

if( wave_cnt<=3 ){

ObjectDelete("PZZ_"+DoubleToStr( wave_cnt, 0));

ObjectCreate("PZZ_"+DoubleToStr( wave_cnt, 0), OBJ_ARROW, 0, Time[w], ExtMapBuffer2[w], Time[w], 0);

ObjectSet("PZZ_"+DoubleToStr( wave_cnt, 0), OBJPROP_ARROWCODE, SYMBOL_LEFTPRICE );

ObjectSet("PZZ_"+DoubleToStr( wave_cnt, 0), SYMBOL_LEFTPRICE, ExtMapBuffer2[w]);

ObjectSet("PZZ_"+DoubleToStr( wave_cnt, 0), OBJPROP_COLOR, Label_Color );

if(wave_cnt==1 && Fibo1_off==False ){

ObjectDelete("FiboZZLast");

ObjectCreate("FiboZZLast", OBJ_FIBO, 0, TimeTmp, ExtMapBuffer2[w], TimeTmp, price);

ObjectSet("FiboZZLast", OBJPROP_LEVELCOLOR, Fibo_Color);

ObjectSet("FiboZZLast", OBJPROP_COLOR, Fibo_Color);

ObjectSet("FiboZZLast", OBJPROP_RAY, False );// Для включения лучей False заменить на True

ObjectSet("FiboZZLast", OBJPROP_FIBOLEVELS, 14);

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZLast",0,"23.6");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZLast",1,"38.2");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZLast",2,"50.0");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZLast",3,"61.8");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZLast",4,"100.0");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZLast",5,"161.8");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZLast",6,"261.8");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZLast",7,"423.6");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZLast",8,"8.8");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZLast",9,"14.5");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZLast",10,"76.4");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZLast",11,"85.5");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZLast",12,"92.1");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZLast",13,"0.0");

if( Fibo_Absolut_Value ){

ObjectSet("FiboZZLast", OBJPROP_FIBOLEVELS, 14);

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZLast",0,"23.6 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZLast",1,"38.2 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZLast",2,"50.0 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZLast",3,"61.8 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZLast",4,"100.0 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZLast",5,"161.8 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZLast",6,"261.8 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZLast",7,"423.6 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZLast",8,"8.8 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZLast",9,"14.5 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZLast",10,"76.4 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZLast",11,"85.5 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZLast",12,"92.1 %$");

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZLast",13,"0.0");

}

}

if( wave_cnt==2 && Fibo2_off==False ){

ObjectDelete("FiboZZPrev");

ObjectCreate("FiboZZPrev", OBJ_FIBO, 0, TimeTmp, ExtMapBuffer2[w], TimeTmp, price);

ObjectSet("FiboZZPrev", OBJPROP_LEVELCOLOR, Fibo_Color);

ObjectSet("FiboZZPrev", OBJPROP_COLOR, Fibo_Color);

ObjectSet("FiboZZPrev", OBJPROP_RAY, False );// Для включения лучей False заменить на True

ObjectSet("FiboZZPrev", OBJPROP_FIBOLEVELS, 14);

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZPrev",0,"23.6");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZPrev",1,"38.2");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZPrev",2,"50.0");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZPrev",3,"61.8");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZPrev",4,"100.0");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZPrev",5,"161.8");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZPrev",6,"261.8");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZPrev",7,"423.6");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZPrev",8,"8.8");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZPrev",9,"14.5");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZPrev",10,"76.4");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZPrev",11,"85.5");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZPrev",12,"92.1");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZPrev",13,"0.0");

if( Fibo_Absolut_Value ){

ObjectSet("FiboZZPrev", OBJPROP_FIBOLEVELS, 14);

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZPrev",0,"23.6 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZPrev",1,"38.2 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZPrev",2,"50.0 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZPrev",3,"61.8 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZPrev",4,"100.0 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZPrev",5,"161.8 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZPrev",6,"261.8 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZPrev",7,"423.6 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZPrev",8,"8.8 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZPrev",9,"14.5 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZPrev",10,"76.4 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZPrev",11,"85.5 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZPrev",12,"92.1 %$");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZPrev",13,"0.0");

}

}

}

wave_cnt++;

price=ExtMapBuffer2[w];

TimeTmp=Time[w];

}

}



//----

return(0);

}

//+------------------------------------------------------------------+

 
lagriv:

Как получить значение выбранного уровня фибы из такого индикатора ?

шо за шайзе?

вы бы сюда еще "войну и мир" запостили

 

поможите плиз... в советнике есть функция проверки открытых ордеров ..одновременно может быть открыт один ордер...но при вписывание размера стопа на прямую в момент открытия ордера выдает ошибку 130...например было так

if(вниз>0)

{

ticket=OrderSend(Symbol(),OP_SELL,dLot,Bid,3,0,Bid-TakeProfit*Point,0,16384,0,Red);

вписываю стоп размером 100

ticket=OrderSend(Symbol(),OP_SELL,dLot,Bid,3,100,Bid-TakeProfit*Point,0,16384,0,Red); ...выдает ошибку 130 в тестере

дц альпари...может нужно модифицировать после открытия ордер и выставить стоп?..подскажите как примерно можно это сделать или укажите на советник где это сделано...пожалуйсто

 
ilmur:

поможите плиз...

100*Point
 
ilmur:

поможите плиз... в советнике есть функция проверки открытых ордеров ..одновременно может быть открыт один ордер...но при вписывание размера стопа на прямую в момент открытия

дц альпари...может нужно модифицировать после открытия ордер и выставить стоп?..подскажите как примерно можно это сделать или укажите на советник где это сделано...пожалуйсто


Стоп должен иметь тип double. Нужно указывать ту цену, на которую должен быть поставлен стоп.

extern double   Lot=1;// Лот ордера при ручном управлении.
extern int      StopLoss=100;//СтопЛосс ордера при ручном управлении
extern int      TakeProfit=100;//ТейкПрофит ордера при ручном управлении
extern int      MAGIC=467003; // У ордеров открытых вручную MAGIC=0
extern int      Proskalz=10; //Проскальзывание
..........
double PR,SL,TP;
..............
PR=PR=NormalizeDouble(Ask,Digits);
if(StopLoss==0){
  SL=0;
}
if(StopLoss>0){
  SL=PR-StopLoss*Point;
}
if(TakeProfit==0){
 TP=0;
}
if(TakeProfit>0){
  TP=PR+TakeProfit*Point;
}
SL=NormalizeDouble(SL,Digits);
TP=NormalizeDouble(TP,Digits);
int TicketBuy=OrderSend(Symbol(),OP_BUYSTOP,Lot,PR,Proskalz,SL,TP,NULL,MAGIC,0,CLR_NONE);
if(TicketBuy==(-1)){
  Print("Ошибка № "GetLastError()," при установке Бай-ордера");
}
 
alsu:
100*Point
спасибо большое всем кто ответил
 
artmedia70:

Почему же в выложенном вами коде никак не отражен этот, уже написанный вами алгоритм?
Думаете враз так вот взять и, глянув на ваш неоформленный никак код, сразу же и указать вам на ошибку?

Его ещё "прочесть" нужно...

Приведу отрывок кода, где всё, набросанное на бумажке, отображено и в коде:

И вот пока простейшее не будет отлажено, дальше двигаться и не стоит...

А что у вас? Всё в кучку сбросили, не комментировали ни строчки. А теперь отдохните недельку и вернитесь к вашему коду. Уверен - часа два вспоминать будете. 100%


Вы уж извините, код не мой, учусь разбираюсь сам, это был кусок, касающийся отложенных ордеров, остальное бла-бла, как обычно настройки, лоты, фракталы, трал. Советник не работает, т.е. сливает из-за накопленных ордеров, вот и хочу прикрутить ограничение, посмотрю что выйдет. А по поводу алгоритма, понимать понимаю, а на языке mql сказать не могу. Спасибо, буду разбираться.
 
stalkertula:
Вы уж извините, код не мой, учусь разбираюсь сам, это был кусок, касающийся отложенных ордеров, остальное бла-бла, как обычно настройки, лоты, фракталы, трал. Советник не работает, т.е. сливает из-за накопленных ордеров, вот и хочу прикрутить ограничение, посмотрю что выйдет. А по поводу алгоритма, понимать понимаю, а на языке mql сказать не могу. Спасибо, буду разбираться.

Странно. За что извиняться-то??? Так... показал как желательно примерно оформлять собственные коды, дабы потом не разбираться долго.

А раз у вас код чужой... Хотя... Тоже можно комментировать те строки, значения которых стало вам ясно в процессе разбора. Далее - понятней будет, а там уж и свой на основе разобранного лучше написать. Так сказать для полного осмысления, понимания и преобразования под собственные нужды.

Вот это как раз и приведёт вас к логическому осмыслению. Вам же и на пользу... :)
Удачи!