Язык Python для трейдера.

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Язык Python для трейдера.

Сообщение Рэндом » 21 фев 2018, 03:09

Скрипт экспорта называется ExportTickForex. Двайте рассмотрим его работу.
Код: выделить все
//+------------------------------------------------------------------+
//|                                                  ExportTicks.mq5 |
//|                                                           Рэндом |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Рэндом"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input datetime Date=D'2016.10.21';

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

void OnStart()
  {
//---
   MqlTick t[];
   int rz=COPY_TICKS_ALL;
   CopyTicksRange(Symbol(),t,rz,(ulong)(Date*1000),(ulong)(TimeCurrent()*1000));
   int ot=FileOpen(Symbol()+"_Ticks.csv",FILE_WRITE|FILE_ANSI,",");
   string hdr="DateTime,Bid,Ask";
   FileWrite(ot,hdr);
   int limit=ArraySize(t);
   for(int i=0;i<limit;i++)
   {
      string dt=TimeToString((ulong)(t[i].time),TIME_DATE|TIME_SECONDS);
      int rep=StringReplace(dt,".","-");
      string d=dt+","+DoubleToString(t[i].bid,Digits())+","+DoubleToString(t[i].ask,Digits());
      FileWrite(ot,d);
   }
   FileClose(ot);
  }
//+------------------------------------------------------------------+

Данные сохраняются в текстовый файл в формате csv.
В скрипте интересны два момента. Загрузка тиковой истории и перевод даты в формат Питон.
В MQL5 все данные цен и индикаторов необходимо копировать в массив чтобы их использовать.
Это делает функция:
Код: выделить все
 int rz=COPY_TICKS_ALL;
 CopyTicksRange(Symbol(),t,rz,(ulong)(Date*1000),(ulong)(TimeCurrent()*1000));

Мы берем дату начала загрузки из входной переменной и загружаем данные до текущей даты и времени сервера. Обратите внимание что оба эти значения умножаются на 1000. Это связано с тем что функция копирования тиков использует дату и время в миллисекундах.
Код: выделить все
int rep=StringReplace(dt,".","-");

Эта операция приводит дату к виду принятому в Питон. Для этого достаточно заменить точки на минусы.
И последний момент. Из тиковой истории мы используем только цены Бид и Аск. Но Форексе как правило доступны только они. На других рынках доступны еще и данные о сделках (цена, объем и направление сделки).
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Язык Python для трейдера.

Сообщение Рэндом » 22 фев 2018, 03:34

Далее идет чтение данных средствами Питон. Для этого используется библиотека pandas. У этой библиотеки множество полезных функций, но нас сейчас интересует только чтение из csv файла. Чтене происходит в тип DataFrame. Это двумерная таблица.
Код:
Код: выделить все
import pandas as pd
import datetime

# Чтение тиковой истории форекс в таблицу pandas
def ReadTickBidAsk(name):
    rz=pd.read_csv(name,sep=',')
    rz['DateTime']=pd.to_datetime(rz['DateTime'])
return rz

Здесь следует прокомментировать строку:
Код: выделить все
rz['DateTime']=pd.to_datetime(rz['DateTime'])

При чтении из файла столбцу DateTime присваивается тип objrct, а эта операция переводит его в тип Питона DateTime.
Как видите код получился предельно простой.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Язык Python для трейдера.

Сообщение Рэндом » 23 фев 2018, 04:34

Занимаюсь тестером. В принципе я его написал. Осталось добавить подсчет профита и отладить. Вот отладить самое сложное. Как закончу работу над ним, так продолжу тему. Желающие могут посмотреть код тестера на Гитхаб.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Язык Python для трейдера.

Сообщение Рэндом » 25 фев 2018, 21:16

На выходных я нашел программу которая быстро позволяет проверить на что способно генетическое программирование. Ссылку на программу не выкладываю и вот почему, результаты нулевые. Генетическое программирование плохо применимо в трейдинге. Новых идей пока нет. Я уже начинаю сомневаться в том что создать систему с использованием математики возможно. Т.е. создание системы это смесь опыта и изобретательности.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Язык Python для трейдера.

Сообщение Haos » 31 авг 2018, 07:29

Да, я тоже наткнулся на то, что серьезные расчеты для трейдинга проводятся через Питон. Многие статистические критерии так рассчитываются. Возможно, нужно начинать осваивать этот язык. Я так понял, самая большая проблема это слабая автоматизация доступа к истории котировок?
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Язык Python для трейдера.

Сообщение Рэндом » 31 авг 2018, 07:56

При статистическом анализе реалтайм котировки не нужны. Достаточно исторических данных. Можно воспользоваться штатной функцией сохранения и легко их загрузить в Питон. Буквально две строчки кода. Я советую установить Анаконду. Это продвинутая сборка Питона. Я вот ума не приложу как анализировать данные. Даже не понимаю в каком направлении двигаться. Возможностей в Питоне очень много. Но нет понимания что использовать и что мне это даст. И еще, язык Питон это простой язык. Его просто выучить. Его обычно используют для обучения программированию.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Язык Python для трейдера.

Сообщение Рэндом » 31 авг 2018, 07:58

Кстати любой скрипт экспорта из МТ пишится за 15 минут. Максимум пол часа.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Язык Python для трейдера.

Сообщение Haos » 31 авг 2018, 09:39

Рэндом писал(а):Кстати любой скрипт экспорта из МТ пишится за 15 минут. Максимум пол часа.

Тут проблемка в том, что нужно анализировать тысячи бумаг между собой и не в качестве Метатрейдера как источника. Скорее всего под американский рынок акций и т.п. Я в личку вышлю тебе ссылку на интереснейшее направление, с которым я столкнулся недавно и где Питон промелькнул. Направление я бы пока не обнародовал, т.к. оно в сыром виде и там еще разбираться и разбираться.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Язык Python для трейдера.

Сообщение Рэндом » 31 авг 2018, 09:45

Жду. Вижу один вариант. Подробности тоже в личку скину.
Аватар пользователя
Рэндом
Специалист MQL
 
Сообщений: 13700
Зарегистрирован: 18 июл 2013, 08:05
Средств на руках: 31.45 Доллар
Группа: Администраторы
Благодарил (а): 1131 раз.
Поблагодарили: 3174 раз.
Каждый заблуждается в меру своих возможностей.

Язык Python для трейдера.

Сообщение Haos » 30 май 2019, 18:30

Интересная статья с кодом на Питоне по оптимизации портфеля ценных бумаг. Надо будет изучить, а то, посмотрел в интернете есть ли ПО по работе с портфелем - ничего кроме экселя не нашел. Может импортные есть, а те что есть, все платные.
Конечно, Питон куда привлекательнее из-за уже имеющихся математических функций, код становится небольшим.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.


Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения