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

 
ilnur17021992:

есть переменная

int Level = 0;

В процессе работы программы она постоянно меняется. Помогите написать условие: если Level НЕ изменилось, то ничего не делаем, если Level изменилось (не важно в большую или меньшую сторону) то делать определенное действие { оператор } 

введи другую переменную

int Level1 = 0;

int Level  = 0; 

if (Level !=Level1) 

{}; 

а потом Level1 =Level

 

 

 

а так я реально не понимаю зачем дергать массив на каждом тике если можно делать после любой торговой операции 

 
trader781:

введи другую переменную

int Level1 = 0;

int Level  = 0; 

if (Level !=Level1) 

{}; 

а потом Level1 =Level

 

 

 

а так я реально не понимаю зачем дергать массив на каждом тике если можно делать после любой торговой операции 

      if(SELL_Lvl>0)
      {
         ObjectCreate("Sell no loss level", OBJ_HLINE, 0, 0, SELL_NoLossLevel);
      }          

далее мне нужно, что бы при увеличении SELL_Lvl происходило:

         ObjectDelete( "Sell no loss level");

 Но так как выполняется условие SELL_Lvl>0 линия должна заново перерисоваться, но уже по новому значению SELL_NoLossLevel. Может есть какой то более легкий и очевидный способ перерисвки линии в зависимости от значения SELL_Lvl ?

 
ilnur17021992:
      if(SELL_Lvl>0)
      {
         ObjectCreate("Sell no loss level", OBJ_HLINE, 0, 0, SELL_NoLossLevel);
      }          

далее мне нужно, что бы при увеличении SELL_Lvl происходило:

         ObjectDelete( "Sell no loss level");

 Но так как выполняется условие SELL_Lvl>0 линия должна заново перерисоваться, но уже по новому значению SELL_NoLossLevel. Может есть какой то более легкий и очевидный способ перерисвки линии в зависимости от значения SELL_Lvl ?

Переносите объект на новое значение не удаляя его, и не создавая заново:

ObjectSetDouble(chart_ID, "Sell no loss level", OBJPROP_PRICE1, NewPrice);
 
Vitaly Muzichenko:

Переносите объект на новое значение не удаляя его, и не создавая заново:

ObjectSetDouble(chart_ID, "Sell no loss level", OBJPROP_PRICE1, NewPrice);

это конечно вариант но мне бы хотелось, чтобы линия все таки перерисовывалась по значению SELL_NoLossLevel в зависимости от того изменилось ли SELL_Lvl

 вот так if(ObjectGet("Sell no loss level", 1) !=SELL_NoLossLevel {ObjectDelete"Sell no loss level");}

линия перерисовывается на каждом тике, а мне нужно что бы она перерисовывалась только если изменилось SELL_Lvl

 
ilnur17021992:

это конечно вариант но мне бы хотелось, чтобы линия все таки перерисовывалась по значению SELL_NoLossLevel в зависимости от того изменилось ли SELL_Lvl

 вот так if(ObjectGet("Sell no loss level", 1) !=SELL_NoLossLevel {ObjectDelete"Sell no loss level");}

линия перерисовывается на каждом тике, а мне нужно что бы она перерисовывалась только если изменилось SELL_Lvl

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

По выделенному: изменилось на сколько? Что указывает на тот факт что SELL_Lvl изменилось?

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

Лучше в цикле перебрать, определить нужный и по документации

Delete Pending Order

Торговый приказ на удаление отложенного ордера. Требуется указание 2 полей:

  • action
  • order
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Лучше в цикле перебрать, определить нужный и по документации

для закрытия нужен тикет нижней отложки как найти цену нижнего ордера знаю буду благодарен если подскажеш как найти тикет нижнего ордера 
 
Alexey Viktorov:

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

По выделенному: изменилось на сколько? Что указывает на тот факт что SELL_Lvl изменилось?

SELL_Lvl это количество колен (ордеров) sell сетки,  а SELL_NoLossLevel  это общий уровень (цена) БУ этих ордеров.  В общем идея такая: нужно что бы на уровне БУ отрисовывалась линия и соответственно перерисовывалась при открытии новых колен.  Как это реализовать не догоняю. 
 
TYRBO:
для закрытия нужен тикет нижней отложки как найти цену нижнего ордера знаю буду благодарен если подскажеш как найти тикет нижнего ордера 

Пример в документации есть.

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

Или сначала в цикле запомнить позицию его в списке ордеров и после выхода из цикла выбрать его по запомненному индексу.

Документация по MQL5: Торговые функции / OrderGetTicket
Документация по MQL5: Торговые функции / OrderGetTicket
  • www.mql5.com
Торговые функции / OrderGetTicket - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: