Тупиковый период.
Именно так. Так как "чужие" инструменты не моделируются при тестировании.
Так будет же сдвиг значения индикатора на один бар из-за того
что по евре берем текущий бар.
Тут надо или везде брать прошлый бар, или попытаться промоделировать все 3 пары одновременно, эта тема недавно проскакивала и вроде бы задача была успешно решена, кажись Xeon в курсе
Тут надо или везде брать прошлый бар, или попытаться промоделировать все 3 пары одновременно, эта тема недавно проскакивала и вроде бы задача была успешно решена, кажись Xeon в курсе
stringo:
Именно так. Так как "чужие" инструменты не моделируются при тестировании.
А если оставить анализ на нулевом баре, тогда происходит подсматиривание в будущее или нет.
Как в этом случае.
HIDDEN:
А если оставить анализ на нулевом баре, тогда происходит подсматиривание в будущее или нет.
Да, происходит подсматривание в будущее, т.к. бар фактически
ещё не закрылся, а советнику уже даётся его CLOSE.
stringo:
Именно так. Так как "чужие" инструменты не моделируются при тестировании.
А если оставить анализ на нулевом баре, тогда происходит подсматиривание в будущее или нет.
Кому интересно, погоняйте этого советника в тестере в режиме визуализации, например на EURUSD H1 и увидите какие значения берутся с нулевого бара чифа.
//+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { string st="iOpen()="+DoubleToStr(iOpen("USDCHF", 0, 0), 4)+"\n"+ "iHigh()="+DoubleToStr(iHigh("USDCHF", 0, 0), 4)+"\n"+ "iLow()="+DoubleToStr(iLow("USDCHF", 0, 0), 4)+"\n"+ "iClose()="+DoubleToStr(iClose("USDCHF", 0, 0), 4)+"\n"+ ""; Comment(st); } //+------------------------------------------------------------------+
Всем привет.
Последнее время многие трейдеры начали писать мультивалютные экспертные системы. Т.е. для работы скажем на EURUSD, используется еще несколько валютных пар для анализа. Многие мне задают вопрос о тестировании и о реальной работе рынка одного и тогоже эксперта. И один из подобных вопросов поставил меня в небольшой тупик. Хотелось бы прояснить этот момент у разработчиков и у людей который в теме что и как.
Итак задачка следующая:
1. Для входа по EURUSD происходит анализ индикаторов по нескольким валютным парам, например по GBPUSD и USDCHF, анализ идет по показаниям индикатора, к примеру по Relative Vigor Index, RVI. Формула для расчета данного индикатора:
RVI = (CLOSE - OPEN) / (HIGH - LOW)
Вопрос который мне написали:
В тестере эксперт показывает результат который меня устраивает, но на демо счете сливает, если можешь объясни почему.
Из присланного куска кода видно следующие:
double iEURUSD,iGBPUSD,iUSDCHF;
iEURUSD = iRVI("EURUSD", 0, 10,MODE_MAIN,0);
iGBPUSD = iRVI("GBPUSD", 0, 10,MODE_MAIN,0);
iUSDCHF = iRVI("USDCHF", 0, 10,MODE_MAIN,0);
Из этого куска видно, что анализ индикаторов идет на нулевом баре, человек уточнил, что именно все должно работать на нулевом, я спорить не стал.
А вот теперь тот подводный камень, на котором спотыкаются все кто пишет подобные эксперты на нулевом баре. Различия в тестере и на реальном рынке.
т.к. тестер не умеет моделировать потиково катеровки других валютных пар, кроме той по которой идет тестирование, мы имеем сильно искаженную картину. А именно:
При работе на реальном рынке поступают тики по всем валютным парам и при запросе значения индикатора с валютной пары GBPUSD и USDCHF расчет идет по имеющимся катеровкам запрашиваемого таймфрейма.
Тестер же выдаёт результат несколько отличный от реального рынка, а именно расчет идет по уже сформировавшемуся бару.
Про тупик:
Из моих рассуждений и догадок имеем следующею картину, что при работе на нулевом баре расчет индикатора происходит по уже известным ценам CLOSE, OPEN, HIGH, LOW которые хранятся в базе истории терминала. Или все-таки расчет идет только по OPEN свечки, когда все значения CLOSE, OPEN, HIGH, LOW = одному значению, или все-таки идет подсматривание в будущее? Я специально привел пример именно индикатора Relative Vigor Index, RVI, т.к. в его формуле есть все нужные нам значения.
На данный момент я посоветывал человеку сделать следующее:
double iEURUSD,iGBPUSD,iUSDCHF;
iEURUSD = iRVI("EURUSD", 0, 10,MODE_MAIN,0);
iGBPUSD = iRVI("GBPUSD", 0, 10,MODE_MAIN,1);
iUSDCHF = iRVI("USDCHF", 0, 10,MODE_MAIN,1);
Т.е. при анализе евры использовать нулевой бар, а по остальным валютным парам прошлый бар.
В этом случае результаты тестирования и реального рынка будут ли максимально совпадать?