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

 

Уже все готово, и пора связывать нашу Python ТС с терминалом МТ. Однако, для этого следует предпринять некоторые действия.

Наша будущая ТС читает и будет писать файлы в папку C:\PyTS, а вот терминал МТ, по неведомой прихоти MQ, может читать-писать файлы только в свою директорию - С:\<оч. много букв и цифр>\Files, и никак иначе. Вы, конечно, можете изменить настройки в коде Python, и пусть обменивается в родной папке МТ, но мне надо, чтобы терминал читал-писал файлы оттуда и туда, куда мне надо, а не туда, куда ему, терминалу, приспичило. Тем более, это будет необходимо в будущем.

На самом деле, этот вопрос решен еще пару лет назад, в моей теме - https://www.mql5.com/ru/forum/79922.

Все решается средствами Windows. В папку терминала С:\<оч. много букв и цифр>\Files помещается ссылка на папку C:\PyTS, которая воспринимается терминалом (да и ОС тоже) как вложенная папка Files\PyTS, и терминал пишет туда, на C:\PyTS, как в свою родную.)

Делается это в командной строке, с помощью родной Windows-утилиты MKLINK. Для тех, кто сам не справится - подробное описание:

Набираем в выполнить - cmd, или из меню - Служебные-Windows -> Командная строка. Получим окно, в кот. набираем MKLINK or mklink. Имеем:


Теперь набираем несколько раз cd.. до тех пор пока в строке не будет C:\

Теперь оькрываем проводник, и заходим в папку C:\<оч. много букв и цифр>\Files, в кот терминал пишет файлы, и выделяем и копируем  путь к папке Ctrl-Ins.

Идем обратно в окно командной строки и там пишем cd <пробел>, с помощью Shift-Ins вставляем путь к папке ... \Files, и Enter. Получим:

Теперь в командной строке пишем - mklink /D PyTS c:\PyTS , и, как обычно - Enter. Получим:

Видим, что ссылка создана. Смотрим, что она появилась в папке ......\Files и заходим в нее - видим файлы из папки C:\PyTS. )) Все.

Теперь, все файлы, записываемые терминалом в папку  ...Files\PyTS, будут, на самом деле, записываться в папку  C:\PyTS.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
Итак, с файловым обменом покончено. Все работает, все исходники в аттачменте. Все остальное, и обратная передача от Питон к МТ, делается так-же, и, я надеюсь, не вызовет никаких проблем. Для запуска прочитайте и выполните мой предыдущий пост. Иначе, никак.))

Код MQL тоже в аттачменте. - MQL читает историю, и передает ее приложению Python. Питон принимает и печатает. В Питоне не забудьте нажать кнопку Start. )

Надеюсь комментарии к коду MQL писать не надо - есть справка.) Да, передача данных из МТ сделана по таймеру - мне, на данном этапе, так удобней.

Если возникнут вопросы, звоните.)

А я пока приостановлюсь - теперь надо решить вопросы со стратегией. Если будут предложения - рассмотрим.)

В который раз повторюсь: файловый обмен идеален при разработке и отладке стратегии, т.к. не требует никаких усилий для модификации. Для большинства реальных стратегий он подходит и в дальнейшем. Но, если потребуется, мы всегда можем заменить его на что-то другое, без каких-либо существенных изменений программы - вопрос 1-2 дней.

Файлы:
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

Не обещал писать часто, только по мере поступления. Проект делается в фоновом режиме, ни шатко - ни валко, в свободное от других дел время.

Подумал, что для системы неплохо было бы отображать графики

Вообще, Python простой язык - пару дней на изучение вполне хватает. Вот разобраться с модулями куда сложнее - их неск тысяч, и кто-что делает и зачем нужен далеко не всегда очевидно.  С графиками, так и случилось - разбираться пришлось долго. Но в результате получилось вот что:

Программа читает файл CSV и строит график.

График отображает цены по Close, порядка 50 тыс свечей.

Если нажать на лупу и выделить прямоугольник в области графика - вот так:

то можно увеличить масштаб графика, и получим:

Это можно проделывать многократно. График можно также перемещать и сохранять как картинку, и естественно, расширить на полный экран.

Все необходимые файлы в приложении. Распаковываем zip в какую-либо папку и запускаем на исполнение файл CSVGraph.py

Перед запуском не забудьте выяснить, установлены ли импортируемые программой модули.

Файлы:
CSVGraph.zip  582 kb
 
Как упражнение в освоении ПИтона - возможно. Но с практической точки зрения малополезно + потеря времени. Конечно у каждого свой путь. Удачи
 

Оставим глупости соседям и резонерам-любителям, сами-же подведем предварительные итоги.

Если вы уже разобрались в теме, то вы уже в некоторой степени владеете Python, знаете как работать с CSV-файлами, умеете строить графики и обмениваться данными с терминалом. Этого уже вполне достаточно, чтобы разрабатывать, моделировать и тестировать торговые стратегии. Если ваши стратегии работают с ТФ 1 мин и более не используя тики и обращаются к терминалу с интервалом где-то 5-10 с, то вы уже можете делать рабочие стратегии непосредственно на Phyton, оставляя терминалу только поставку данных и "исполнение" ваших заявок.

Кроме того, вы уже владеете программированием и средой Phyton, на уровне, превышающем возможности языка и среды R, так популярной у местных апологетов машинного обучения. Вы уже сейчас сможете строить на Python даже оч сложные индикаторные стратегии, однако все возможности Python (аналогично как и R) могут быть реализованы с использованием модулей. В теме мы использовали лишь 3 модуля - tkinter, numpy и matplotlib.

Теперь, что нужно Python для построения более продвинутых стратегий, скажем, с использованием машинного обучения. Для этого можно использовать модуль -scikit-learn. С использованием   scikit-learn становятся доступными следующие возможности - Руководство пользователя. Как вам набор методов? - тут уже есть практически все, включая, небезысвестные по R и теме "Машинное обучение" методы, - от байесовской классификации до случайных лесов и нейросетей.

Это только один из модулей машинного обучения в Python, а их около десятка. Говорят, что модуль scikit-learn не самый лучший из них, и не самый продвинутый. Это уж, кому что требуется. Остальные нетрудно найти в интернете.


PS Для тех кто начинает или только собирается начать работу с Python.

Я пробовал несколько сред разработки Python и остановился, как на наиболее удобной для начинающих (к коим и себя отношу) - Anaconda. Здесь удобно то, что все нужное устанавливается уже в комплекте, включая Python. Редактор использую Spyder - устанавливается вместе с Anaconda.  Советую также установить редактор VSCode - тоже оч неплох и устанавливается непосредственно из Anaconda.

Возможно профи мой выбор и не устроит.

 
После 4-х страниц темы, наконец мы готовы, чтобы перейти к заявленному - стратегии на Python. Для этого все уже сделано.
Начнем мы с простенькой стратегии - торговля на пересечении ЕМА, возможно с модификациями.
Когда я осваивал нейросети (НС), то начал с простой задачи - НС должна была определить точки пересечиния ЕМА. Задача, с практической точки зрения, абсолютно бесполезная, однако это позволило определиться, каким образом подавать на НС рыночные данные, как их готовить, и решило многие вопросы обучения.
Сейчас перед нами задача, вовсе не получение прибыли, и даже не связь с терминалом - это просто, но без прибыльной стратегии бессмысленно. Сейчас наша задача - создать шаблон стратегии, и научиться ее тестировать, и для этого подойдет любая стратегия. Дальше, пихай в шаблон любую, тестируй, и если что получится, то тогда можно заняться и конкретной торговлей через терминал.

Нужные индикаторы уже все готовы. См. рисунок сделанный в Python (В Python оч удобно и быстро рисовать всяческие графики.). Это отклик на единичный скачок - 1(t), или переходная функция. Вообще-то, один из стандартных тестов. 


fm - обычное скользящее среднее (служит исключительно для калибровки), f1 - ЕМА, с измененным расчетом коэффициентов и f2 - нестандартный индикатор.

Однако, как говорил наш общий знакомый:

Igor Makanu:

ну я мильён раз говорил и наверное еще раз столько же повторю... лучше индикаторов из поставки МТ (стандартные... так сказать старославянские индикаторы... языческие!!!) ничего никто и не придумал.

Поэтому, чтобы не дурить вам голову наукообразием, вы получите стандартную ЕМА и исходники стратегии. Однако, я буду делать и тестировать стратегию на своих индикаторах. Возможно, я еще что-нибудь скрою от посторонних глаз, но без потери функциональности.

Однако не ради пересечения ЕМА все это затевается. Цель всего этого - стратегии с машинным обучением. Пока провожу тестирование различных методов классификации. И вот результаты теста:

Пока в лучших Гаусс, RBF SVM, Нейросети и наивная Байесовская классификация. Программа на Python уже готовая, есть где-то в инете, но подготовка данных за пользователем.

Поехали.

 
Yuriy Asaulenko:
После 4-х страниц темы, наконец мы готовы, чтобы перейти к заявленному - стратегии на Python. Для этого все уже сделано.
Начнем мы с простенькой стратегии - торговля на пересечении ЕМА, возможно с модификациями.
Когда я осваивал нейросети (НС), то начал с простой задачи - НС должна была определить точки пересечиния ЕМА. Задача, с практической точки зрения, абсолютно бесполезная, однако это позволило определиться, каким образом подавать на НС рыночные данные, как их готовить, и решило многие вопросы обучения.
Сейчас перед нами задача, вовсе не получение прибыли, и даже не связь с терминалом - это просто, но без прибыльной стратегии бессмысленно. Сейчас наша задача - создать шаблон стратегии, и научиться ее тестировать, и для этого подойдет любая стратегия. Дальше, пихай в шаблон любую, тестируй, и если что получится, то тогда можно заняться и конкретной торговлей через терминал.

Нужные индикаторы уже все готовы. См. рисунок сделанный в Python (В Python оч удобно и быстро рисовать всяческие графики.). Это отклик на единичный скачок - 1(t), или переходная функция. Вообще-то, один из стандартных тестов. 


fm - обычное скользящее среднее (служит исключительно для калибровки), f1 - ЕМА, с измененным расчетом коэффициентов и f2 - нестандартный индикатор.

Однако, как говорил наш общий знакомый:

Поэтому, чтобы не дурить вам голову наукообразием, вы получите стандартную ЕМА и исходники стратегии. Однако, я буду делать и тестировать стратегию на своих индикаторах. Возможно, я еще что-нибудь скрою от посторонних глаз, но без потери функциональности.

Однако не ради пересечения ЕМА все это затевается. Цель всего этого - стратегии с машинным обучением. Пока провожу тестирование различных методов классификации. И вот результаты теста:

Пока в лучших Гаусс, RBF SVM, Нейросети и наивная Байесовская классификация. Программа на Python уже готовая, есть где-то в инете, но подготовка данных за пользователем.

Поехали.


Жаль что перешли на нейросети. А в основном очень полезно, думаю пригодится.

 
Sergey Chalyshev:


Жаль что перешли на нейросети. А в основном очень полезно, думаю пригодится.

На НС и прочие методы МО в этой теме переходить не планируется. Пока, по крайней мере.) Там видно будет.

Здесь делается шаблон системы на Python. Конкретное наполнение этого шаблона - это дело конкретного пользователя.

Ну, а показать при случае возможности библиотек Python, думаю, не лишнее.

 
PS Да, не сказал, все стратегии я буду делать для ФОРТС (МОЕХ). С форекс ДЦ не играю.
 
Продолжим наши игры. На сегодняшний день у нас готовы и функционируют:
2. Шаблон стратегии.
3. В шаблон помещена простая стратегия на пересечении ЕМА.

При запуске программы, производится тестирование стратегии, отчет о всех сделках сохраняется в файле CSV, на консоль выводится график прибыли, который можно сохранить на диске - см. Рис.


Тестирование проводилось на фьючерсе SBER МОЕХ - интервал 3 мес, ТФ - 1 м, всего ~55000 свечей. В стратегии использовались только значения close свечей. Продолжительность тестирования ~1 мин, начиная с запуска программы. Это около 1мс на свечу.
Папка со всеми необходимыми файлами программы, включая историю по фьючерсу SBER - см. аттачмент.
Для запуска программы - запустить на исполнение файл main.py. Перед запуском убедитесь, что в вашем Python установлены все необходимые пакеты и модули. Если вы работаете в Anaconda, все необходимые пакеты-модули уже установлены.
В общем, пишите в шаблон свою стратегию, и тестируйте.
Теперь, как я себе представляю применение этой технологии.
Было решено перевести на платформу Python проверенную стратегию использующую нейросети, возможно с небольшим апгрейдом. Этим удастся с минимальными затратами освоить применение имеющихся в Python технологий ML, подключить систему к терминалу и начать непосредственно эксплуатацию. Т.к. для меня основной площадкой является МОЕХ, а Форекс носит вспомогательный характер, то в обозримом будущем подключение системы к терминалу МТ не планируется, хотя и предполагалось в начале темы как вариант для отработки.
Однако, на форуме достаточно специалистов, которые, при наличии желания, могут это сделать. Тем более, что C API Python гораздо проще С API того-же R, с которым местные специалисты успешно справились.
Можно считать, что задачи темы полностью выполнены.
 
Файлы:
Public.zip  683 kb
Причина обращения: