//+------------------------------------------------------------------+ //| 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); }