Блог им. Imperium-Finance

Торговый симулятор

Доброго времени суток, уважаемое сообщество! Хочу поделиться с вами своей разработкой. Во время своего знакомства с биржевой торговлей (2010 год), пытаясь создать некоторое подобие торговой системы, я столкнулся почти с полным отсутствием программ-симуляторов для ручной торговли. В наличии был только скрипт для metatrader, позволявший вручную вносить ордеры. Хотя в настоящее время работаю исключительно с механическими системами, полагаю, что вопрос ручного тестирования может быть актуален для многих участников торгов, особенно, если возникает необходимость проверить какую-либо неокончательно формализованную идею, а также в случае, когда критерии изначально трудно описать машинным языком. 
Специально для подобного рода тестов я написал программу, симулирующую торговлю на исторических котировках. Интерфейс приложения выглядит следующим образом:

Торговый симулятор

Перед началом работы необходимо загрузить котировки в формате csv или txt в папку Quotes приложения. Программа считывает котировки следующего формата:
Date (dd/mm/yyyy), time (hh:mm), open, high, low, close

Например:

19/09/2011,00:50:00,1216.01,1216.01,1216.01,1216.01,1
19/09/2011,00:55:00,1216.01,1216.01,1216.01,1216.01,0
19/09/2011,01:00:00,1216.01,1216.01,1216.01,1216.01,0
19/09/2011,01:05:00,1216.01,1216.01,1216.01,1216.01,0

В случае, если формат котировок отличается от вышеописанного, строки необходимо привести в соответствие.

После загрузки котировок их можно увидеть в списке Quotes в меню программы. Выбрав нужный файл, Вы увидите график на экране. 
Для начала симуляции необходимо нажать кнопку «Start». После того, как процесс имитации торговли начат, есть два способа обновления цен на экране: ручной, путем клика по кнопке «Next», каждое нажатие которой продвинет график на одну свечу вперед, а также автоматический (при включенной опции «Auto Scroll»). В автоматическом режиме можно выбрать скорость обновления графика. 

Масштаб графика можно изменять, увеличивая или уменьшая количество свечей на экране. Масштаб будет увеличен, если с момента начала прошло достаточно свечей для отображения.

Программа имитирует вход/закрытие позиции рыночными ордерами (кнопки «Buy» & «Sell»), а также вход отложенным стоп и лимит приказом (для этого необходимо снять галочку «At market» и вписать цену входа). Также поддерживается имитация stop-loss и take-profit ордеров.

По окончании симуляции (кнопка «Finish») приложение представляет развернутую статистику торговли на вкладке Performance.

Торговый симулятор

Можно ознакомиться с основными показателями эффективности торговой методики, такими как profit-factor, winnig percent, max. drawdown и др. Также выводится график прироста капитала (Equity) в соотношении с изменением цены актива за аналогичный промежуток времени.

Помимо этого, можно оценить наличие/отсутствие фактора сезонности в совершенных сделках (вкладка Seasonals):

На данном экране показано распределение чистой прибыли по месяцам, числам месяца и дням недели. 

Торговый симулятор

Каждая совершенная сделка записывается в журнал трейдов, посмотреть который можно на вкладке Trades. При необходимости, данные можно скопировать для переноса в Excel или аналогичную программу.

Приложение полностью бесплатное/без рекламы, не требует установки, необходимо лишь наличие .Net Framework версии 4.5.2.

Скачать можно по ссылке www.sourceforge.net/projects/trading-simulator/

Вместе с программой приложен пример используемого формата котировок.

Просьба сообщить в случае обнаружения багов/сбоев в работе. 

P. S. Если возникнет интерес в дальнейшей совместной разработке (добавить индикаторы, расширенную статистику/методы оптимизации, прикрутить тестер МТС), буду рад сотрудничеству.


★5
10 комментариев
Спасибо за ваш труд, поясните- ваша программа работает совместно с МТ4 или МТ5?
avatar

kaliostro, честно, не совсем понял, вы имеете ввиду что-то наподобие моста, или совместимость котировок?

я видел в доступе Metatrader Api для .Net, планирую поизучать, пока времени ознакомиться еще не было

Да, полезная штука! Из комментов на основе поверхностного знакомства — по-моему самая медленная скорость все равно высоковата — я бы сделал больше предустановленных значений — можно циферками — от 0 до 10 или типа того.
avatar
Replikant_mih, окей, учту в обновлении, спасибо

Kontores, Посмотрел плотнее, я б поюзал, и, наверно, поюзаю.

До полного счастья мне не хватило:

1. Не смог свечи сильно ужать — остаются толстыми, что далеко от настроек моих обычных графиков.

2. Настройки некоторые нельзя задать до нажатия на Старт — это странно.

3. Наличие и направление позиции я бы выводил более явным образом, чтобы можно было четко видеть и наличие и направление боковым зрением — сейчас приходится присматриваться.

4. Про более широкие настройки скорости писал.
5. Цвет фона графика я б по менял — на мой вкус не сильно приятный цен — цвет фона блока справа «Current Perfomance» — поприятней будет, например.

6. И такой момент, если практиковать многократные запуски, то в какой-то момент наступит проблема, что ты стартуешь всегда с одного места и никогда не доходишь до некоторых мест — минусы подобного понятны. Я б сделал возможность рандомно выбирать из выбранного датасета точку старта и с нее запускать. Тоже можно сделать галочку рандомный/не рандомный старт.

 

И будет огонь!))

avatar
Replikant_mih, Хорошо, буду делать апдейт, добавлю расширенные настройки. Спасибо за развернутый ответ! А что нужно настроить до старта? 
Kontores, Нуу, скорость и настройки автоскролла заблокированы пока не стартанешь.
avatar
Replikant_mih, А, понял, но я так и предполагал, что скролл по умолчанию выключен, чтобы график сразу не полетел, если это не нужно. Можно включить, конечно.
Интересно, почему не засунули в смартлабовский раздел софт?  В любом случае, спасибо!
avatar
Glebajia, Я давно тут не был уже, не посмотрел, что есть такая категория) Рад, если окажется полезным!

теги блога Кирилл Конторез

....все тэги



UPDONW
Новый дизайн