На радость нейросетевикам, быстрая и бесплатная библиотека для MT4 - страница 8

 
newerty >>:

Подскажите пожалуйста. А как заставить советник тогровать по нескольким сразу инструментам?

Например, gold, gbpusd, nzdusd, audusd и др...

На каждой паре очевидно свой S/L

Клонировать МТ4... клонировать советник....???? И одновременно запускать?

Просто поставить советник на разные графики.

StopLoss на каждой паре свой.


Единственное чего нельзя, дык это на занятую советником пару вешать еще какой нибудь советник или торговать вручную, т.к. магические номера не используются. Т.е. на каждую пару не более одного советника.

 

Юрий а немогли бы вы приветси пример настроек (таймфрейм, период, и т.д.) при которых у вас получается большое количество сделок ?

 
Solver.it >>:

Юрий а немогли бы вы приветси пример настроек (таймфрейм, период, и т.д.) при которых у вас получается большое количество сделок ?

На 6-й странице этого топика выдержка из бектеста. Там все указано.

 

Если строку

if (IsOptimization() || IsTesting()) {


заменить на

if (IsOptimization()){


то результаты одиночного прогона станут стабильнее.

Я столкнулся с другой проблемой: сеть очень быстро подстраивается под данные, строит график в тестере как по линейке, но форварды и бэктесты показывают совсем другой характер кривой.

 
Kharin >>:

Если строку

if (IsOptimization() || IsTesting()) {


заменить на

if (IsOptimization()){


то результаты одиночного прогона станут стабильнее.

Я столкнулся с другой проблемой: сеть очень быстро подстраивается под данные, строит график в тестере как по линейке, но форварды и бэктесты показывают совсем другой характер кривой.

Это и ежу понятно, т.к. удаление данной функции отключает адаптацию в режиме тестирования. Но я в советнике эту штуку специально оставил. Чем нестабильнее результаты на разных прогонах адаптированного теста, тем выше вероятность, что сеть ничему конкретному не обучилась, т.к. всего лишь еще одна эпоха и уже все совсем по другому. Т.е. если нестабильные результаты говорят о заведомой неуверенности сетки на тестовой выборке, то про форварды можно вообще даже не упоминать - тамошние котировки нейронка даже не видела.

 
Дело вкуса конечно, но я бы вынес возможность этого выбора во внешние переменные. Впрочем, я так и сделал)))
 
Reshetov >>:

Еще раз повторяю: эта строка не несет никакой информационной нагрузки. Знак у ret не меняется, а сделки отрываются в зависимости от положительного или отрицательного значения ret

Про знак все очвидно. Очевидно также, что без двойки данная функция возвращает осмысленную величину усредненного ответа комитета сеток, а вот с двойкой - фигню. Учитывая, что та же самая функция вызывается в штатном прогоне сеток уже после обучения и мелкие значения ret (как положительные, так и отрицательные) лучше вообще отбрасывать, не генеря по ним сделок, то строчка эта несет-таки важную информацию.

Вы так и не ответили, почему обучаете сетки только на отрицательных примерах?

 
Kharin >>:

Я столкнулся с другой проблемой: сеть очень быстро подстраивается под данные, строит график в тестере как по линейке, но форварды и бэктесты показывают совсем другой характер кривой.

Да, в текущем виде советник не проводит оценки качества обучения. Если изменить логику сбора данных, то можно было бы вставить пару вызовов: f2M_test (с валидационными данными, а не обучающими) и f2M_get_MSE, останавливая обучение, когда ошибка начинает расти.

 

Юрий, хочу задать оффтопный вопрос: можно ли организовать отдельную сетку для SL (скажем по волатильности - делать предсказания, и под это подгонять SL)?

Может это поможет патерновым сеткам стабильнее обучатся?

 

Юрий, кажется я нарыл еще оду неточность в коде... Ковырялся в своем коде на предмет странности результатов обучения и нашел вот что:

double ann_pnn() {
...
    ret = 2 * ret / AnnsNumber;

нужно:

ret = ret / AnnsNumber;

Дело в том, что автор библиотеки в своем советнике, по непонятным для меня причинам, разбил сетку пополам для коротких и длинных позиций на соотв-но четные и нечетные с соотв-щими циклами:

for (i = 0; i < AnnsNumber; i += 2) - для четных С ПРИРАЩЕНИЕМ "2" !!!
for (i = 1; i < AnnsNumber; i += 2) - для нечетных

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

Для меня вообще смысл этого цикла (функции ann_pnn и run_anns) ускользает напрочь...

for (i = 0; i < AnnsNumber; i++) {    ret += AnnOutputs[i];    }

Если мы имеем сетку с одним выходным нейроном, откуда у нас 16 выходов?!... Или это комитет из 16-ти сеток? К чему я собственно и склоняюсь... Тогда вопрос: а нафига? Я пока тоже оставил этот кусок неизменным, пока не разберусь с его смыслом окончательно... Может у кого есть мысли по этому поводу? Поделитесь пожалуйста...

Причина обращения: