Как узнать, что индикатор используется режиме Тестирования - страница 4

 
Integer:

Определение того, что индикатор находится на графике визуального тестирования:

 TimeCurrent()>Time[0]+Period()*60

При вызове индикатора из эксперта при тестировании, функции IsTesting() и IsVisualMode() работаю в индикаторе правильно.


Сложновато писать то что очевидно (субъективно).

Думаю вопрос решен?.

(смотрим далее )
Файлы:
 
Замените TimeCurrent() на MarketInfo(Symbol(),MODE_TIME). Я исправил свое сообщение с этим кодом.
 
costy_:
Думаю вопрос решен.

и решен красиво.

Integer:

Мамачки:)

ну вот... и ото стоило столько писанины писать вместо одной строчки кода очевидной тебе и не очевидной другим? ;)

 
Integer:
Замените TimeCurrent() на MarketInfo(Symbol(),MODE_TIME). Я исправил свое сообщение с этим кодом.

Нет, TimeCurrent() более (>=) MarketInfo(Symbol(),MODE_TIME).

Ведь если некоторое время не было открыто окно моделируемого символа архив символа не изменится (и незачем вызывать MarketInfo, могу ошибаться?).

 
costy_:

Нет, TimeCurrent() более (>=) MarketInfo(Symbol(),MODE_TIME).

Ведь если некоторое время не было открыто окно моделируемого символа архив символа не изменится (и незачем вызывать MarketInfo, могу ошибаться?).


В нормальном режиме, по другому символу может уже открыться бар, а по рабочему (на котором индикатор) еще нет, а будет определено визуальное тестирование

Обновление данных. Это другая тема. Если это кртично для работы индикатора, то нужно отдельно, в начале, принять меры по контролу подгрузки, потом все остальное делать. 

 
Integer:


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

Обновление данных. Это другая тема. Если это кртично для работы индикатора, то нужно отдельно, в начале, принять меры по контролу подгрузки, потом все остальное делать.

Решил проверить, оказалось что TimeCurrent грубо говоря и есть время последнего тика всего "обзора рынка".

void start()  {

  Alert (TimeCurrent()+" более (>=)"+ MarketInfo("USDSEK",MODE_TIME));
     int limit=Bars-IndicatorCounted();
                         /*            */
     for(int i=0; i<limit&&!IsTestingOpt; i++)
        ExtMapBuffer1[i]= Close[i];
}

лог

2010.12.10 16:29:44	IsTestingOpt EURUSD,M1: Alert: 2010.12.10 16:29:52 áîëåå (>=)2010.12.10 16:29:51
2010.12.10 16:29:44	IsTestingOpt EURUSD,M1: Alert: 1291998592 áîëåå (>=)1291998591.00000000
2010.12.10 16:29:44	IsTestingOpt EURUSD,M1: initialized

но при вызове через iCustom(0,0,"IsTestingOpt",0,0);

лог выглядит иначе ;))

2010.12.10 16:24:02     IsTestingOpt USDCAD,M5: Alert: 2010.07.02 03:00:00 áîëåå (>=)2010.07.02 03:00:00
2010.12.10 16:24:02     IsTestingOpt USDCAD,M5: Alert: 1278039600 áîëåå (>=)1278039600.00000000
 

Если используется iCustom() при оптимизации тестировании в режиме визуализации,

функции IsTesting() IsVisualMode() IsOptimization() работают корректно.

Если индикатор выкидываем в ручную на график (visual) они не работают.

Т.е. берутся не моделируемые данные, а из вне, данной "песочницы" (см. индикатор выше)

зы странно что MarketInfo("USDSEK",MODE_TIME) тоже был смоделирован, ХМ.

 

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

Спасибо, тема раскрыта, надеюсь форуму больше не потребуется отвечать на этот вопрос.