a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output); Print(a);
Таким образом, идентификатор сети возрастает до 1024, а потом система отказывается создавать новую сетку
При этом функция f2M_destroy(ann[i]) никаких сеток не разрушает! Вот такое предположение...
Так там в самой библиотеке определено :
#ifdef FANN2MQL_EXPORTS#define FANN2MQL_API __declspec(dllexport)#else#define FANN2MQL_API __declspec(dllimport)#endif/* maximum number of concurrently handled networks */#define ANNMAX 1024
....................................................
/* array of FANN network structures */externstruct fann *_fanns[ANNMAX];/* array of output values of networks */externdouble* _outputs[ANNMAX];/* index to last allocated network */externint _ann;
При этом функция f2M_destroy(ann[i]) никаких сеток не разрушает! Вот такое предположение...
Сама функция :
DLLFUNC int __stdcall f2M_destroy(int ann){int i, last_null=_ann-1;/* this network is not allocated */if(ann<0|| ann>_ann || _fanns[ann]==NULL)return(-1);/* destroy */
fann_destroy(_fanns[ann]);/* clear the pointers */
_fanns[ann]=NULL;
_outputs[ann]=NULL;/* let reuse the handlers if last */if(ann==_ann){
_ann--;/* look if we can recover any more handlers */for(i=_ann; i>-1; i--){if(_fanns[i]==NULL){
_ann--;}else{break;}}}return0;}
#define fann_safe_free(x) {if(x) { free(x); x = NULL; }}
Удачи.
ЗЫ Проблема может возникнуть, если разрушать сети в произвольном порядке или от первой к последней. Нужно от последней к предыдущей - то есть в порядке, обратном тому, как создавались.
ЗЫ Проблема может возникнуть, если разрушать сети в произвольном порядке или от первой к последней. Нужно от последней к предыдущей - то есть в порядке, обратном тому, как создавались.
Дополню. Или в случае краха терминала. Но решение вроде найдено.
Вопрос другой. Владислав вы вроде без "посредников" читаете С++ код.
Не могли бы прокомментировать проблему с одинаковыми ответами коммитета сетей и правильность инициализации значений весов? (подробно озвучены здесь и ещё логи, а здесь вопрос по весам)
Уточните плиз. У каждой из 46 сетей выходы разные?
Диапазон размерности весов каков?
Если возможно, прикрепите профайлик одной комитетской сетки.
Да. На каждую сетку входы разные, хотя это и не принципиально. Можно взять стандартный сигнал, например тот же RSI и одну сетку, и все равно на брутфорсе получите отрицательные значения при любых входах.
Начальная инициализация весов -1, 1.
На счет профайла... Вы имеете ввиду результирующий файл обученной сети?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Сейчас протестил советника и отловил такой момент
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:28 2009.09.04 13:00 n5_test EURUSD,H1: 1024
2009.12.24 23:04:27 2009.09.04 12:00 n5_test EURUSD,H1: 1023
2009.12.24 23:04:26 2009.09.04 11:00 n5_test EURUSD,H1: 1022
Эти числа - то, что возвращает код:
a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);
Print(a);
Таким образом, идентификатор сети возрастает до 1024, а потом система отказывается создавать новую сетку
При этом функция f2M_destroy(ann[i]) никаких сеток не разрушает! Вот такое предположение...
При этом функция f2M_destroy(ann[i]) никаких сеток не разрушает! Вот такое предположение...
Александр, а Вы пробовали функцию f2M_destroy_all_anns();
Может быть будут различия в отработке?
Да, сейчас попробовал, похоже одна проблема локализовалась...
I. - В советнике ставлю static int AnnsNumber = 1027;
- Из папки ANN все удаляю, лог очищаю.
- По логу видно создаются сети с индексами начиная с 7 до 1024.
- Сохраняются сетки в файлы с номерами от .1017.net до .0.net
Повторял эту последовательность несколько раз - ничего не меняется.
Лог первого варианта прилагаю.
.
===========================
II. Вставил в начале init() ф-цию f2M_destroy_all_anns(); и картина изменилась кардинально в лучшую сторону, только в конце косячок
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_save(1, E:\ANN\USDJPY-870.1.net) returned: 0
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_destroy(1) returned: 0
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_save(0, E:\ANN\USDJPY-870.0.net) returned: -1
22:44:41 2008.07.31 23:59 FANN-EA_tmp USDJPY,M5: f2M_destroy(0) returned: -1
нулевая сетка не сохранилась, а 1024.net сохранилась. Но это уже мелочи )))
Кто-то раскомментировал все варианты. В коде из CVS таких ошибок нет.
Вопрос: Кто как разворачивал FANN2MQL?
Инсталлятором? Руками с оф. сайта? Другим способом?
Может все мы жертвы ЗАГОВОРА антисетевиков? )
Ну пожалуй тоже добавлю в копилку странностей FANN...
Эксперимента ради, решил обучить комитет из 46-сетей размерности 30/N/N/1 брутфорсом (т.е. на каждом баре: ~300тыс).
Уточните плиз. У каждой из 46 сетей выходы разные?
Диапазон размерности весов каков?
Если возможно, прикрепите профайлик одной комитетской сетки.
Сейчас протестил советника и отловил такой момент
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:29 2009.09.04 14:00 n5_test EURUSD,H1: -1
2009.12.24 23:04:28 2009.09.04 13:00 n5_test EURUSD,H1: 1024
2009.12.24 23:04:27 2009.09.04 12:00 n5_test EURUSD,H1: 1023
2009.12.24 23:04:26 2009.09.04 11:00 n5_test EURUSD,H1: 1022
Эти числа - то, что возвращает код:
a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);
Print(a);
Таким образом, идентификатор сети возрастает до 1024, а потом система отказывается создавать новую сетку
При этом функция f2M_destroy(ann[i]) никаких сеток не разрушает! Вот такое предположение...
Так там в самой библиотеке определено :
При этом функция f2M_destroy(ann[i]) никаких сеток не разрушает! Вот такое предположение...
Сама функция :
Память освобождается.
#define fann_safe_free(x) {if(x) { free(x); x = NULL; }}Удачи.
ЗЫ Проблема может возникнуть, если разрушать сети в произвольном порядке или от первой к последней. Нужно от последней к предыдущей - то есть в порядке, обратном тому, как создавались.
ЗЫ Проблема может возникнуть, если разрушать сети в произвольном порядке или от первой к последней. Нужно от последней к предыдущей - то есть в порядке, обратном тому, как создавались.
Дополню. Или в случае краха терминала. Но решение вроде найдено.
Вопрос другой. Владислав вы вроде без "посредников" читаете С++ код.
Не могли бы прокомментировать проблему с одинаковыми ответами коммитета сетей и правильность инициализации значений весов? (подробно озвучены здесь и ещё логи, а здесь вопрос по весам)
lasso и VladislavVG
Спасибо огромное
Уточните плиз. У каждой из 46 сетей выходы разные?
Диапазон размерности весов каков?
Если возможно, прикрепите профайлик одной комитетской сетки.
Да. На каждую сетку входы разные, хотя это и не принципиально. Можно взять стандартный сигнал, например тот же RSI и одну сетку, и все равно на брутфорсе получите отрицательные значения при любых входах.
Начальная инициализация весов -1, 1.
На счет профайла... Вы имеете ввиду результирующий файл обученной сети?