Размер шрифта
-
+

Нейросетевая торговая система Meta Trader 4 + MATLAB. Пошаговая разработка. Издание второе - стр. 5








Запустим в тестере стратегий эксперт “ExpertPrimer”, как показано на рисунке выше.


//+–+

//| ExpertPrimer.mq4 |

//| Copyright © 2019, Andrey Dibrov. |

//|"https://www.youtube.com/channel/UCScAAn_sRRaKHdNIxl0aI9A?view_as=subscriber" |

//+–+

#property copyright "Copyright © 2019, Andrey Dibrov."

#property link "https://www.youtube.com/channel/UCScAAn_sRRaKHdNIxl0aI9A?view_as=subscriber"

extern string DateTren="2004.07.01 00:00";

extern string DateTest="2010.12.31 23:00";

int handleTest=FileOpen("Test.csv",FILE_TXT|FILE_WRITE|FILE_SHARE_READ,";");

int handleDate=FileOpen("Date.csv",FILE_TXT|FILE_WRITE|FILE_SHARE_READ,";");

//+–+

//| Expert initialization function |

//+–+

int OnInit()

{

//–

//–

return(INIT_SUCCEEDED);

}

//+–+

//| Expert deinitialization function |

//+–+

void OnDeinit(const int reason)

{

//–

FileClose(handleTest);

FileClose(handleDate);

}

//+–+

//| Expert tick function |

//+–+

void OnTick()

{

//–

string Date=TimeToStr(iTime(NULL,0,0));

if(handleTest>0 && handleDate>0 && DateTest

{

FileWrite(handleTest,

iWPR(NULL,0,14,3),

iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_MAIN,3),

iRVI(NULL,0,10,MODE_MAIN,3),

iRSI(NULL,0,14,PRICE_CLOSE,3),

iOsMA(NULL,0,12,26,9,PRICE_CLOSE,3),

iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,3),


iWPR(NULL,0,14,2),

iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_MAIN,2),

iRVI(NULL,0,10,MODE_MAIN,2),

iRSI(NULL,0,14,PRICE_CLOSE,2),

iOsMA(NULL,0,12,26,9,PRICE_CLOSE,2),

iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,2),


iWPR(NULL,0,14,1),

iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_MAIN,1),

iRVI(NULL,0,10,MODE_MAIN,1),

iRSI(NULL,0,14,PRICE_CLOSE,1),

iOsMA(NULL,0,12,26,9,PRICE_CLOSE,1),

iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1),


iWPR(NULL,0,14,0),

iStochastic(NULL,0,5,3,3,MODE_SMA,1,MODE_MAIN,0),

iRVI(NULL,0,10,MODE_MAIN,0),

iRSI(NULL,0,14,PRICE_CLOSE,0),

iOsMA(NULL,0,12,26,9,PRICE_CLOSE,0),

iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0));

FileWrite(handleDate,Date);

}

}

//+–+





В папке /tester/files каталога данных MT4 мы получим также два файла Date.csv и Test.csv. В первом мы записали дату и почасово время тестового множества. Во втором непосредственно значения, по которым мы будем получать отклик нейросети.




Файлы Date.csv и Test.csv мы перенесем в папку …\MQL4\Files.





Запустим Matlab, нажмем Ctrl+N и в открывшемся окне вставим ниже представленный код и сохраним его как скрипт Primer.m в папке “Matlab” на рабочем столе. Путь к этой папке укажем в соответствии с ее расположением на жестком диске нашего компьютера. То же самое сделаем и в отношении других файлов используемых при обучении нейросети.


Input= xlsread('C:\Users\Администратор\AppData\Roaming\MetaQuotes\Terminal\287469DEA9630EA94D0715D755974F1B\MQL4\Files\In.csv','In')';

Out= xlsread('C:\Users\Администратор\AppData\Roaming\MetaQuotes\Terminal\287469DEA9630EA94D0715D755974F1B\MQL4\Files\Out.csv','Out')';

Test= xlsread('C:\Users\Администратор\AppData\Roaming\MetaQuotes\Terminal\287469DEA9630EA94D0715D755974F1B\MQL4\Files\Test.csv','Test')';

[~, ~, Date] = xlsread('C:\Users\Администратор\AppData\Roaming\MetaQuotes\Terminal\287469DEA9630EA94D0715D755974F1B\MQL4\Files\Date.csv','Date');

trainFcn = 'trainlm';

hiddenLayerSize = 10;

net = fitnet(hiddenLayerSize,trainFcn);

net.divideParam.trainRatio = 70/100;

net.divideParam.valRatio = 15/100;

net.divideParam.testRatio = 15/100;

Страница 5