
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Уже все готово, и пора связывать нашу 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.
.
Код MQL тоже в аттачменте. - MQL читает историю, и передает ее приложению Python. Питон принимает и печатает. В Питоне не забудьте нажать кнопку Start. )
Надеюсь комментарии к коду MQL писать не надо - есть справка.) Да, передача данных из МТ сделана по таймеру - мне, на данном этапе, так удобней.
А я пока приостановлюсь - теперь надо решить вопросы со стратегией. Если будут предложения - рассмотрим.)
В который раз повторюсь: файловый обмен идеален при разработке и отладке стратегии, т.к. не требует никаких усилий для модификации. Для большинства реальных стратегий он подходит и в дальнейшем. Но, если потребуется, мы всегда можем заменить его на что-то другое, без каких-либо существенных изменений программы - вопрос 1-2 дней.
Не обещал писать часто, только по мере поступления. Проект делается в фоновом режиме, ни шатко - ни валко, в свободное от других дел время.
Подумал, что для системы неплохо было бы отображать графики
Вообще, Python простой язык - пару дней на изучение вполне хватает. Вот разобраться с модулями куда сложнее - их неск тысяч, и кто-что делает и зачем нужен далеко не всегда очевидно. С графиками, так и случилось - разбираться пришлось долго. Но в результате получилось вот что:
Программа читает файл CSV и строит график.
График отображает цены по Close, порядка 50 тыс свечей.
Если нажать на лупу и выделить прямоугольник в области графика - вот так:
то можно увеличить масштаб графика, и получим:
Это можно проделывать многократно. График можно также перемещать и сохранять как картинку, и естественно, расширить на полный экран.
Все необходимые файлы в приложении. Распаковываем zip в какую-либо папку и запускаем на исполнение файл CSVGraph.py
Перед запуском не забудьте выяснить, установлены ли импортируемые программой модули.
Оставим глупости соседям и резонерам-любителям, сами-же подведем предварительные итоги.
Если вы уже разобрались в теме, то вы уже в некоторой степени владеете 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.
Возможно профи мой выбор и не устроит.
Нужные индикаторы уже все готовы. См. рисунок сделанный в Python (В Python оч удобно и быстро рисовать всяческие графики.). Это отклик на единичный скачок - 1(t), или переходная функция. Вообще-то, один из стандартных тестов.
fm - обычное скользящее среднее (служит исключительно для калибровки), f1 - ЕМА, с измененным расчетом коэффициентов и f2 - нестандартный индикатор.
Однако, как говорил наш общий знакомый:
ну я мильён раз говорил и наверное еще раз столько же повторю... лучше индикаторов из поставки МТ (стандартные... так сказать старославянские индикаторы... языческие!!!) ничего никто и не придумал.
Поэтому, чтобы не дурить вам голову наукообразием, вы получите стандартную ЕМА и исходники стратегии. Однако, я буду делать и тестировать стратегию на своих индикаторах. Возможно, я еще что-нибудь скрою от посторонних глаз, но без потери функциональности.
Однако не ради пересечения ЕМА все это затевается. Цель всего этого - стратегии с машинным обучением. Пока провожу тестирование различных методов классификации. И вот результаты теста:
Пока в лучших Гаусс, RBF SVM, Нейросети и наивная Байесовская классификация. Программа на Python уже готовая, есть где-то в инете, но подготовка данных за пользователем.
Поехали.
Нужные индикаторы уже все готовы. См. рисунок сделанный в Python (В Python оч удобно и быстро рисовать всяческие графики.). Это отклик на единичный скачок - 1(t), или переходная функция. Вообще-то, один из стандартных тестов.
fm - обычное скользящее среднее (служит исключительно для калибровки), f1 - ЕМА, с измененным расчетом коэффициентов и f2 - нестандартный индикатор.
Однако, как говорил наш общий знакомый:
Поэтому, чтобы не дурить вам голову наукообразием, вы получите стандартную ЕМА и исходники стратегии. Однако, я буду делать и тестировать стратегию на своих индикаторах. Возможно, я еще что-нибудь скрою от посторонних глаз, но без потери функциональности.
Однако не ради пересечения ЕМА все это затевается. Цель всего этого - стратегии с машинным обучением. Пока провожу тестирование различных методов классификации. И вот результаты теста:
Пока в лучших Гаусс, RBF SVM, Нейросети и наивная Байесовская классификация. Программа на Python уже готовая, есть где-то в инете, но подготовка данных за пользователем.
Поехали.
Жаль что перешли на нейросети. А в основном очень полезно, думаю пригодится.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Машинное обучение роботов
Yuriy Asaulenko, 2018.09.21 00:45
Не смогут. Максимум, что будет, это все та-же подгонка под историю.
Жаль что перешли на нейросети. А в основном очень полезно, думаю пригодится.
На НС и прочие методы МО в этой теме переходить не планируется. Пока, по крайней мере.) Там видно будет.
Здесь делается шаблон системы на Python. Конкретное наполнение этого шаблона - это дело конкретного пользователя.
Ну, а показать при случае возможности библиотек Python, думаю, не лишнее.
При запуске программы, производится тестирование стратегии, отчет о всех сделках сохраняется в файле CSV, на консоль выводится график прибыли, который можно сохранить на диске - см. Рис.