Помогите сделать алгоритм для индикатора, чтобы програма смогла выдавать оповещение в любое время одной свечи, но только один раз за 1 бар. Нужно чтобы весь алгоритм был в функции OnCalculate (). Желательно скинуть формулярчик, чтобы я вставил свой if для обнаружения сделки. Не могу добиться того чтобы алерт выдавался только раз. У самого получается постоянно что на кажном тике выдает оповещение.
- Распознавание свечных моделей
- Сигналы от индикатора
- Помогите с кодом ...
Можно после OnCalculate() вставить:
ArraySetAsSeries(time, true); static datetime prevBarTime = 0; if(prevBarTime != time[0]) // если обнаруживаем новое время { prevBarTime = time[0]; // Сигналим }Или prevBarTime объявить на глобальном уровне без static.
Vasiliy Pushkaryov:
Да, но дело в том что так индикатор будет сигналить только в начале бара, в тот момент когда те два значения не равны. А мне нужно чтобы индикатор мог сигналить в любой момент, хоть на начале, хоть в середине или в конце. Можно после OnCalculate() вставить:
Или prevBarTime объявить на глобальном уровне без static.Нужно по идее ещё один флажок что то типа message _was_send
ddras2:
Да, но дело в том что так индикатор будет сигналить только в начале бара, в тот момент когда те два значения не равны. А мне нужно чтобы индикатор мог сигналить в любой момент, хоть на начале, хоть в середине или в конце.
Да, но дело в том что так индикатор будет сигналить только в начале бара, в тот момент когда те два значения не равны. А мне нужно чтобы индикатор мог сигналить в любой момент, хоть на начале, хоть в середине или в конце.
Нужно по идее ещё один флажок что то типа message _was_send
условие времени что выше, после условия сигнала
ddras2:
Да, но дело в том что так индикатор будет сигналить только в начале бара, в тот момент когда те два значения не равны. А мне нужно чтобы индикатор мог сигналить в любой момент, хоть на начале, хоть в середине или в конце.
Да, но дело в том что так индикатор будет сигналить только в начале бара, в тот момент когда те два значения не равны. А мне нужно чтобы индикатор мог сигналить в любой момент, хоть на начале, хоть в середине или в конце.
Нужно по идее ещё один флажок что то типа message _was_send
ArraySetAsSeries(time, true); static datetime prevBarTime = 0; static datetime MySignalThisBar = 0; // если обнаружен сигнал на этом баре if(prevBarTime != time[0]) // если обнаруживаем новое время { prevBarTime = time[0]; } if (MySignalThisBar != prevBarTime ) // на этом баре сигнала не было { if ( ВАШАСДЕЛКАОБНАРУЖЕНА() ) { // ДА сделка обнаружена сигналим на этом баре MySignalThisBar = prevBarTime ; // отлично СИГНАЛИМ } else { // сигнал на этом баре был } bool ВАШАСДЕЛКАОБНАРУЖЕНА(void) { ... return ( false ); // сделки нет ... return ( true ); // сделка есть }
Yuriy Zaytsev:
А что там вместо "..." в конце, и куда пихать свое условие, обясните пожалуйста.
достаточно одной проверки
if (TimeCurrent()-prevTime>=PeriodSeconds()) { prevTime=TimeCurrent(); //сигнал }
ddras2:
А что там вместо "..." в конце, и куда пихать свое условие, обясните пожалуйста.
Желательно скинуть формулярчик, чтобы я вставил свой if для обнаружения сделки.
bool ВАШАСДЕЛКАОБНАРУЖЕНА(void) { ... Желательно скинуть формулярчик, чтобы я вставил свой if для обнаружения сделки. { return ( true ); // сделка есть } else { return ( false ); // сделки нет } }
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь