По пп.2 и 3 чем не устраивают f2M_save и f2M_create_from_file?
По п.1 не понятна проблема, т.к. даже не важно сетка у нас или не сетка - любая обработка данных обычно требует заполнение некоторых массивов - делайте это так, как Вам удобно.
Уже разобрался.
Обычное для меня дело - чтобы разобраться самому, мне надо сначала сформулировать, чтобы вопрос поняли все, а где это можно сделать лучше, чем на форуме?)))
Правда советник еще не готов...
Может кто-нибудь подсказать, в чем ошибка?
// Include Neural Network package
#include <Fann2MQL.mqh>
// Global defines
#define ANN_PATH "C:\\ANN\\"
// EA Name
#define NAME "NM"
int AnnInputs=30;
void start()
{
string path = ANN_PATH;
ann_load(path+".net");
}
//|--------------------------------------------+
//| |
//|--------------------------------------------+
int ann_load( string path1)
{
int ann = -1;
ann = f2M_create_from_file (path1);
if (ann == -1) {
/* Create ANN */
ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1);
f2M_set_act_function_hidden (ann, FANN_SIGMOID_SYMMETRIC_STEPWISE);
f2M_set_act_function_output (ann, FANN_SIGMOID_SYMMETRIC_STEPWISE);
f2M_randomize_weights (ann, -0.77,0.77);
}
Print(ann);
return(ann);
}
При тестировании этого куска выдается следующее:
2009.12.15 21:52:12 2009.09.30 23:59 нейропробник EURUSD,H1: -1
То есть, выходит, что сетка не создается. В чем именно я напортачил?
ЗЫ. Папка ANN создана
Может кто-нибудь подсказать, в чем ошибка?
// Include Neural Network package
#include <Fann2MQL.mqh>
// Global defines
#define ANN_PATH "C:\\ANN\\"
// EA Name
#define NAME "NM"
int AnnInputs=30;
void start()
{
string path = ANN_PATH;
ann_load(path+".net");
}
//|--------------------------------------------+
//| |
//|--------------------------------------------+
int ann_load( string path1)
{
int ann = -1;
ann = f2M_create_from_file (path1);
if (ann == -1) {
/* Create ANN */
ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1);
f2M_set_act_function_hidden (ann, FANN_SIGMOID_SYMMETRIC_STEPWISE);
f2M_set_act_function_output (ann, FANN_SIGMOID_SYMMETRIC_STEPWISE);
f2M_randomize_weights (ann, -0.77,0.77);
}
Print(ann);
return(ann);
}
При тестировании этого куска выдается следующее:
2009.12.15 21:52:12 2009.09.30 23:59 нейропробник EURUSD,H1: -1
То есть, выходит, что сетка не создается. В чем именно я напортачил?
ЗЫ. Папка ANN создана
ошибка в том, что (внимательно отследите значения переменных) на момент вызова f2M_create_standard параметр path1 равен "C:\\ANN\\.net"
Вы уверены, что храните сетку в папке ANN в файле с именем ".net"?
А где в этой строке
ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1);
указывается адрес сохранения и указывается, что надо сохранять?
Сохранение же делается функцией f2M_save (ann, path)? Или я не прав?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Хочу написать советника с использованием этой библиотеки.
В советнике хочу увидеть следующее: если идет оптимизация, то должно происходить обучение нейросетки и ее сохранение,
а если идет тестирование или торговля, то сетка не меняется. Для примера возьмем самый простой набор данных:
for(int a=0;a<nn_input;a++)
{
inputArray[a]=(iHigh(Symbol(),0,a+2)-iHigh(Symbol(),0,a+3))/Point;
}
outputArray[0]=(iHigh(Symbol(),0,1)-iHigh(Symbol(),0,2))/Point;
То есть на входы подаются значения nn_input последних приращений хаев (начиная с второго), а в качестве эталонного выхода - разница
хаев последнего и предпоследнего сформировавшихся баров.
По логике вещей, для обучения надо использовать функцию типа (взята из статьи Использование библиотеки FANN2MQL в MetaTrader ):