Что не так с индикаторами Pivot? - страница 4

 

Кажется недавно тоже отлавливал какой-то глюк с iBarShift() на графике визуального тестирования.

да фигли толку

 
evillive:

что за ночь?

Ночью происходит переход на новый день. И на протяжении нескольких тиков будет наблюдаться всплеск активности неправильного расчёта. Потом всё устаканивается.
 
stringo:

Ночью происходит переход на новый день. И на протяжении нескольких тиков будет наблюдаться всплеск активности неправильного расчёта. Потом всё устаканивается.

А где этот "вплеск активности" влияет на подобную конструкцию? И почему это влияние только в тестере?

  for (int i=limit; i>=0;i--)
  { 
    int sh = iBarShift(NULL, 1440, iTime(NULL,0,i), false);
    
     H = iHigh(NULL, 1440, sh + 1);
     L = iLow(NULL, 1440, sh + 1); 
     C = iClose(NULL, 1440, sh + 1);
     O = iOpen(NULL, 1440, sh + 1);
     RG = H-L;

    P =  (H+L+C)/3; 
    R1 = 2*P-L;
    S1 = 2*P-H;
    R2 = P+RG;
    S2 = P-RG;
    R3 = R2+RG;
    S3 = S2-RG;
    
    PBuffer[i]  = NormalizeDouble(P,d); 
    R1Buffer[i] = NormalizeDouble(R1,d);
    S1Buffer[i] = NormalizeDouble(S1,d);
    R2Buffer[i] = NormalizeDouble(R2,d);
    S2Buffer[i] = NormalizeDouble(S2,d);
    R3Buffer[i] = NormalizeDouble(R3,d);
    S3Buffer[i] = NormalizeDouble(S3,d);
  }
 
evillive:

а вот этот мой, он просто прямые линии рисует с момента первого расчёта и до повторной компиляции (в билде 482 всё нормально перерасчитывается без дополнительных пинков или пляски с бубном):


В нем идет обращение к "неродным" таймфреймам. В этом вся проблема.

int start()
{
  limit=Bars-IndicatorCounted();
  if (limit>0) limit=Bars-1;

  for (int i=limit; i>=0;i--)
  { 
    int sh = iBarShift(NULL, period, Time[i], false);
    
    double H = iHigh(NULL, period, sh + 1);
    double L = iLow(NULL, period, sh + 1); 
    double C = iClose(NULL, period, sh + 1);
    double O = iOpen(NULL, period, sh + 1);
    double RG = H-L;
    
    P =  (H+L+C)/3; 

Начиная с 600-го билда при визуальном тестировании -  функции получения значений со старших таймфреймов в индикаторах, наброшенных на график визуального тестирования, не имеют доступа к истории и не моделируются (и раньше не моделировались).

В старой версии тестера индикаторы, наброшенные на график визуального тестирования, могли подсматривать в будущее и перекидывать подсмотренное значение в тестируемый эксперт (если кодер так написал), например, через глобальные переменные терминала. Теперь облом.

 
Integer:

Кажется недавно тоже отлавливал какой-то глюк с iBarShift() на графике визуального тестирования.

да фигли толку


Смотрите мое сообщение выше
 
evillive:

А где этот "вплеск активности" влияет на подобную конструкцию? И почему это влияние только в тестере?


Это наверняка можно увидеть и живьем - нужно только понаблюдать как меняется отрисовка на последнем баре предыдущего дня при обработке первых тиков нового дня.

Вот как видит это тестер в старом алгоритме


 
Rosh:

В нем идет обращение к "неродным" таймфреймам. В этом вся проблема.

Начиная с 600-го билда при визуальном тестировании -  функции получения значений со старших таймфреймов в индикаторах, наброшенных на график визуального тестирования, не имеют доступа к истории и не моделируются (и раньше не моделировались).

В старой версии тестера индикаторы, наброшенные на график визуального тестирования, могли подсматривать в будущее и перекидывать подсмотренное значение в тестируемый эксперт (если кодер так написал), например, через глобальные переменные терминала. Теперь облом.


То есть теперь любой советник, основанный на мульти-ТФ индикаторе, или хотябы пытающийся заглянуть на старший ТФ, обречён на неудачное тестирование в тестере? Только в режиме реального времени их тестить, чтоли? А оптимизировать как?

Ничего себе свинью вы пользователям подложили, даже если только визуальное тестирование так себя ведёт...


Rosh:

Это наверняка можно увидеть и живьем - нужно только понаблюдать как меняется отрисовка на последнем баре предыдущего дня при обработке первых тиков нового дня.

Вот как видит это тестер в старом алгоритме

Не, мой так не перерисовывает в старом билде, всё нормально рисует, видео в прицепе. А вот в новом билде, как я уже писал, при переходе на следующие сутки индикатор рисует те же данные, что были рассчитаны ранее, до реинициализации.
Файлы:
 
Rosh:

Смотрите мое сообщение выше


Посмотрел. Не об этом был разговор. Как работает функция iBarShift() на графике визуального тестирования со своими и не своими данными знаю уже очень давно.

Вот поэтому и написал - "а фигли толку". 

 
evillive:

То есть теперь любой советник, основанный на мульти-ТФ индикаторе, или хотябы пытающийся заглянуть на старший ТФ, обречён на неудачное тестирование в тестере? Только в режиме реального времени их тестить, чтоли? А оптимизировать как?

Да не. Как вариант.

P./S.: Как-то ссылка не так вставляется. Поправила сейчас

 
Вспомнил, что за глюк был. На графике визуального тестирования для нулевого бара возвращался 0 всегда. Для своих данных это нормально, а для другого графика  - нет. 
Причина обращения: