По НЕСКОЛЬКУ минут не появляется сихронизация!!!
Когда же, наконец, решите эту проблему???
Видимо, всех эта ситуация устраивает, те, кто не писали мультивалютные индикаторы в МТ, вас не поймут :)
https://www.mql5.com/ru/forum/212354
Я решаю ситуацию так :
1. во время старта индикатора запускаю таймер и он работает пока не подгрузятся данные всех символов, потом убиваю таймер и работает только OnCalculate
2. после этого обновляю значения только на последних барах каждого символа, для верности на последнем баре делаю цикл из 100 повторений для CopyRates для каждого символа, обычно за 100 запросов данные для последнего бара таки выбираются
int OnCalculate(const int bars, const int counted, const int start, const double &price[]) { Step(); if (iIndex <= 0) { for (int k = 0; k < 100 && Step() <= 0; k++); // Method step is taking value of the last bar for 3 symbols, loop is over when we got all 3 prices } return bars; } void OnTimer() { // iSeries[0] = EURUSD, iSeries[1] = GBPUSD, iSeries[2] = EURGBP // InpDepth = 1000 bars // This line is loading bars until all 3 symbols are completely loaded, CopyRates() goes to this method, in the simplest case it would be while (CopyRates(...) > 0) iDepth = iSets.getEqualSets(iSeries, PERIOD_CURRENT, NULL, InpDepth); // Code below is here only to do some calculations on a per-bar basis if (iIndex == 0) { iIndex = iDepth - 1; } if (iDepth > 0 && Step() > 0) { iIndex = MathMax(iIndex, iDepth - 1); if (Step() > 0) { EventKillTimer(); ChartRedraw(ChartID()); } } }
Лучше вынести блок синхронизации за определение момента первого запуска и, в случае отсутствия синхронизации - полностью пересчитать индикатор. Синхронизация иногда прерывается во время работы. Да, SERIES_SYNCHRONIZED, как по мне, лучше вообще не использовать. Ее результат иногда отличается от результата Bars(), особенно во время старта терминала/перехода на новый сервер.
Вы не внимательно смотрели код, если нет синхронизации, то prev_calculated вседа будет равно "0"
Вы не внимательно смотрели код, если нет синхронизации, то prev_calculated вседа будет равно "0"
Прочитайте еще раз то, что я написал. Синхронизация может прерваться после первого запуска! Т.е. после того, когда prev_calculated != 0.
А я и не говорил, что prev_calculated != 0 мне нужна синхронизация.
А я и не говорил, что prev_calculated != 0 мне нужна синхронизация.
Вы не внимательно смотрели код, если нет синхронизации, то prev_calculated вседа будет равно "0"
Михаил в своем амплуа, как обычно, все у него того, один он ДыАртанья.
Надо проверку Bars() вытащить из под if(prev_calculated == 0)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уважаемые разработчики!
Вот уже НЕСКОЛЬКО лет существует проблема, когда в индикаторе используется
ещё один (несколько) символов, и не появляется синхронизация серии другого символа
Код индикатора
Результат
По НЕСКОЛЬКУ минут не появляется сихронизация!!!
Когда же, наконец, решите эту проблему???