ЖАНРЫ

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

первый – мы совершаем сделку и завтра получаем ответ от нейросети – открылись в правильном направлении или нет. Хотя мы это уже знаем и без нейросети;

второй – мы получаем информацию от нейросети, совершаем сделку и завтра видим, правильная рекомендация была или нет;

третий – мы получаем информацию от нейросети – когда нам надо совершить ту или иную сделку.

Первый вариант, естественно мы отбрасываем сразу. А вот второй и третий для торговли подходят. Однако второй вариант – вариант как бы заглядывания в будущее. Утрировано этот вариант торговли заключается в том, что мы получаем сигнал от нейросети в определенный момент времени – например по закрытию дня с прогнозом как закроется следующий день. Реализовать его для чисто механической торговли на данном этапе сложно. Ну, а если представить, что им получит возможность воспользоваться большинство торговцев – то он сразу же потеряет свою актуальность. Смысл третьего варианта, заключается в том, что мы отслеживаем отклик нейросети на протяжении торговой сессии и покупаем либо продаем его интерпретируя. И здесь нам надо понять основное. Какой из вариантов мы сможем реализовать зависит от того как мы будем обучать нейросеть. И согласитесь, что третий вариант реализовать все-таки легче. Если во втором – мы будем использовать, какую либо информацию с прицелом на получение результата на следующий день – его закрытия (день выбран как пример, естественно может быть какой либо другой период), то в третьем варианте мы используем информацию, пришедшую за шаг до принятия решения – куда двинется цена в этот момент времени.

Шаблон автоматической нейросетевой торговой системы на стандартных индикаторах.

Данная глава носит сугубо практический характер. В ней я дам читателям набор скриптов и экспертов MT4 и Matlab, описание их предназначения и исполнения. Таким образом, вы получите шаблон для построения нейросетевой системы с использованием стандартных индикаторов. Пройдя шаг за шагом, весь этап построения торговой системы вы сможете самостоятельно подготовить свою торговую стратегию, основанную на нейросетевых технологиях. И в дальнейшем использовать не только Matlab, но и иные программные продукты.

Запустим скрипт “ScriptIn”.

//+–+

//| ScriptIn.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"

#property show_inputs

extern string Date="2004.07.01 00:00";

extern string DateOut="2010.12.31 23:00";

//+–+

//| script program start function |

//+–+

int start

{

int handle=FileOpen("In.csv",FILE_CSV|FILE_READ|FILE_WRITE,";");

int handleOut=FileOpen("Out.csv",FILE_CSV|FILE_READ|FILE_WRITE,";");

Alert("Идет запись файлов");

for(int i=iBars(NULL,0)-1; i>=0; i–)

{

string Date1=TimeToStr(iTime(NULL,0,i));

if(DateOut>=Date1 && Date<=Date1)

{

if(iHigh(NULL,0,i)>iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i) && iLow(NULL,0,i)<iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i) && ((iHigh(NULL,0,i+1)<iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i+1) && iLow(NULL,0,i+1)<iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i+1)) ||

(iHigh(NULL,0,i+1)>iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i+1) && iLow(NULL,0,i+1)>iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_MAIN,i+1))))

{

FileWrite(handle,

iWPR(NULL,0,14,i+3),

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

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

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

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

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

iWPR(NULL,0,14,i+2),

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

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

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

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

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

iWPR(NULL,0,14,i+1),

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

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

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

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

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

iWPR(NULL,0,14,i),

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

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

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

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

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

FileWrite(handleOut,iClose(NULL,1440,iBarShift(NULL,1440,iTime(NULL,0,i)))-iOpen(NULL,0,i));

}

}

}

FileClose(handle);

FileClose(handleOut);

Alert("Файлы записаны");

return(0);

}

//+–+

В результате работы скрипта мы получим в папке /MQL4/Files каталога данных MT4 два файла In.csv и Out.csv. Исходя из имен этих файлов – первый является файлом входов нейросети. Выборку данных мы делаем с использованием технического индикатора Bollinger Bands. Т.е. записываем значения индикаторов с глубиной три часа в момент, когда максимум часа выше средней линии, а минимум ниже. Также максимум и минимум предыдущего часа либо одновременно выше средней линии или ниже. Файл Out.csv – файл, в который мы записали, соответственно с использованием индикатора Bollinger Bands выборку разницы закрытия дня и открытия текущего часа. Таким образом, мы тренируем нейросеть на направление движения цены и ее амплитуду. Эти данные мы записываем с помощью скрипта, так как нам необходимы значения (закрытие дня), которые с помощью эксперта мы записать не сможем. А вот для того, что бы получить достоверный результат при тестировании нейросети – тестовое множество нам надо записать с помощью эксперта.

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

//+–+

//| ExpertPrimer.mq4 |

//| Copyright © 2019, Andrey Dibrov. |

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

Поделиться с друзьями: