
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я о том что интеграция питон с МТ5 не полная. Нельзя НАПРЯМУЮ получить значения индикаторов
Чтение данных на питон
Цели топика просты как пять копеек: позволить всем желающим начать алгоритмическую торговлю на Python, просто скопировав кусочки кода типа инициализации связи с терминалом, запроса котировок, запроса на сервер об открытии или закрытии сделки, и т.д. и т.п. Сосредоточиться на логике только, притом на чрезвычайно удобном для этого языке.
ну да... логики как раз и не хватает для алгоритмической торговли - логики, что тестировать торговую стратегию нужно, прежде чем "всем желающим" вставлять кусочки кода и лезть в реальную торговлю
ну все равно удачи с Вашими "немифическими" целями
)))
Люди, которым не нужно, чтобы цены сохранялись в файлы, чуть перепишут код, и сделают не "запись в файлы - чтение из файлов", а просто сразу нужную им структуру данных. Здесь во многом просто показ примитивных вещей, для желающих сделать первые шаги.
Однако, уже познакомившихся с такими понятиями как списки, кортежи, словари, и т.д.
Предлагаю чтение из файлов цен осуществлять функцией read_all_files_with_prices , которая будет задействовать функцию read_file_with_prices для чтения файла с ценами каждого инструмента.Пусть функция read_file_with_prices возвращает или массив numpy.ndarray со строками и столбцами, соответствующими исходному файлу цен (если цены успешно прочитались и прошли проверку на целостность данных, тип каждого элемента numpy.float64), или строку ‘no data’, если данные не прочитались, или неполны.
Функция read_all_files_with_prices пусть возвращает словарь с котировками по всем инструментам. Пусть в этом словаре ключи - наименования инструментов, значения - словари с котировками по одному соответствующему инструменту. В словарях с котировками по одному инструменту ключи - отсчёты даты-времени (класс date_time), значения - бары (класс bar), кроме того предлагаю предусмотреть ключи :
'is_data': значение по ключу - True, если котировки в наличии, False - если функция чтения из файла вернула 'no data',
'instrument': значение по ключу - инструмент (str);
'prices': значение по ключу - массив цен по инструменту (numpy.ndarray)
Короче, такую структуру данных предлагаю:
код на Python лучше помещать в виде скриншотов из IDE/редактора/сайта.
местное отсутствие подсветки по крайней мере комментариев кода, делает его слабо-читаемым, он сливается с основным текстом.
Добавил функции для чтения файлов и создания указанной выше структуры данных:
код на Python лучше помещать в виде скриншотов из IDE/редактора/сайта.
местное отсутствие подсветки по крайней мере комментариев кода, делает его слабо-читаемым, он сливается с основным текстом.
Зато его можно скопировать, и открыть в IDE, а с картинки - перенабирать вручную разве что...
Работа показанной выше программы:
В принципе почти всё готово к тому, чтобы начать анализ данных, принятие и выполнение торговых решений.
Зато его можно скопировать, и открыть в IDE, а с картинки - перенабирать вручную разве что...
вряд-ли кто будет заморачиваться с копи-пастой кода..он никому тут не нужен
прочесть и обсудить да. Подчерпнуть что-нить любопытное или чего подсказать. А таскать в IDE уже вряд-ли. На форуме публикуют ради чтения другими, а для использования код либо аттачат, либо ссылку в репозитарий (или совмещают)
но это отвлечённо.
Поместим в файл Functions.py следующий код, функцию, вычисляющую SMA
Параметры d и k мне нужны для осуществления сдвига по времени, не суть, будем задавать их равными нулям.
Придумаю какую-нибудь простую дебильную логику, типа:
для каждого инструмента вычисляем SMA, запаздывающую на z=100 интервалов между отсчётами, то есть SMA порядка s=1+2*z=201.
Если в рынке нет сделок, или количество их (по конкретному инструменту) меньше, чем допустимое количество (отдельно по Sell, и отдельно по Buy), то:
если цена в текущий момент выше SMA(201) на 30 или более пипс - открыть сделку на продажу, с SL=TP=50 пипс,
если цена в текущий момент ниже SMA(201) на 30 или более пипс - открыть сделку на покупку, с SL=TP=50 пипс.
Если в какой-то момент прибыль по сделке достигла 20 пипс - закрыть её, не дожидаясь закрытия по SL или TP.
Реализуем для примера такую торговлю. Просто, глупо, с точки зрения трейдинга, но суть дела в реализации.
Предлагаю такие функции для открытия и для закрытия сделок: