Нейросетевая торговая система Meta Trader 4 + MATLAB. Пошаговая разработка. Издание второе. Андрей Дибров
Читать онлайн книгу.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<Date)
{
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;
[net,tr] = train(net,Input,Out);
Net=net(Test)';
xlswrite('C:\Users\Администратор\Desktop\Matlab\Indicator.csv',Date,'','1A');
xlswrite('C:\Users\Администратор\Desktop\Matlab\Indicator.csv',Net,'','1B');
Запустив данный скрипт, дождемся окончания его работы. Результатом исполнения скрипта в рабочем окне Workspace мы получим набор файлов.
Файл net.mat (обученную нейросеть) сохраним в папке Primer, которую предварительно создадим в папке Matlab. Отмечу, что папку Matlab мы назначим рабочим каталогом программы. Потом вы, конечно же, можете все настроить, как вам будет удобнее.
Так же