он даже на следующих барах возвращает тоже значение.
в итоге, на индикаторе длиннющая прямая линия.
он даже на следующих барах возвращает тоже значение.
в итоге, на индикаторе длиннющая прямая линия.
Возможно у вас нет закчанной истории по нужному символу и периоду
он даже на следующих барах возвращает тоже значение.
в итоге, на индикаторе длиннющая прямая линия.
Возможно у вас нет закчанной истории по нужному символу и периоду
Простой, вроде, вопрос, но какой-то мутный. ИМХО, тестер формирует файлы *.FXT из имеющихся в терминале исторических данных по соответствуюшим символу и периоду, т.е. автоматически. Провел примитивный эксперимент.
1. Открыл в терминале график GBPUSD H1, клавишей PgUp закачал историю по ноябрь 2006. Оставил график открытым (чем черт не шутит)
2. Из индикатора MACD сделал опытный идикатор, заменил одну строку на строку из индикатора raw, причем в iMA прописал явно символ и период.
MacdBuffer[i]= iMA("GBPUSD", 60, 30, 0, 3, 6, i);3. Запустил в тестере на EURUSD H1 с января 2007 советник MACD Sample и поставил на график опытный индикатор
Результат близок к результату raw, прямая линия. Отличаются нулевой и первый бары, но и они имеют постоянные значения.
В чем ошибка, что я не так сделал?
Недавно тестил индикатор в режиме тестера. Так он неправильно берет iHigh и iLow текущего символа но старшего таймфрейма. тестил на 210 билде - как только ставишь галочку "Пересчитать" все появляется, но на следующем тесте сново таже проблема. И иногда и "пересчитать" не помогает. Как то коряво очень.
Вот кстати и просьба к разработчикам - сделайте хоть что нибудь, чтоб можно было тестить мультивалютные стратегии. Ну пожулуйста. ..
"Визуальный" график - это вполне обычный график за исключением того, что источником его данных является не исторический центр клиентского терминала, а тестер.
Индикатор, прикреплённый к окну графика, использует данные графика (то есть, совершенно без разницы источник данных в окне графика). Но если данные, используемые таким индикатором не совпадают с данными графика (символ и/или период), то индикатор запрашивает эти данные в историческом центре клиентского терминала. Данные не моделированные, а реальные. И, конечно же, запрашивая много раз в секунду данные нулевого бара "чужих" данных, индикатор будет получать одинаковое значение до тех пор, пока к этим "чужим" данным не придёт новый тик.
Но это касается только пользовательских индикаторов, прикреплённых к визуальному графику. Если же такой пользовательский индикатор запрашивать из тестируемого эксперта, то данные для расчёта в этом индикаторе будут запрашиваться из исторического центра тестера (а не клиентского терминала) и эти данные будут соответствовать тестовой дате.
|
---|
Вообще странно, что вместо "значение равно нулю, а по коду это значит, что нет данных", говорите "горизонтальная линия". Кроме того, не забывайте, что этот тестовый индикатор экономичный и ранее просчитанные бары не пересчитываются после вашей ручной подгрузки исторических данных по GBPUSD.
Следите за наличием исторических данных всех используемых символов, их таймфреймов и внутренней синхронностью всех таймфреймов внутри символа.
Надо синхронизацию по времени делать.
желательно в общем случае писать://---индикатор стоит на графике EURUSD M60
MacdBuffer[i]= iMA("GBPUSD", 60, 30, 0, 3, 6, i);
Так работает. Но, насколько это правильное решение? И стоит ли перестраховываться и применять эту конструкцию для вызова индикаторов//---индикатор стоит на графике EURUSD M60
datetime TimeBar=Time[i];
MacdBuffer[i]= iMA("GBPUSD", 60, 30, 0, 3, 6, iBarShift("GBPUSD",60,TimeBar,false));
с другим символом/периодом из советника для тестера, демо и реала?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Написал индикатор, который берет MovingAverages для GBPUSD, но прикреплен к USDJPY.
Когда его подгружаю в тестер стратегий (например для периода 01-10-2007 - 27-10-2007), то подгружается и отображается нормально.
Но на каждом следующем тике MovingAverages возвращает значение на 01-10-2007.
Упростил код до предела, где грабли? :
int start(){
if (IndicatorCounted()<0) return(-1);
int limit=Bars-IndicatorCounted();
for(int i = 0; i <= limit; i++) ExtMapBuffer[i] = iMA("GBPUSD", 0, 30, 0, 3, 6, i);
return(0);
}