Советники: Классификатор на основе k-ближайших соседей. - страница 3

 

у меня есть собственный ГА напиcаный на MQL, и RBF сеть где то валяется написанная, но у нее очень большая проблема последнего слоя где веса считаются с помощью матриц (по крайней мере так по книжке) у меня компьютер на каждое пересчитывание этих матриц тратит (матрица >150x150) по сек 3, то есть чтоб прогнать год часовиков примерно 300*24*3 = 21600 сек, чтото около 6 часов и это просто прогон, какая тут может быть оптимизация. Я еще не пробовал подбирать эти веса ГА, но все расно долго пока с помощью pnn ищу приемлимые входы

 

После некоторых экспериментов пришел к выводу, что эту машинку надо обучать на каждом баре. Т.е. основная система оптимизируется и определяются ее нкоторые оптимальные параметры, затем с этими параметрами стопа и тейка тупо покупаем и продаем на каждом баре и резы фиксируем в файл . Затем все включаем вместе - основную ТС и подтверждение паттерном. Вроде получше получается.

 
FION:

После некоторых экспериментов пришел к выводу, что эту машинку надо обучать на каждом баре. Т.е. основная система оптимизируется и определяются ее нкоторые оптимальные параметры, затем с этими параметрами стопа и тейка тупо покупаем и продаем на каждом баре и резы фиксируем в файл . Затем все включаем вместе - основную ТС и подтверждение паттерном. Вроде получше получается.

не расскажите случаем что на вход подаете?? Вопрос мучает уже год :) ничего толкового не могу найти, спрашиваю везде и всюду никто конкретно не ответил

 
maxis_tm:
FION:

После некоторых экспериментов пришел к выводу, что эту машинку надо обучать на каждом баре. Т.е. основная система оптимизируется и определяются ее нкоторые оптимальные параметры, затем с этими параметрами стопа и тейка тупо покупаем и продаем на каждом баре и резы фиксируем в файл . Затем все включаем вместе - основную ТС и подтверждение паттерном. Вроде получше получается.

не расскажите случаем что на вход подаете?? Вопрос мучает уже год :) ничего толкового не могу найти, спрашиваю везде и всюду никто конкретно не ответил

Какой Вы имеете ввиду вход? В этом конкретном случае входами для классификатора являются отношения машек (векторы), а входом ТС сигналы от MACD . В отношениях машек я сделал расчет относительно одной опорной 233, вроде получше получилось, а сигналы МАСD можете заменить любыми другими которые нравятся, более частыми, например АС . Вобщем поиск продолжается.

 
FION писал(а): В отношениях машек я сделал расчет относительно одной опорной 233, вроде получше получилось

---------

Можете вот с этого места по подробнее?

Вот эти цыфры сдвига скользящей подобраны оптимизацией или по какому-то закону?

ordinate_1=iMA(Symbol(),Period(),89,0,0,5,count)/iMA(Symbol(),Period(),144,0,0,5,count);
ordinate_2=iMA(Symbol(),Period(),144,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_3=iMA(Symbol(),Period(),21,0,0,5,count)/iMA(Symbol(),Period(),89,0,0,5,count);
ordinate_4=iMA(Symbol(),Period(),55,0,0,5,count)/iMA(Symbol(),Period(),89,0,0,5,count);
ordinate_5=iMA(Symbol(),Period(),2,0,0,5,count)/iMA(Symbol(),Period(),55,0,0,5,count);

Я как раз на днях начал изучать неёронные сети и собирался написать подобного советника, но данные из индикатора я собирался брать последовательно с одинаковым шагом "старения"

Например так:

ordinate_1=iMA(Symbol(),Period(),1,0,0,5,count)/iMA(Symbol(),Period(),11,0,0,5,count);
ordinate_2=iMA(Symbol(),Period(),2,0,0,5,count)/iMA(Symbol(),Period(),12,0,0,5,count);
ordinate_3=iMA(Symbol(),Period(),3,0,0,5,count)/iMA(Symbol(),Period(),13,0,0,5,count);
ordinate_4=iMA(Symbol(),Period(),4,0,0,5,count)/iMA(Symbol(),Period(),14,0,0,5,count);
ordinate_5=iMA(Symbol(),Period(),5,0,0,5,count)/iMA(Symbol(),Period(),15,0,0,5,count);

 
EvgeTrofi:
FION писал(а): В отношениях машек я сделал расчет относительно одной опорной 233, вроде получше получилось

---------

Можете вот с этого места по подробнее?

Вот эти цыфры сдвига скользящей подобраны оптимизацией или по какому-то закону?

ordinate_1=iMA(Symbol(),Period(),89,0,0,5,count)/iMA(Symbol(),Period(),144,0,0,5,count);
ordinate_2=iMA(Symbol(),Period(),144,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_3=iMA(Symbol(),Period(),21,0,0,5,count)/iMA(Symbol(),Period(),89,0,0,5,count);
ordinate_4=iMA(Symbol(),Period(),55,0,0,5,count)/iMA(Symbol(),Period(),89,0,0,5,count);
ordinate_5=iMA(Symbol(),Period(),2,0,0,5,count)/iMA(Symbol(),Period(),55,0,0,5,count);

Цифры скользящей средней выбраны не по закону и тем более не оптимизацией, просто так...

а FION скорее всего имел ввиду вот так:

ordinate_1=iMA(Symbol(),Period(),89,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_2=iMA(Symbol(),Period(),144,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_3=iMA(Symbol(),Period(),21,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_4=iMA(Symbol(),Period(),55,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_5=iMA(Symbol(),Period(),2,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);

 

Уважаемый StatBars!

Скажите пожалуйста, в функции Euclidean_Metric()

i1 установлен цикл от 0 до v_dim_x-1 ,

а в процедуре упорядочивания тот же самый массив упорядочиваетс полностью (от 0 до v_dim_x):

for(i4=0;i4<v_dim_x;i4++)

{

t=X_Data_Base[i3][i4];

X_Data_Base[i3][i4]=X_Data_Base[i2][i4];

X_Data_Base[i2][i4]=t;

}

это специально так или опечатка?

 
EvgeTrofi:

Уважаемый StatBars!

Скажите пожалуйста, в функции Euclidean_Metric()

i1 установлен цикл от 0 до v_dim_x-1 ,

а в процедуре упорядочивания тот же самый массив упорядочиваетс полностью (от 0 до v_dim_x):

for(i4=0;i4<v_dim_x;i4++)

{

t=X_Data_Base[i3][i4];

X_Data_Base[i3][i4]=X_Data_Base[i2][i4];

X_Data_Base[i2][i4]=t;

}

это специально так или опечатка?

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

 
StatBars:

а FION скорее всего имел ввиду вот так:

ordinate_1=iMA(Symbol(),Period(),89,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_2=iMA(Symbol(),Period(),144,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_3=iMA(Symbol(),Period(),21,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_4=iMA(Symbol(),Period(),55,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);
ordinate_5=iMA(Symbol(),Period(),2,0,0,5,count)/iMA(Symbol(),Period(),233,0,0,5,count);

Да это я и имел ввиду.

 

Скажите пожалуйста, какую функцию в следующей строке выполняет знак & ?

double Euclidean_Metric(double&X_Data_Base[][v_dim_x], double Vector[v_dim_x],int num_v)