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

 
SanAlex:

тоже по экспериментировал - открыл камеру, а закрыть не возможно - пока процесс не убил.

https://www.gunsmoker.ru/2015/01/avoid-using-ShellExecuteEx.html

Почему вам не следует использовать ShellExecute(Ex)
  • 2015.01.05
  • GunSmoker
  • www.gunsmoker.ru
В прошлый раз мы узнали, почему вам никогда не следует использовать функцию . В этот раз я расскажу вам о том, почему вам не следует использовать функцию . Заголовки этого и предыдущего постов выбраны крайне тщательно. Предыдущий пост говорил о том, что если вы пишете код в 1995 году или позднее, то вы не должны использовать функцию . Поскольку...
 

Подскажите, пожалуйста, не пойму в чем проблема

     if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     if(buy_lots==0||sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);

Если нет открытых ордеров, то включается М5 и все нормально,

но как только открывается ордер, то начинает прыгать М5,М15,М5,М15...

 
MakarFX:

Подскажите, пожалуйста, не пойму в чем проблема

Если нет открытых ордеров, то включается М5 и все нормально,

но как только открывается ордер, то начинает прыгать М5,М15,М5,М15...

Все как написано, так и происходит.

Или в нижнем замените на И

 
Valeriy Yastremskiy:

Все как написано, так и происходит.

Или в нижнем замените на И

Спасибо, заменил, но результат тот же

     if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     if(buy_lots+sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);
 
MakarFX:

Спасибо, заменил, но результат тот же

  
      Alert("1 buy_lots ",buy_lots," sell_lots "sell_lots);
    if(buy_lots>0||sell_lots>0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M15);
     Alert("2 buy_lots ",buy_lots," sell_lots "sell_lots);
     if(buy_lots==0 && sell_lots==0)
      ChartSetSymbolPeriod(0,Symbol(),PERIOD_M5);

Значит что то нет. Значит сумма buy_lots+sell_lots=0

И лучше И чем сложение. Либо Алерт либо Принт в помощь

 
Valeriy Yastremskiy:

Значит что то нет. Значит сумма buy_lots+sell_lots=0

И лучше И чем сложение. Либо Алерт либо Принт в помощь

Чем лучше?

(0 == 0 и 1 == 0) — условие не выполнено

(0 + 1 == 0) — условие так-же не выполнено

Чем отличается И от сложения в этом конкретном примере¿¿¿

 
MakarFX:

Спасибо, заменил, но результат тот же

Значит проверьте значения buy_lots и sell_lots вероятно они где-то теряют свои значения.
 
Alexey Viktorov:
Значит проверьте значения buy_lots и sell_lots вероятно они где-то теряют свои значения.

Принт


Не понятно почему на М5 переключается

 
MakarFX:

Принт


Не понятно почему на М5 переключается

Когда происходит переключение ТФ — происходит перезапуск советника. Попробуйте засунуть принты под условие, переключение и Print. Или наоборот.

И обязательно в условие надо добавить проверку периода. Если переключился на М15, то зачем ещё раз переключать?

 
Igor Makanu:

вот поэтому и рекомендуют стараться делать работу ЕА исключительно со своими магиками

если задача открывать один раз в сутки ордер в определенное время, то алгоритм такой:

- запустили ЕА, он проверяет количество открытых ордеров, если ордер с нашим магиком открыт, то выход до следующего тика

- если нет ордеров, ЕА ждет пока текущий час и минуты будут больше заданных

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

Подскажите пожалуйста ,что такое ЕА в контексте того что Вы написали в своем посте. Хочу найти, и  ознакомится поподробнее.....
Спасибо.