Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2122

 
Valeriy Yastremskiy #:

Ну я тоже ставлю -1. Запоминать легче. Ноль занят. Вообще это вопрос кодировки больше. Например в одном советнике или типе советников -1, в других -2, а магики нужны одинаковыми. И число проще чем НеЧисло, тип одинаковый.

спасибо!

 
Tretyakov Rostyslav #:

Можно и -1000000 дело вкуса

Нет не нормально, обычно или очень большая история или ошибка в цикле

ясно, буду разбираться

 

подскажите пожалуйста как приделать еще один лимитный ордер, но чтобы он не тралился, а оставался до истечения или до срабатывания по стоп/тейк?

весь день делаю различные варианты, но все равно тралится

//+------------------------------------------------------------------+
//|         Открытие лимитных ордеров                                |
//+------------------------------------------------------------------+
   double buylimit_open=0,selllimit_open=0;
   int sig_slimit=0,sig_blimit=0;
 //если нет откр орд. и отступ > мин. стопа то, откр бай/селл на интервале "step" 
   if(n==0&&blimit==0&&step>stops) {buylimit_open=NormalizeDouble(Bid-step,Digits);sig_blimit=1; }
   
   if(n==0&&slimit==0&&step>stops) {selllimit_open=NormalizeDouble(Ask+step,Digits);sig_slimit=1;}
 //если нет откр орд. и отступ <= мин. стопа то, откр бай/селл на интервале равном мин. стопу (но это не для работы по марж зонам!) типа скальпинг  
   if(n==0&&blimit==0&&step<=stops) {buylimit_open=NormalizeDouble(Bid-stops,Digits);sig_blimit=1; }
   
   if(n==0&&slimit==0&&step<=stops) {selllimit_open=NormalizeDouble(Ask+stops,Digits);sig_slimit=1;}
 
  
   if(Bid > iHigh(NULL,1440,1)&&Buy==true&&sig_blimit==1) 
   {int open=OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_open,Slip,0,0,NULL,Magic,0,Blue);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}} 
   
   if(Ask < iLow(NULL,1440,1)&&Sell==true&&sig_slimit==1) 
   {int open=OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_open,Slip,0,0,NULL,Magic,0,Red);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
//+------------------------------------------------------------------+
//|         Открытие лимитных доп.ордеров которые не тралим          |
//+------------------------------------------------------------------+/////////////////////////////////////////////////////////////////
// OP_TYPE==0 - последний закрытый был Бай   
  if(OP_TYPE==0 && last_profit<0 && Buy==true && sig_blimit==1)
  
  {int open=OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_open,Slip,0,0,NULL,Magic,0,Blue);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}

// OP_TYPE==1 - последний закрытый был Селл
  if(OP_TYPE==1 && last_profit<0 && Sell==true && sig_slimit==1)
   
  {int open=OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_open,Slip,0,0,NULL,Magic,0,Red);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
  

пробовал другой магик, другие стоп/тейк, время жизни менял, либо вообще не открывается, либо остановить открытие не удается и открывается новый ордер на каждом тике. пробовал вообще удалить часть с тралом лимиток, тогда  открывается новый ордер на каждом тике и не выставляется стоп/тейк

в общем сам уже не могу сообразить.

Файлы:
 
законопослушный гражданин #:

подскажите пожалуйста как приделать еще один лимитный ордер, но чтобы он не тралился, а оставался до истечения или до срабатывания по стоп/тейк?

А при каких условиях надо их надо устанавливать?

 
Tretyakov Rostyslav #:

А при каких условиях надо их надо устанавливать?

//+------------------------------------------------------------------+
//|         Открытие лимитных доп.ордеров которые не тралим          |
//+------------------------------------------------------------------+/////////////////////////////////////////////////////////////////
// OP_TYPE==0 - последний закрытый был Бай   
  if(OP_TYPE==0 && last_profit<0 && Buy==true && sig_blimit==1)
  
  {int open=OrderSend(Symbol(),OP_BUYLIMIT,Lots,buylimit_open,Slip,0,0,NULL,Magic,0,Blue);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}

// OP_TYPE==1 - последний закрытый был Селл
  if(OP_TYPE==1 && last_profit<0 && Sell==true && sig_slimit==1)
   
  {int open=OrderSend(Symbol(),OP_SELLLIMIT,Lots,selllimit_open,Slip,0,0,NULL,Magic,0,Red);if(open>0) {return;} if(open<0) {Print("OrderSend failed #",GetLastError());return;}}
  

я ориентировался так:

если выставленный на расстоянии "step",ордер(1)   - закрылся по стоплоссу last_profit<0, то лимитный  доп. ордер(2) выставить на расстоянии "step2" от цены закрытия лимитника(1), соответственно если закрывшийся по стопу ордер(1) был "Селл", то лимитник (2)  должен быть "СеллЛимит", ну и для ордера бай, аналогично

только второй лимитник не должен тралиться по цене уже. Это ловля более глубокого отката цены, в расчете на дальнейшее продолжение тренда.

т.е. стоп  и тейк для доп. ордера (2) -будет другим - больше, но до этого пока рано думать. 

 
законопослушный гражданин #:

я ориентировался так:

если выставленный на расстоянии "step",ордер(1)   - закрылся по стоплоссу last_profit<0, то лимитный  доп. ордер(2) выставить на расстоянии "step2" от цены закрытия лимитника(1), соответственно если закрывшийся по стопу ордер(1) был "Селл", то лимитник (2)  должен быть "СеллЛимит", ну и для ордера бай, аналогично

только второй лимитник не должен тралиться по цене уже. Это ловля более глубокого отката цены, в расчете на дальнейшее продолжение тренда.

т.е. стоп  и тейк для доп. ордера (2) -будет другим - больше, но до этого пока рано думать. 

Тебе нужно добавить проверку наличия лимитных ордеров, т.е.

если нет установленных лимитных и последний ордер убыточный - ставим лимитку,

если уже есть лимитка или последний прибыльный - проходим мимо.

А чтобы не было трала - доп.лимитки без магика
 
Tretyakov Rostyslav #:

Тебе нужно добавить проверку наличия лимитных ордеров, т.е.

если нет установленных лимитных и последний ордер убыточный - ставим лимитку,

если уже есть лимитка или последний прибыльный - проходим мимо.

А чтобы не было трала - доп.лимитки без магика

спасибо.

в том коде что я приложил выше, доп лимитки открываются (но тралятся), если удаляю магик - не открываются, (ошибка 3 по журналу)

если вместо магика ставлю ноль, то открывается бесчисленное число ордеров (ошибка 148 по журналу )

 но условия проверку наличия лимитных ордеров, пока не добавлял.

 
законопослушный гражданин #:

спасибо.

в том коде что я приложил выше, доп лимитки открываются (но тралятся), если удаляю магик - не открываются, (ошибка 3 по журналу)

если вместо магика ставлю ноль, то открывается бесчисленное число ордеров (ошибка 148 по журналу )

 но условия проверку наличия лимитных ордеров, пока не добавлял.

Ошибка 3 - это не правильные параметры и магик здесь не причем

Ошибка 148 из-за того что нет проверки наличия лимиток, когда проверка увидит что лимитка есть, то новый открывать не будет

 

И снова, здравствуйте!

Есть у меня индикатор.

В регулировках у него нет ни угла отображения, ни расстояния по осям Х – Y.

Угол отображения – верхний левый угол, меня вполне устраивает, а вот опустить его на 6 см. вниз от верхнего края графика – было бы здорово!

Пытался сам что то сделать, но уж больно мудрено его код как то написан. Так и не смог.

Помогите, пожалуйста, опустить отображение индикатора на 6 см. вниз от верхнего края графика.

Спасибо!

Файлы:
 
Kedrov #:

И снова, здравствуйте!

Есть у меня индикатор.

В регулировках у него нет ни угла отображения, ни расстояния по осям Х – Y.

Угол отображения – верхний левый угол, меня вполне устраивает, а вот опустить его на 6 см. вниз от верхнего края графика – было бы здорово!

Пытался сам что то сделать, но уж больно мудрено его код как то написан. Так и не смог.

Помогите, пожалуйста, опустить отображение индикатора на 6 см. вниз от верхнего края графика.

Спасибо!

Найди эту строку и меняй число

   ObjectSet(as_0, OBJPROP_YDISTANCE, a_y_12+100);
Причина обращения: