Как в советнике отменить случайное нажатие смены таймфрейма?
Прочитал про Событие ChartEvent
но там похоже это событие не отслеживается. ((
Сделайте такую проверку в OnTick() в Вашем советнике:
if(_Period != PERIOD_H1)ChartSetSymbolPeriod(0, NULL, PERIOD_H1);
это для таймфрейма Н1, если вам нужен другой период замените выделенное на нужное Вам.
P.S. будет работать как в mql4 так и mql5
Сделайте такую проверку в OnTick() в Вашем советнике:
это для таймфрейма Н1, если вам нужен другой период замените выделенное на нужное Вам.
P.S. будет работать как в mql4 так и mql5
В OnTick() тоже будет работать, но правильнее будет сделать в OnChartEvent() :
if(id == CHARTEVENT_CHART_CHANGE) { if(_Period != PERIOD_H1)ChartSetSymbolPeriod(0, NULL, PERIOD_H1); }но тогда надо делать такую-же проверку и в OnInit() - вдруг изначально повесите эксперт не на тот период )
Как в советнике отменить случайное нажатие смены таймфрейма?
Прочитал про Событие ChartEvent
но там похоже это событие не отслеживается. ((
У меня было, что я забывался и начинал переключать ТФ на графике при работающем на нём советнике. А потом это неудобно- не трогать пару, т.к. на ней советник.
Вы не хотите перефразировать задачу?
"Как в советнике сделать так, что бы при смене таймфрейма графика, советник не менял своих настроек на работу? И работал строго на определённом ТФ независимо от ТФ на графике. ТФ задавать сразу при включении в работу."
Вот тут можно программно на закачку данных с индикаторов и баров установить требуемый таймфрейм. Срабатывание строго в определённые интервалы времени и т.д.
У меня было, что я забывался и начинал переключать ТФ на графике при работающем на нём советнике. А потом это неудобно- не трогать пару, т.к. на ней советник.
Вы не хотите перефразировать задачу?
"Как в советнике сделать так, что бы при смене таймфрейма графика, советник не менял своих настроек на работу? И работал строго на определённом ТФ независимо от ТФ на графике. ТФ задавать сразу при включении в работу."
Вот тут можно программно на закачку данных с индикаторов и баров установить требуемый таймфрейм. Срабатывание строго в определённые интервалы времени и т.д.
Да, самый правильный подход, если нужна привязка к ТФ. А чтобы не было переинициализации, я делаю так
int LastDeinitReason = 0; int OnInit() { if(LastDeinitReason==REASON_CHARTCHANGE || LastDeinitReason==REASON_TEMPLATE) { LastDeinitReason = 0; return(INIT_SUCCEEDED); } //если причина в другом, делаем инициализацию } void OnDeinit(const int reason) { LastDeinitReason = reason; if(reason==REASON_CHARTCHANGE) return; //EventKillTimer(); }
**
Да, проблема именно в том чтоб не дать переключиться на другой ТФ. Перехватить нужно!
Да, проблема именно в том чтоб не дать переключиться на другой ТФ. Перехватить нужно!
Программных средств от такого я не знаю, а запомнить не удастся. Человеческий мозг склонен к забыванию и рано или поздно вы таки ткнёте "не туда" и советник некорректно сработает. Лучше сразу задать ТФ работы программно и как правильно заметили "переинициализация" не должна приводить к срабатываниям и ошибкам. Последнее, для любителей "на ходу" вносить правки в код советника и на случаи разных обрывов связи.
Да, проблема именно в том чтоб не дать переключиться на другой ТФ. Перехватить нужно!
Перехватить средствами MQL никак нельзя. Только отследить переключение и переключиться обратно. Из внешней программы можно теоретически поставить хук на нажатия.
Делаю параметр TimeFrame, и таймфрейм графика не важен, хоть запереключайся.
Делаю параметр TimeFrame, и таймфрейм графика не важен, хоть запереключайся.
Само собой, так все нормальные люди и делают. Но некоторым желательно помучиться )
Всем спасибо я понял!
перехватить нельзя.
У меня прописанн ТФ в командах и сов работает правильно независимо от установленного тф так что в этом смысле давно уже не мучаюсь! )
Просто открыто как правило 2 окна и нет-нет да ткнешь не там тф. и думал может есть красивый способ решить вопрос кардинально! )
Спасибо еще раз!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как в советнике отменить случайное нажатие смены таймфрейма?
Прочитал про Событие ChartEvent
но там похоже это событие не отслеживается. ((