Доброго времени суток, уважаемое сообщество! Хочу поделиться с вами своей разработкой. Во время своего знакомства с биржевой торговлей (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. Если возникнет интерес в дальнейшей совместной разработке (добавить индикаторы, расширенную статистику/методы оптимизации, прикрутить тестер МТС), буду рад сотрудничеству.
kaliostro, честно, не совсем понял, вы имеете ввиду что-то наподобие моста, или совместимость котировок?
я видел в доступе Metatrader Api для .Net, планирую поизучать, пока времени ознакомиться еще не было
Kontores, Посмотрел плотнее, я б поюзал, и, наверно, поюзаю.
До полного счастья мне не хватило:
1. Не смог свечи сильно ужать — остаются толстыми, что далеко от настроек моих обычных графиков.
2. Настройки некоторые нельзя задать до нажатия на Старт — это странно.
3. Наличие и направление позиции я бы выводил более явным образом, чтобы можно было четко видеть и наличие и направление боковым зрением — сейчас приходится присматриваться.
4. Про более широкие настройки скорости писал.
5. Цвет фона графика я б по менял — на мой вкус не сильно приятный цен — цвет фона блока справа «Current Perfomance» — поприятней будет, например.
6. И такой момент, если практиковать многократные запуски, то в какой-то момент наступит проблема, что ты стартуешь всегда с одного места и никогда не доходишь до некоторых мест — минусы подобного понятны. Я б сделал возможность рандомно выбирать из выбранного датасета точку старта и с нее запускать. Тоже можно сделать галочку рандомный/не рандомный старт.
И будет огонь!))