Делаем торговую систему на Python для МТ.

 
Возникла мысль написать торговую систему на Python, и коли уж возникла, почему-бы не сделать эту систему общедоступной. Возможно, кроме меня это тоже кому-нибудь будет интересно.
Но почему на Python? 
- Это сложный вопрос, имеющий множество аспектов. Попробую ответить.
Исторически сложилось, что у меня на компе установлены четыре терминала. Какие-то из них с полноценным API, какие-то со своими нестандартными языками, какие-то и с тем и с другим.
Первым, в далеком 2008 г. был установлен терминал с API - под него и делались первые системы, которые, в конечном итоге, пришли к языкам С++/C#. При добавлении следующих терминалов (с языками и без них) система не переделывалась, а лишь только разрабатывался новый интерфейс между терминалом и системой. Таким образом, система унифицирована, и чтобы работать с другим терминалом достаточно подключить нужный интерфейс. В простейшем варианте, это занимает не более одного дня. И переделывать систему под конкретный терминал никакого желания не возникает.
Терминал - это только поставщик данных и исполнитель заявок. Все - больше от него ничего не требуется.
Вот такая идеология системы.
Но это только один аспект. Другие в следующих постах. Не обещаю писать часто.
 
На Питоне хз кто хочет. У меня в планах через месяца 3 портировать некоторые вещи на Java. Я об этом думаю. А на питоне я вообще не встречал даже API каких-либо брокеров. Хотя,.. может такие и есть, конечно.
 
Да, но почему, все-таки Python?
Собственно, Python заинтересовал меня наличием массы библиотек (модулей), в том числе для Machine Learning (машинное обучение или МО), чем я последний год и занимаюсь. Однако с Питоном не работал - пока не написал ни строчки.) Ну, что-то абстрактное пробовал, но без конкретных целей.
Однако, для того, чтобы конкретно применить Питон в торговых системах нужно, для начала, отладить его взаимодействие как с ТС, так и с терминалом.
Вызов функций Питон из MQL через DLL я считаю неправильным - чтобы таким образом вызвать функцию Питон, надо запустить интерпретатор, и уже через него вызвать функцию - и так при каждом вызове - это оч долго.
У меня другая концепция: ТС - это полноценное ЕХЕ приложение, хранящеее в себе все предыдущие данные и необходимую историю. Таким образом мы вызываем только функцию из уже работающего приложения - время вызова минимально.
Некоторые говорят-пишут, что Питон оч медленный. Это не так. Для большинства систем (даже интрадей) быстродействия Питон с избытком хватает, и мы в этом убедимся в дальнейшем. Что касается HFT, то конкурировать с ними мы не сможем на любых скоростях - это другие деньги.) И другие спреды.)
 
Viktar Dzemikhau:
На Питоне хз кто хочет. У меня в планах через месяца 3 портировать некоторые вещи на Java. Я об этом думаю. А на питоне я вообще не встречал даже API каких-либо брокеров. Хотя,.. может такие и есть, конечно.

Погодите, сделаем и API. В этой теме. Не все сразу.) Если интерес будет, со стороны форума.

ИМХО, Java не вариант. Могу ошибаться.

 
Konstantin Nikitin:
Как вариант можно писать C++ используя QT. Из преимуществ то, что можно сразу писать под кросс платформенную компиляцию.

Я согласен. Но замысел в этой теме - Python и использование его библиотек (модулей). А получим мы, в итоге, кроссплатформенное (кросстерминальное) API. Для любого языка программирования.

Но, в общем, для большинства ТС Питона с лихвой достаточно. А интерфейс написать между ТС и любым терминалом - ну, максимум 1 день.

Но, не сразу, в зависимости от свободного времени. На регулярной основе ничего не обещаю.

 
Интерпретатор Питон запускается один раз, потом можно пользоваться им в советнике или индикаторе. Все уже сделано и есть на форуме. Есть тема о машинном обучение. Пользуйтесь https://github.com/RandomKori/Py36MT5
 
Grigoriy Chaunin:
Интерпретатор Питон запускается один раз, потом можно пользоваться им в советнике или индикаторе. Все уже сделано и есть на форуме. Есть тема о машинном обучение. Пользуйтесь https://github.com/RandomKori/Py36MT5

Да, спасибо. Но идея другая. Для реализации нужно полноценное приложение - ЕХЕ. Но что-то возможно пригодится. Жаль исходники ДЛЛ отсутствуют, но не критично.

 
Там все исходники выложены.
 
Grigoriy Chaunin:
Там все исходники выложены.

Да, действительно, весь проект ДЛЛ в VS. Недокопал.

А в теме МО эту ссылку как-то пропустил.

Но, нормальные герои всегда идут в обход (с). И мы пойдем своим путем.) В этой теме другие задачи.

 

Начнем с создания приложения на Python, которое в дальнейшем будет обмениваться данными с терминалом - принимать  данные из терминала и выводить их в окно вывода, а также передавать данные в терминал из окна SendData. Это понадобится для отработки взаимодействия ТС с терминалом.

Пока никаких функций приложение не выполняет.

Получилось вот такое окно.

Код Python в аттачменте.

Файлы:
PyTS.txt  2 kb
 
Yuriy Asaulenko:

Начнем с создания приложения на Python, которое в дальнейшем будет обмениваться данными с терминалом - принимать  данные из терминала и выводить их в окно вывода, а также передавать данные в терминал из окна SendData. Это понадобится для отработки взаимодействия ТС с терминалом.

Пока никаких функций приложение не выполняет.

Получилось вот такое окно.

Код Python в аттачменте.

Где комментарии в коде? Вы думаете все здесь понимают питон и ваши задумки, комментарии будут излишними?

Что за кракозябры """ Окно ввода """ ?

Что за библиотека import tkinter, где описание её функций(методов)?


Причина обращения: