Нейросетевая торговая система. Пошаговая разработка для платформы Meta Trader 4 в среде MATLAB. Сокращенное издание. Андрей Дибров
Читать онлайн книгу.Какой из вариантов мы сможем реализовать зависит от того как мы будем обучать нейросеть. И согласитесь, что третий вариант реализовать все-таки легче. Если во втором – мы будем использовать, какую либо информацию с прицелом на получение результата на следующий день – его закрытия (день выбран как пример, естественно может быть какой либо другой период), то в третьем варианте мы используем информацию, пришедшую за шаг до принятия решения – куда двинется цена в этот момент времени.
Критические ошибки при разработке нейросетевой системы
Рассмотрим, на примере как допускаются ошибки при тестировании нейросети. Если у вас нет программы «NeuroSolutions 6», то пропустите дальнейшее описание работы с ней, а рассмотрите результаты и сделанные выводы. В этой книге я не буду рассматривать создание системы на основе «NeuroSolutions». Хотя в принципе, автоматическая нейросетевая система реализована и на основе данного продукта.
Отметим, что следует понимать разницу между обучением и тестированием. Обучать нейросеть можно на любых примерах даже, некорректных для тестового множества – ведь обучение мы проводим на событиях, которые уже произошли. Данный пример взят из реальной жизни. Данный способ работы с нейросетями продавался в интернете. Позиционировался как система, которая дает 80—90% прибыльных сделок. Причем продавец, мне кажется, искренне заблуждался в идеальной результативности данного способа подготовки нейросети. Я делаю этот вывод из того, что ошибка возникала на стадии тестирования отклика сети.
Итак, сначала модернизируем и скомпилируем скрипт для получения исторических данных.
//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +
//| History.mq4 |
//| Copyright © 2009, Andrey Dibrov. |
//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +
#property copyright «Copyright © 2009, Andrey Dibrov.»
int file=FileOpen («history. csv», FILE_CSV|FILE_READ|FILE_WRITE,»;»);
//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +
//| Script program start function |
//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +
void OnStart ()
{
// – —
FileWrite (file,«Open; OpenD; HighD; LowD; CloseD; Max; Min; Date»);
if (file> 0)
{
Alert («Идет запись файла»);
for (int i=iBars (NULL,60) -1; i> =0; i – )
{
FileWrite (file,
iOpen (NULL,60,i),
iOpen (NULL,60,iBarShift (NULL,1440,iTime (NULL,60,i))),
iHigh (NULL,60,iBarShift (NULL,1440,iTime (NULL,60,i))),
iLow (NULL,60,iBarShift (NULL,1440,iTime (NULL,60,i))),
iClose (NULL,60,iBarShift (NULL,1440,iTime (NULL,60,i))),
iCustom (NULL,60,«Max», 0,1440,60,0,i),
iCustom (NULL,60,«Min», 0,1440,60,0,i),
TimeToStr (iTime (NULL,60,i)));
}
}
Alert («Файл записан»);
FileClose (file);
}
//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +
В результате работы скрипта получим файл. Создадим колонку «In» и заполним ее формулой.
Добавим колонку «Out» и заполним ее формулой.
Воспользуемся