Добрый день.
Некоторе время назад мы с другом (я пишу из под его аккаунта) интересовались темой торгов. Тогда мы разработали фреймворк для этих целей.
Что он позволяет:
1) Написание стратегий на Java/Scala. Это достаточно богатые высокоуровневые языки (по крайней мере по сравнению с языком того жэе метатрейдера), что позволяет проще писать сложную модульную логику.
2) Написание тестов — т.к. стратегия это просто стейт-машина реагирующая на внешние события, для нее можно написать юнит-тесты.
3) Торговля изолирована от стратегии т.н. «торговым бекендом», т.е. стратегия не знает о реальном способе осуществления торговли. Это позволяет, скажем, подменить торговый бекенд симулятором торгов.
4) Стратегия также изолирована от источников данных. Она видит просто источник событий, например тиков. Также стратегия может работать с несколькими источниками событий, то есть фактически есть простая возможность отслеживать несколько пар.
5) Стратегия также изолирована от системного таймера, что позволяет подменить таймер простым циклом. Это, вместе с пунктами 3 и 4 позволяет выполнять быстрые симуляции торговли на данных хранящихся локально (или даже выдуманных или генерируемых какими то алгоритмами).
6) Быстрые симуляции — для простой стратегии год торгов симулируется за несколько секунд.
7) Перебор параметров — есть механизм позволяющий перебирать параметры, т.е. запускать симуляции многократно с разными параметрами и сохранять логи тестовых прогонов для дальнейшего анализа.
8) Параллелизм — система изначально разрабатывалась с расчетом на параллельную симуляцию, каждый прогон подбора может быть запущен в отдельном процессе или даже на отдельной машине.
9) Интеграция с метатрейдером — для метатрейдера был написал плагин, который позволяет импортировать «тики» получаемые метатрейдером в качестве источника событий и использовать метатрейдер как тоговый бекенд. Т.е. фактически, можно управлять метатрейдером и торговать на любых площадках где есть его поддержка.
Сейчас тема торговли для нас не интересна и, вероятнее всего, не будет интересна в ближайшем будущем, поэтому мы делаем этот фреймворк доступным публично, бесплатно, под GPL v3 лицензией, в надежде что он будет кому то интересен и/или полезен.
Ссылка на гитхаб-репозиторий:
github.com/7ocb/forex-trade-and-analysis-framework
В случае если нужна будет какая то поддержка, со мной можно связаться через issues в репозитории.
github.com/search?l=Java&q=trading&type=Repositories&utf8=%E2%9C%93