348 lines
32 KiB
MQL5
348 lines
32 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| Create_Initial_Data.mq5 |
|
|
//| Copyright 2021, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com/en/users/dng |
|
|
//+------------------------------------------------------------------+
|
|
//| Script creates training and testing datasets |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2021, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com/en/users/dng"
|
|
#property version "1.00"
|
|
#property script_show_inputs
|
|
//+------------------------------------------------------------------+
|
|
//| External parameters for script operation |
|
|
//+------------------------------------------------------------------+
|
|
input datetime Start = D'2023.01.01 00:00:00'; // Start of the population period
|
|
input datetime End = D'2024.07.01 23:59:00'; // End of the population period
|
|
input ENUM_TIMEFRAMES TimeFrame = PERIOD_H1; // Timeframe for loading data
|
|
//input int BarsToLine = 10; // Number of historical bars in one pattern
|
|
input string StudyFileName = "pricecorr_delt.csv";// File name to write the training dataset
|
|
//input string TestFileName = "test_data.csv"; // File name to write the testing dataset
|
|
//input bool NormalizeData = true; // Data normalization flag
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Script program start |
|
|
//+------------------------------------------------------------------+
|
|
void OnStart(void)
|
|
{
|
|
|
|
double close[];
|
|
if(CopyClose(_Symbol, TimeFrame, Start, End,close) <= 0)
|
|
return;
|
|
double open[];
|
|
if(CopyOpen(_Symbol, TimeFrame, Start, End, open) <= 0)
|
|
return;
|
|
double high[];
|
|
if(CopyHigh(_Symbol, TimeFrame, Start, End, high) <= 0)
|
|
return;
|
|
double low[];
|
|
if(CopyLow(_Symbol, TimeFrame, Start, End, low) <= 0)
|
|
return;
|
|
|
|
|
|
//--- Open the training dataset file for writing
|
|
int Study = FileOpen(StudyFileName, FILE_WRITE | FILE_CSV | FILE_ANSI, ",", CP_UTF8);
|
|
if(Study == INVALID_HANDLE)
|
|
{
|
|
PrintFormat("Error opening file %s: %d", StudyFileName, GetLastError());
|
|
return;
|
|
}
|
|
|
|
int total = ArraySize(close);
|
|
|
|
string column;
|
|
column = "Close-Open,"+
|
|
"Close-Close1,"+
|
|
"Open-High1,"+
|
|
"Open-High2,"+
|
|
"Open-High3,"+
|
|
"Open-High4,"+
|
|
"Open-Close1,"+
|
|
"Open-Close2,"+
|
|
"Open-Close3,"+
|
|
"Open-Close4,"+
|
|
"Open-Open1,"+
|
|
"Open-Open2,"+
|
|
"Open-Open3,"+
|
|
"Open-Open4,"+
|
|
"Open-Low1,"+
|
|
"Open-Low2,"+
|
|
"Open-Low3,"+
|
|
"Open-Low4,"+
|
|
"High1-Open1,"+
|
|
"High1-Close1,"+
|
|
"High1-Low1,"+
|
|
"High1-High2,"+
|
|
"High1-High3,"+
|
|
"High1-High4,"+
|
|
"High1-Open2,"+
|
|
"High1-Open3,"+
|
|
"High1-Open4,"+
|
|
"High1-Close2,"+
|
|
"High1-Close3,"+
|
|
"High1-Close4,"+
|
|
"High1-Low2,"+
|
|
"High1-Low3,"+
|
|
"High1-Low4,"+
|
|
"Open1-Close1,"+
|
|
"Open1-Low1,"+
|
|
"Open1-High2,"+
|
|
"Open1-High3,"+
|
|
"Open1-High4,"+
|
|
"Open1-Open2,"+
|
|
"Open1-Open3,"+
|
|
"Open1-Open4,"+
|
|
"Open1-Close2,"+
|
|
"Open1-Close3,"+
|
|
"Open1-Close4,"+
|
|
"Open1-Low2,"+
|
|
"Open1-Low3,"+
|
|
"Open1-Low4,"+
|
|
"Close1-Low1,"+
|
|
"Close1-High2,"+
|
|
"Close1-High3,"+
|
|
"Close1-High4,"+
|
|
"Close1-Open2,"+
|
|
"Close1-Open3,"+
|
|
"Close1-Open4,"+
|
|
"Close1-Close2,"+
|
|
"Close1-Close3,"+
|
|
"Close1-Close4,"+
|
|
"Close1-Low2,"+
|
|
"Close1-Low3,"+
|
|
"Close1-Low4,"+
|
|
"Low1-High2,"+
|
|
"Low1-High3,"+
|
|
"Low1-High4,"+
|
|
"Low1-Open2,"+
|
|
"Low1-Open3,"+
|
|
"Low1-Open4,"+
|
|
"Low1-Close2,"+
|
|
"Low1-Close3,"+
|
|
"Low1-Close4,"+
|
|
"Low1-Low2,"+
|
|
"Low1-Low3,"+
|
|
"Low1-Low4,"+
|
|
"High2-Open2,"+
|
|
"High2-Close2,"+
|
|
"High2-Low2,"+
|
|
"High2-High3,"+
|
|
"High2-High4,"+
|
|
"High2-Open3,"+
|
|
"High2-Open4,"+
|
|
"High2-Close3,"+
|
|
"High2-Close4,"+
|
|
"High2-Low3,"+
|
|
"High2-Low4,"+
|
|
"Open2-Close2,"+
|
|
"Open2-Low2,"+
|
|
"Open2-High3,"+
|
|
"Open2-High4,"+
|
|
"Open2-Open3,"+
|
|
"Open2-Open4,"+
|
|
"Open2-Close3,"+
|
|
"Open2-Close4,"+
|
|
"Open2-Low3,"+
|
|
"Open2-Low4,"+
|
|
"Close2-Low2,"+
|
|
"Close2-High3,"+
|
|
"Close2-High4,"+
|
|
"Close2-Open3,"+
|
|
"Close2-Open4,"+
|
|
"Close2-Close3,"+
|
|
"Close2-Close4,"+
|
|
"Close2-Low3,"+
|
|
"Close2-Low4,"+
|
|
"Low2-High3,"+
|
|
"Low2-High4,"+
|
|
"Low2-Open3,"+
|
|
"Low2-Open4,"+
|
|
"Low2-Close3,"+
|
|
"Low2-Close4,"+
|
|
"Low2-Low3,"+
|
|
"Low2-Low4,"+
|
|
"High3-Open3,"+
|
|
"High3-Close3,"+
|
|
"High3-Low3,"+
|
|
"High3-High4,"+
|
|
"High3-Open4,"+
|
|
"High3-Close4,"+
|
|
"High3-Low4,"+
|
|
"Open3-Close3,"+
|
|
"Open3-Low3,"+
|
|
"Open3-High4,"+
|
|
"Open3-Open4,"+
|
|
"Open3-Close4,"+
|
|
"Open3-Low4,"+
|
|
"Close3-Low3,"+
|
|
"Close3-High4,"+
|
|
"Close3-Open4,"+
|
|
"Close3-Close4,"+
|
|
"Close3-Low4,"+
|
|
"Low3-High4,"+
|
|
"Low3-Open4,"+
|
|
"Low3-Close4,"+
|
|
"Low3-Low4,"+
|
|
"High4-Open4,"+
|
|
"High4-Close4,"+
|
|
"High4-Low4,"+
|
|
"Open4-Close4,"+
|
|
"Open4-Low4,"+
|
|
"Close4-Low4 ";
|
|
FileWrite(Study, column);
|
|
//--- Write datasets to files
|
|
string data;
|
|
for(int i = total-1; i >= 4; i--)
|
|
{
|
|
|
|
data = (string) (close[i]-open[i])+","+
|
|
(string) (close[i]-close[i-1])+","+
|
|
(string) (open[i]-high[i-1])+","+
|
|
(string) (open[i]-high[i-2])+","+
|
|
(string) (open[i]-high[i-3])+","+
|
|
(string) (open[i]-high[i-4])+","+
|
|
(string) (open[i]-close[i-1])+","+
|
|
(string) (open[i]-close[i-2])+","+
|
|
(string) (open[i]-close[i-3])+","+
|
|
(string) (open[i]-close[i-4])+","+
|
|
(string) (open[i]-open[i-1])+","+
|
|
(string) (open[i]-open[i-2])+","+
|
|
(string) (open[i]-open[i-3])+","+
|
|
(string) (open[i]-open[i-4])+","+
|
|
(string) (open[i]-low[i-1])+","+
|
|
(string) (open[i]-low[i-2])+","+
|
|
(string) (open[i]-low[i-3])+","+
|
|
(string) (open[i]-low[i-4])+","+
|
|
(string) (high[i-1]-open[i-1])+","+
|
|
(string) (high[i-1]-close[i-1])+","+
|
|
(string) (high[i-1]-low[i-1])+","+
|
|
(string) (high[i-1]-high[i-2])+","+
|
|
(string) (high[i-1]-high[i-3])+","+
|
|
(string) (high[i-1]-high[i-4])+","+
|
|
(string) (high[i-1]-open[i-2])+","+
|
|
(string) (high[i-1]-open[i-3])+","+
|
|
(string) (high[i-1]-open[i-4])+","+
|
|
(string) (high[i-1]-close[i-2])+","+
|
|
(string) (high[i-1]-close[i-3])+","+
|
|
(string) (high[i-1]-close[i-4])+","+
|
|
(string) (high[i-1]-low[i-2])+","+
|
|
(string) (high[i-1]-low[i-3])+","+
|
|
(string) (high[i-1]-low[i-4])+","+
|
|
(string) (open[i-1]-close[i-1])+","+
|
|
(string) (open[i-1]-low[i-1])+","+
|
|
(string) (open[i-1]-high[i-2])+","+
|
|
(string) (open[i-1]-high[i-3])+","+
|
|
(string) (open[i-1]-high[i-4])+","+
|
|
(string) (open[i-1]-open[i-2])+","+
|
|
(string) (open[i-1]-open[i-3])+","+
|
|
(string) (open[i-1]-open[i-4])+","+
|
|
(string) (open[i-1]-close[i-2])+","+
|
|
(string) (open[i-1]-close[i-3])+","+
|
|
(string) (open[i-1]-close[i-4])+","+
|
|
(string) (open[i-1]-low[i-2])+","+
|
|
(string) (open[i-1]-low[i-3])+","+
|
|
(string) (open[i-1]-low[i-4])+","+
|
|
(string) (close[i-1]-low[i-1])+","+
|
|
(string) (close[i-1]-high[i-2])+","+
|
|
(string) (close[i-1]-high[i-3])+","+
|
|
(string) (close[i-1]-high[i-4])+","+
|
|
(string) (close[i-1]-open[i-2])+","+
|
|
(string) (close[i-1]-open[i-3])+","+
|
|
(string) (close[i-1]-open[i-4])+","+
|
|
(string) (close[i-1]-close[i-2])+","+
|
|
(string) (close[i-1]-close[i-3])+","+
|
|
(string) (close[i-1]-close[i-4])+","+
|
|
(string) (close[i-1]-low[i-2])+","+
|
|
(string) (close[i-1]-low[i-3])+","+
|
|
(string) (close[i-1]-low[i-4])+","+
|
|
(string) (low[i-1]-high[i-2])+","+
|
|
(string) (low[i-1]-high[i-3])+","+
|
|
(string) (low[i-1]-high[i-4])+","+
|
|
(string) (low[i-1]-open[i-2])+","+
|
|
(string) (low[i-1]-open[i-3])+","+
|
|
(string) (low[i-1]-open[i-4])+","+
|
|
(string) (low[i-1]-close[i-2])+","+
|
|
(string) (low[i-1]-close[i-3])+","+
|
|
(string) (low[i-1]-close[i-4])+","+
|
|
(string) (low[i-1]-low[i-2])+","+
|
|
(string) (low[i-1]-low[i-3])+","+
|
|
(string) (low[i-1]-low[i-4])+","+
|
|
(string) (high[i-2]-open[i-2])+","+
|
|
(string) (high[i-2]-close[i-2])+","+
|
|
(string) (high[i-2]-low[i-2])+","+
|
|
(string) (high[i-2]-high[i-3])+","+
|
|
(string) (high[i-2]-high[i-4])+","+
|
|
(string) (high[i-2]-open[i-3])+","+
|
|
(string) (high[i-2]-open[i-4])+","+
|
|
(string) (high[i-2]-close[i-3])+","+
|
|
(string) (high[i-2]-close[i-4])+","+
|
|
(string) (high[i-2]-low[i-3])+","+
|
|
(string) (high[i-2]-low[i-4])+","+
|
|
(string) (open[i-2]-close[i-2])+","+
|
|
(string) (open[i-2]-low[i-2])+","+
|
|
(string) (open[i-2]-high[i-3])+","+
|
|
(string) (open[i-2]-high[i-4])+","+
|
|
(string) (open[i-2]-open[i-3])+","+
|
|
(string) (open[i-2]-open[i-4])+","+
|
|
(string) (open[i-2]-close[i-3])+","+
|
|
(string) (open[i-2]-close[i-4])+","+
|
|
(string) (open[i-2]-low[i-3])+","+
|
|
(string) (open[i-2]-low[i-4])+","+
|
|
(string) (close[i-2]-low[i-2])+","+
|
|
(string) (close[i-2]-high[i-3])+","+
|
|
(string) (close[i-2]-high[i-4])+","+
|
|
(string) (close[i-2]-open[i-3])+","+
|
|
(string) (close[i-2]-open[i-4])+","+
|
|
(string) (close[i-2]-close[i-3])+","+
|
|
(string) (close[i-2]-close[i-4])+","+
|
|
(string) (close[i-2]-low[i-3])+","+
|
|
(string) (close[i-2]-low[i-4])+","+
|
|
(string) (low[i-2]-high[i-3])+","+
|
|
(string) (low[i-2]-high[i-4])+","+
|
|
(string) (low[i-2]-open[i-3])+","+
|
|
(string) (low[i-2]-open[i-4])+","+
|
|
(string) (low[i-2]-close[i-3])+","+
|
|
(string) (low[i-2]-close[i-4])+","+
|
|
(string) (low[i-2]-low[i-3])+","+
|
|
(string) (low[i-2]-low[i-4])+","+
|
|
(string) (high[i-3]-open[i-3])+","+
|
|
(string) (high[i-3]-close[i-3])+","+
|
|
(string) (high[i-3]-low[i-3])+","+
|
|
(string) (high[i-3]-high[i-4])+","+
|
|
(string) (high[i-3]-open[i-4])+","+
|
|
(string) (high[i-3]-close[i-4])+","+
|
|
(string) (high[i-3]-low[i-4])+","+
|
|
(string) (open[i-3]-close[i-3])+","+
|
|
(string) (open[i-3]-low[i-3])+","+
|
|
(string) (open[i-3]-high[i-4])+","+
|
|
(string) (open[i-3]-open[i-4])+","+
|
|
(string) (open[i-3]-close[i-4])+","+
|
|
(string) (open[i-3]-low[i-4])+","+
|
|
(string) (close[i-3]-low[i-3])+","+
|
|
(string) (close[i-3]-high[i-4])+","+
|
|
(string) (close[i-3]-open[i-4])+","+
|
|
(string) (close[i-3]-close[i-4])+","+
|
|
(string) (close[i-3]-low[i-4])+","+
|
|
(string) (low[i-3]-high[i-4])+","+
|
|
(string) (low[i-3]-open[i-4])+","+
|
|
(string) (low[i-3]-close[i-4])+","+
|
|
(string) (low[i-3]-low[i-4])+","+
|
|
(string) (high[i-4]-open[i-4])+","+
|
|
(string) (high[i-4]-close[i-4])+","+
|
|
(string) (high[i-4]-low[i-4])+","+
|
|
(string) (open[i-4]-close[i-4])+","+
|
|
(string) (open[i-4]-low[i-4])+","+
|
|
(string) (close[i-4]-low[i-4]);
|
|
|
|
FileWrite(Study, data);
|
|
}
|
|
|
|
//--- Close files
|
|
Comment("");
|
|
FileFlush(Study);
|
|
FileClose(Study);
|
|
|
|
PrintFormat("Study data saved to file %s\\MQL5\\Files\\%s",
|
|
TerminalInfoString(TERMINAL_DATA_PATH), StudyFileName);
|
|
|
|
}
|