- Код: выделить все
//+------------------------------------------------------------------+
//| 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,".","-");
Эта операция приводит дату к виду принятому в Питон. Для этого достаточно заменить точки на минусы.
И последний момент. Из тиковой истории мы используем только цены Бид и Аск. Но Форексе как правило доступны только они. На других рынках доступны еще и данные о сделках (цена, объем и направление сделки).