Доброго времени суток! Сразу скажу, я дилетант в алгоритмической торговле, так что в ближайшее время от меня может быть ещё много топиков на форуме. Прошу умных людей подсказать, каким образом можно определить необходимость обновления хендла индикатора для получения новых данных? Т.е. есть индикаторы, хендл которых не требует обновления и данные по нему всегда свежие - стандартный heiken ashi, к примеру, но в тоже время есть WPR, который, если не обновлять хендл перед получением данных - будет давать значения с последнего обновления. Хотелось бы научиться дифференцировать такие индикаторы ещё на фазе анализа их кода, т.к. бесконечные обновления хендла там, где не нужно, создают абсолютно не нужную нагрузку на систему.
- Встречные позиции и закрытие позиций
- как можно сделать передача данных их Excel на МТ4 в виде индикатора, советника и т.д
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
//+------------------------------------------------------------------+ #include "classIndicator\classIndicator.mqh" //+------------------------------------------------------------------+ class classWPR : public classIndicator { private: int PeriodWPR; public: int RefreshStatus(int Depth) { Handle = iWPR(TraidingSymbol, TimeFrame, PeriodWPR); //Если убрать эту строку - будем получать данные с момента вызова конструктора double Buffer0[]; CopyBuffer(Handle, 0, 0, Depth + 1, Buffer0); for(int i = Depth; i >= 1; i --) { if(Buffer0[i] > -80 && Buffer0[i - 1] <= -80) { Status = 1; return(1); } if(Buffer0[i] < -20 && Buffer0[i - 1] >= -20) { Status = -1; return(-1); } } Status = 0; return(0); } classWPR(string symbol, ENUM_TIMEFRAMES frame, int period); ~classWPR(); }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ classWPR::classWPR(string symbol, ENUM_TIMEFRAMES frame, int period) { TraidingSymbol = symbol; TimeFrame = frame; PeriodWPR = period; Handle = iWPR(TraidingSymbol, TimeFrame, PeriodWPR); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ classWPR::~classWPR() { } //+------------------------------------------------------------------+
Пример кода, с обновлением хендла
Хэндл получаем один раз в ините. Никакого обновления хэндля не требуется.
А вот для получения свежих данных используется функция CopyBuffer() - она вызывается каждый раз, когда нужны данные.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь