Свързване на невронни мрежи към MetaTrader от NeuroSolutions - Форекс търговия и роботи за търговия
Със сигурност, когато се запознават с невронните мрежи, всички търговци си мислят колко страхотно би било да се използват невронни мрежи за анализ на пазара. Има много програми, които ви позволяват да създавате свои собствени мрежи с всякаква конфигурация в удобна визуална форма, да ги обучавате и тествате. Можете да изтеглите необходимите данни от терминала, да ги заредите в програма за невронна мрежа и да ги анализирате там.
Но какво ще стане, ако искате да използвате изградената невронна мрежа за автоматична търговия? Възможно ли е съветникът в самия терминал да има достъп до невронната мрежа и да търгува в реално време?
Да възможно е. Някои програми за невронни мрежи имат необходимите интерфейси за програмиране. Една такава програма се наричаNeuroSolutions. Последната му версия е 6-та, но все още не всеки я има, но много хора използват версия 5. Следователно статията ще разгледа взаимодействието с 5-та версия. Имаме нужда от пълно разпространение на програмата, тя включва Custom Solution Wizard, ще ни трябва.
Измисляне на стратегия
Стратегията за нашия тестов случай ще бъде проста. Нека го наречемWeekPattern. На времевата рамка D1, използвайки невронна мрежа, той ще предвиди цената на затварянето си в началото на текущия бар. И в зависимост от това, той ще отвори КУПУВАНЕ или ПРОДАВАНЕ и ще запази тази сделка през целия ден. Ценовата прогноза ще се основава на OHLC стойностите на предходните 5 бара. За да подобрим точността на невронната мрежа, ние ще й подадем не самите цени, а само техните промени спрямо цената на отваряне на текущия (нулев) бар.
Подготовка на данни за обучение
Преди да започнем да създаваме мрежа, нека напишем MQL5 скрипт, който ще изтегли котировки от терминала във формата, от която се нуждаем. Тези данни ще са необходими за обучение на невронната мрежа. Качването ще се извърши в текстов файл. В първия си ред преззапетая списък с имената на полетата. И в следващите редове данните ще отидат, разделени със запетая. Всеки ред е една комбинация от входове и изходи на невронната мрежа. В нашия случай скриптът на всеки ред ще се върне назад в историята на цените с един бар и ще запише стойностите на OHLC от 6 бара в реда (5 бара от миналото са влизания, а един текущ бар е изход).
Този скриптWeekPattern-Export.mq5 трябва да се изпълнява на необходимия период от време на необходимата валутна двойка (в нашия пример това е D1 EURUSD). Настройките определят името на файла и колко реда са необходими (за D1 260 реда са около 1 година история). Пълен код на скрипта:
След като разтоварим данните, получаваме файлаdata.csv, първите редове (например) изглеждат по следния начин:
Това е форматът, който NeuroSolutions разбира. Сега можем да започнем изграждането и обучението на мрежата.
Създайте невронна мрежа
В NeuroSolutions можете бързо да създадете невронна мрежа, дори да видите тази програма за първи път и да имате малко разбиране за невронни мрежи. За да направите това, в началото на програмата изберете съветника за начинаещи -NeuralExpert (Начинаещ) :
Посочваме му типа задача, която нашата мрежа трябва да реши:
Нека му дадем файла с данни за обучение, който създадохме в последната глава:
Като мрежови входове маркираме всички полета на файла, с изключение на полетата на 0-та лента:
Нямаме текстови полета - не маркираме нищо:
Отново даваме нашия файл с данни:
Маркираме единствения изход на нашата мрежа:
По подразбиране съветникът предлага да се изгради най-простата мрежа. Да го направим:
Помощникът завърши работата си, като създаде мрежа за нас (все още не е обучена, само структура):
Сега можем да работим с нея. Обучете, тествайте, използвайте за анализ на данни.
Ако щракнете върху бутонаТест, можетевижте как необучената мрежа ще се справи с нашата задача. Отговаряме на въпросите на съветника за тестване:
Тестваме всичко върху данни от същия файл:
Тестването е завършено. Графики се появиха в прозореца „Изход срещу желан график“, показващ какви стойности дава мрежата за нашата история (червен цвят) и какви стойности всъщност са били там (син цвят). Вижда се, че те са много различни:
Сега нека обучим мрежата. За да направите това, щракнете върху зеления бутонСтарт на панела под менюто. Обучението ще приключи след няколко секунди и червената графика ще се промени:
Сега графиките показват, че мрежата издава „нещо, което изглежда като истината“. Вече можете да го използвате за търговия. Запазете мрежата катоWeekPattern.
Експортиране на невронната мрежа в DLL
Без да напускате NeuroSolutions, щракнете върху бутонаCSW в горната част, който ще стартираCustom Solution Wizard. Необходим е за генериране на DLL от текущата невронна мрежа.
Помощникът може да генерира DLL файлове за различни програми. Доколкото разбирам, за да компилира DLL, той във всеки случай ще се нуждае от Visual C++ от една от версиите: 5.0/6.0/7.0 (.NET 2002)/7.1 (.NET 2003)/8.0 (.NET 2005). По някаква причина той не използва Express версията (проверих това).
MetaTrader не е в списъка с целеви програми. Така че нека изберем Visual C++.
Къде да запишете резултата:
Ако всичко е минало добре, съветникът ще докладва следното:
И в папката, посочена по време на работата на съветника, ще се появят много файлове. Тези, от които се нуждаем най-много, са:WeekPattern.dll, той съдържа нашата невронна мрежа с програмен интерфейс към нея; и файлWeekPattern.nsw с настройки за мрежово тегло след тренировка. Сред другите файлове има пример за работа с тази DLL невронна мрежа. В този случай това е проект на Visual C++ 6.
Свързване на DLL Neural Network към MetaTrader
Невронната мрежа DLL, създадена в предишната глава, е предназначена за използване в проекти на Visual C++. Той работи с обекти със сложна структура, които биха били трудни или дори невъзможни за описание в MQL5. Следователно няма да свързваме този DLL директно с MetaTrader. Вместо това, нека създадем малък адаптер DLL. Този адаптер ще съдържа една проста функция за работа с невронна мрежа. Той ще създаде мрежа, ще предаде данни на входа и ще върне данни от изходите.
Този адаптер може лесно да бъде достъпен от MetaTrader 5. И адаптерът вече има достъп до DLL-невронната мрежа от NeuroSolutions. Тъй като адаптерът ще бъде написан на Visual C++, той няма да има проблеми с обектите на тази DLL.
Ще ни трябват някои файлове от този пример.
Във Visual C++ (същата версия, използвана от съветника за персонализирани решения), нека създадем празен DLL проект с имеNeuroSolutionsAdapter и копираме файловете NSNetwork.h, NSNetwork.cpp, StdAfx.h от примера в него. Нека също създадем празен файл main.cpp:
В main.cpp ще напишем следния код:
Изграждане. DLL-адаптерът е готов!
Използване на невронна мрежа в съветник
И така, вече имаме няколко файла, създадени от нас. Ще изброя кои са необходими за работа на съветника и в кои папки трябва да бъдат поставени. Всички тези файлове са в приложението към статията.