Параметры заданы одинаковые
Если вы писали индикатор сами, то перепроверьте его расчет, а точнее пересчет последней свечки. У меня подобное бывает частенько из за того что последняя свеча не перерасчитывается сразу. У меня подобное часто бывало если перерасчет неверно записан, данные обновляются с запаздыванием... Если я прав, то если закинуть индикатор на график и подождать свечек 10 то появится та же ошибка что и в тестере.
В том то и дело, что рассчитывается последняя закрытая свеча, он не должен никак перерисовывать
if (Bars<0) return(-1);
if(rates_total <= Rsi_Per+MApr) return(0);
int limit=Bars-prev_calculated;
if (limit<0) limit=0;
if (limit > 3000) limit=3000;
for(int i=limit; i>0; i--){
Судя по этому коду, нулевой бар в реальном времени вообще не считается (i>0), а когда он переползает на позицию 1, остается необновленным (limit=Bars-prev_calculated), так что индикатор показывает мусор.
Правильно единожды рассчитаются только те бары от limit до 1, которые существовали в момент набрасывания индикатора на чарт.
Судя по этому коду, нулевой бар в реальном времени вообще не считается (i>0), а когда он переползает на позицию 1, остается необновленным (limit=Bars-prev_calculated), так что индикатор показывает мусор.
Правильно единожды рассчитаются только те бары от limit до 1, которые существовали в момент набрасывания индикатора на чарт.
Ну не совсем так, нулевой бар не считается, правда - это шум, но как только образуется новый 0 бар, то 1 в истории рассчитывается индюком, причем на данных также 1 бара, поэтому он никак не перерисовывается и рассчитывается только 1 раз иначе будет очень тяжело 6 РСИ и 2 ЕМАшки...
Ну не совсем так, нулевой бар не считается, правда - это шум, но как только образуется новый 0 бар, то 1 в истории рассчитывается индюком, причем на данных также 1 бара, поэтому он никак не перерисовывается и рассчитывается только 1 раз иначе будет очень тяжело 6 РСИ и 2 ЕМАшки...
Я смотрю только на приведенный код. В нем 1-й бар не обновляется в момент, когда он становится 1-м, т.е. там остается мусор. Чтобы этого не было, нужно уменьшить prev_calculated на 1 или проверять чтобы limit не был меньше 1.
Для проверки появления нового бара - проверяйте изменение 0-го времени.
Я смотрю только на приведенный код. В нем 1-й бар не обновляется в момент, когда он становится 1-м, т.е. там остается мусор. Чтобы этого не было нужно уменьшить prev_calculated на 1.
Спасибо Станислав, за оказанное внимание!
Хотя вы и не до конца поняли принцип, 1 бар обновляется именно, когда он становится первым, это я трассировал на мессаджах. Я разобрался в чем дело, на истории индикатор считает внутренние индикаторы старших ТФ по закрытым барам, а текущие расчеты происходят на нулевых барах, которые индюками считаются в отличие от моего.
Теперь встает задача каким образом скопировать историю баров в буфера, так чтобы можно было править 0 член массива,
чтобы рассчитать iRSIOnArray...
Вопрос кажется решен. Копированием данных в массив
и имитацией закрытия текущего бара на старшем ТФ.
история считается на смещении бара, текущие данные на событии
открытия новых баров по всем ТФ.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Параметры заданы одинаковые