Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Надо бы добавить что-то типа:
А то иногда нужны только свойства, а бары - нет.
Все методы класса же паблик. Поэтому для клонирования только свойств вызывать CloneProperties().
Библиотека и пример использования обновлены.
Пример
При запуске бэктеста на кроссах тестер тянет за собой не только основной символ, но и вспомогательный, который позволяет конвертировать валюту прибыли основного символа в валюту счета. Вытягивание дополнительного символа, генерирование его тиков и их синхронизация с основным символом отнимают столь драгоценные вычислительные ресурсы (и время) в режимах одиночного прогона и, особенно, Оптимизации.
Однако, почти всегда такая точность является излишней. Поэтому хочется обойти эту навязчивость/несовершенство MetaTrader 5 тестера. В MetaTrader 4 это сделать легко - там есть возможность поменять валюту счета прямо в тестере. MetaTrader 5 же лишен такой возможности.
Демонстрационный скрипт показывает способ обойти данное ограничение тестера - убрать ненужные вычисления. Для этого создается копия символа для бэктеста, но валюта прибыли/маржи задается равной валюте счета. Т.е. переконвертация результатов торговли не потребуется. И прибыль, фактически, будет вычисляться в пипсах, что может быть очень наглядно в некоторых ситуациях.
Результат
Таким образом достигается бесплатное ускорение Тестера/Оптимизатора.
ЗЫ Замерил досконально на EURGBP. Выигрыш по времени получается в ~2 раза. Сделки полностью совпадают. Действительно, бесплатно!
Следующее замечание касается не только библиотеки.
Если нужно поменять некоторые свойства кастомного символа, то в некоторых случаях это нужно делать ДО импорта котировок.
Поэтому для надежности результата настоятельно рекомендую сначала устанавливать все свойства символа, а только потом производить импорт.
Например, если Вы хотите задать SYMBOL_TRADE_TICK_VALUE и SYMBOL_TRADE_TICK_SIZE, то это обязательно нужно сделать до импорта тиков/баров.
В MT5-тестере, как правило (форекс, например), лимитные ордера имеют положительное проскальзывание, что приводит к самообману (иногда даже в виде тестерных граалей на реальных тиках!)
Но есть возможность обойти эту особенность Тестера. Ниже подробная инструкция, как это сделать.
1. Если исходный символ (открытого графика) не кастомный или счет хеджевый, запустить на графике символа этот скрипт
Получится такая картина
2. Если счет хеджевый (присутствует слово Hedge в заголовке окна Терминала), зайти на любой неттинговый счет (например, MetaQuotes-Demo) и перезагрузить Терминал.
3. На текущем чарте запустить уже этот скрипт
3. Выбираем в Тестере полученный кастомный символ
Теперь лимитные ордера скользить не будут!
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.02.14 14:41
Гадкий баг не Терминала, а Платформы MT5Запускаем на MQ-Demo на каком-нибудь медленно двигающемся символе. Например, EURHUF.
Скрипт открывает BUY-позицию с TP = Bid. Т.е. позиция должна сразу закрыться. Но TP будет проверяться на соответствие условию акцептирования только на следующем тике!
Никакого мгновенного закрытия позиции не произойдет, пока не придет новый тик. Более того, если следующий у следующего тика будет Bid < TP, то TP так и останется без акцепта.
Это же касается и лимитных ордеров (закомментированная строка). В Тестере - аналогичная ситуация.
По выделенному нужно сказать, т.к. в предыдущем посте есть такое
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Symbol
fxsaber, 2018.04.06 09:21
2. Если счет хеджевый (присутствует слово Hedge в заголовке окна Терминала), зайти на любой неттинговый счет (например, MetaQuotes-Demo) и перезагрузить Терминал.
и не все заметят, что лимитные ордера по текущей цене на биржевых символах Неттинг-счетов будут исполняться (и в Тестере) сразу, не дожидаясь следующего тика.
Обратите внимание, важен не просто биржевой символ, но и неттинговый счет. Например, можно взять MOEX-символ на Hedge-MQ-Demo, но он не будет исполняться так (и в Тестере), как на том же Netting-MQ-Demo.
Это одна из причин, почему бэктесты на тех же полностью идентичных MOEX-символах могут отличаться, в зависимости от типа счета.
ЗЫ Сам с собой разговариваю...
ЗЫ Сам с собой разговариваю...
Да нет, просто дополнить нечего.
Жаль, что для реализации нормального срабатывания ордеров нужно плясать с бубнами.
Жаль, что для реализации нормального срабатывания ордеров нужно плясать с бубнами.
Изменил инструкцию, значительно упростив пляски. Например, на неттинге все делается в одно нажатие - запуск скрипта.
Применил простой фильтр к реальным тикам, который выбрасывает > 90% информации в самом легком варианте. Чем сильнее фильтр, тем грубее результат бэктеста.
Но было интересно, как самый слабый фильтр влияет на результат и скорость.
Качество.
Было
Стало
Скорость
Было
Стало
Итог
По реальным тикам количество тиков уменьшилось в 16 раз (самый легкий фильтр), скорость Оптимизации выросла в 14 раз, качество не пострадало совсем (анализ, что сюда не вошел). Конечно, подобное можно проделать только при написании ТС определенным образом. В частности, с отсутствием анализа баров.
Предыдущее бесплатное универсальное ускорение давало рост лишь в два раза. Текущее - тоже бесплатное (качество не страдает), но менее универсальное. Однако, отдача более, чем на порядок. Теперь Оптимизирую ТС только так. Не ошибся.
ЗЫ
Заодно короткая проверка и этой реализации (всего лишь баровый спред посчитал иначе)
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Скрипты: ThirdPartyTicks
Automated-Trading, 2018.03.16 09:35
Баровая история создается с учетом минимальных потерь качества при переходе от режима тестирования "Каждый тик на основе реальных тиков" к "Только цены открытия" - ТС на лимитных ордерах;
Сравниваются два режима: "Все тики" и "OHLC M1".
Все тики
OHLC M1
Качество бэктеста одинаковое, производительность второго варианта в одиночном прогоне в 12 раз выше.
Для не программиста, эти скрипты нужно вписать в программу эксперта?
Очень заманчиво ускорить оптимизацию в 12 раз.
Будет ли такое ускорение при оптимизации по точкам открытия?
Для не программиста, эти скрипты нужно вписать в программу эксперта?
Очень заманчиво ускорить оптимизацию в 12 раз.
Будет ли такое ускорение при оптимизации по точкам открытия?
К сожалению, очень тяжело объяснить все стороны этого процесса. Это тянет на статью, наверное. Поэтому доходчиво и кратко рассказать не получится.