Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А не могли бы Вы показать пример аналогично тому, как это сделал я в начале ветки. Включите торговлю только по одному символу, но эксперт при этом тестируйте на другом. Сделайте скриншот и протестируйте на том символе, на котором проходит тест. Будут ли расхождения подобные тем, как это представлено в начале ветки? Хотя если отслеживается формирование баров на всех символах, то должно быть всё идентично. Но всё же нужно всё проверять...
Ну, тестировать я не буду. Могу выложить код, а Вы его протестируйте ;-):
Ну, тестировать я не буду. Могу выложить код, а Вы его протестируйте ;-):
Yedelkin
Обратите внимание на часть кода:
Здесь видно, что Вы "навешиваете" некий индикатор "Spy Control panel MCM" на два разных символа. Т.е. источниками сигнала у Вас служат разные символы. Но при этом Вы утверждаете, что "торговля ведётся по EURUSD", т.е. что источником сигнала является один и тот же символ. Давайте определимся.
Торговля ведётся только по EURUSD.
Я рассматриваю в своих тестах схему, которую написал Константин Груздев - "Реализация мультивалютного режима в MetaTrader 5". ))) Всё определено. В приложенных к статье файлах есть индикатор Spy Control panel MCM и эксперт exSpy Control panel MCM. Установив эксперт на график можно увидеть, как он работает. В журнале чётко отображаются указанные события принятые экспертом с разных символов. Всё чётко, ничего не смешивается.
Я сейчас попробовал указать в OnChartEvent() символ, с которого принимается идентификатор, но это не изменило результаты. Из OnInit() я удалил второй символ, чтобы исключить любую возможность получения не тех событий. Теперь тест проводился по такому варианту:
Тест на инструменте EURUSD с графика EURUSD:
Тест на инструменте EURUSD с графика GBPUSD:
Результаты не соответствуют.
Interesting
Судя по этому коду сигналы действительно поступают с двух символов, только вот эксперт может обрабатывать один из этих сигналов с опозданием.
Второго символа больше нет, сигналы приходят только с EURUSD. Но это к сожалению не решило проблему.
Ну, тестировать я не буду. Могу выложить код, а Вы его протестируйте ;-):
Протестировал Ваш вариант. )) Результаты практически идентичны. Для предварительного (быстрого) тестирования вполне подходит. Чтобы получить полностью идентичные результаты значит будем использовать функцию OnTimer().
Вот результаты тестирования:
Тест на инструменте EURUSD с графика EURUSD:
Тест на инструменте EURUSD с графика GBPUSD:
Мне кажется 10 сек слишком маленький интервал. Если интересуют только сформированные бары, интервал должен быть не менее минуты.
Нет смысла делать короче, минута это минимальный разумный интервал..
Провёл всё таки ещё серию тестов, чтобы показать несоответствие результатов, которые выше 10 секунд. Сравнивать будем с тем же "эталоном", который был предоставлен в начале темы. То есть из функции OnTick() по сформированным дневным барам, когда эксперт находится на тестируемом символе. Вот он:
Далее все результаты будут из функции OnTimer(). Эксперт на символе GBPUSD:
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 10 секунд:
Это самый точный результат.
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 1 минута:
Не соответствует действительности. Результат оказался даже существенно лучше, что тоже не правильно и вводит в заблуждение.
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 60 минут:
Результат не совпадает во многих местах с эталоном.
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 1 день:
Результат более всего неидентичен.
-------------------------
В общем, чтобы быть полностью уверенным в правильных результатах, мультивалютные эксперты нужно тестировать через функцию OnTimer(), устанавливая при этом максимально минимальный интервал.
Провёл всё таки ещё серию тестов, чтобы показать несоответствие результатов, которые выше 10 секунд. Сравнивать будем с тем же "эталоном", который был предоставлен в начале темы. То есть из функции OnTick() по сформированным дневным барам, когда эксперт находится на тестируемом символе. Вот он:
Далее все результаты будут из функции OnTimer(). Эксперт на символе GBPUSD:
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 10 секунд:
Это самый точный результат.
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 1 минута:
Не соответствует действительности. Результат оказался даже существенно лучше, что тоже не правильно и вводит в заблуждение.
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 60 минут:
Результат не совпадает во многих местах с эталоном.
Тест на инструменте EURUSD с графика GBPUSD. Интервал таймера 1 день:
Результат более всего неидентичен.
-------------------------
В общем, чтобы быть полностью уверенным в правильных результатах, мультивалютные эксперты нужно тестировать через функцию OnTimer(), устанавливая при этом максимально минимальный интервал.
Я не совсем понял. Чего-то ты некорректно сравнил.
Первый тест правильный : сравнение двух способов тестирования - на "своём" инструменте и на другом. А дальше ты взял этот первый результат в качестве эталона, и сравнил все остальные результаты с ним.
Это неправильно. Нужно сравнивать остальные прогоны на идентичность не с первым результатом, а с прогонами такой же периодичности тикания на "своём" инструменте.
Они будут отличаться от "10-ти секундного", это вполне естественно, главное они должны быть попарно идентичны.
Дополни, пожалуйста, тест.
Иначе получится, что только время зря убил, странным образом ухитрившись подтвердить свою первоначальную иллюзию "о преимуществах 10ти-секундного тестирования" .
Протестировал Ваш вариант. )) Результаты практически идентичны. Для предварительного (быстрого) тестирования вполне подходит. Чтобы получить полностью идентичные результаты значит будем использовать функцию OnTimer().
Я не совсем понял. Чего-то ты некорректно сравнил.
Первый тест правильный : сравнение двух способов тестирования - на "своём" инструменте и на другом. А дальше ты взял этот первый результат в качестве эталона, и сравнил все остальные результаты с ним.
Это неправильно. Нужно сравнивать остальные прогоны на идентичность не с первым результатом, а с прогонами такой же периодичности тикания на "своём" инструменте.
Они будут отличаться от "10-ти секундного", это вполне естественно, главное они должны быть попарно идентичны.
Дополни, пожалуйста, тест.
Иначе получится, что только время зря убил, странным образом ухитрившись подтвердить свою первоначальную иллюзию "о преимуществах 10ти-секундного тестирования" .
Хорошо. Сейчас уже запустил ещё один долгий тест. Он закончится, когда я проснусь. Но уже сейчас могу сказать, что попарно они идентичны, так как я это видел. Осталось только и Вам это показать. Но Вы могли бы и сами провести аналогичный тест. Это же важный момент в тестировании торговых систем. А то вдруг я что-то неправильно делаю.)))
P.S. Для меня главное как раз было в том, чтобы они были идентичны не попарно, так как при тестировании через функцию OnTimer() они оказывается в любом случае будут идентичны попарно. Цель изначально стояла в том, чтобы они были идентичны с результатом, который был получен в обычном режиме в функции OnTick() с явным контролем баров. Эксперты торгующие на одном символе отлично с этим справляются. А вот в мультивалютном режиме это нужно было выяснить. Результат налицо.
Насколько я понимаю, Вы сейчас протестировали не мой способ синхронизации, а генератор тиков МетаТрейдера. Дело в том, что при запуске тестов у Вас были сформированы разные базы тиков - под именем eurusd и под именем gbpusd, и результаты по ним практически никогда не будут равны. В реальности же, если запустить два эксперта с указанным блоком синхронизации на разных символах, разница должна быть пренебрежимо малой или вовсе отсутствовать.
Торговля ведётся только по EURUSD.
Начнём с правильных формулировок. В первоначальном примере Вам бы хотелось, чтобы "торговля велась по евродоллару". На самом деле пользовательские события поступали с двух символов, а в обработчике событий функции TradeSignalCounter()+TradePerformer() вызывались при поступлении событий от любого из этих двух символов. Можно предположить, что очередь событий была всегда забита до упора.
Теперь Вы удалили один из источников сигналов, но зачем-то в обработчике событий ввели проверку "if(sparam == Symbol_01)". Но очередной вопрос в другом. Судя по коду, схема Lizar'а используется у Вас в режиме "Все тики", и на каждом тике от источника сигнала (EURUSD) вызываются функции TradeSignalCounter()+TradePerformer(). На возможное переполнение очереди событий уже намекал Interesting. Мне же интересно, какой инструмент у Вас используется в качестве параметра Symbol_01 у этих двух функций, и не пробовали ли Вы изменить периодичность поступления событий в схеме Lizar'а.