Сеть кохонена [индикатор MACD]

 

Доброго времени суток!

ВНИМАНИЕ НЕ НАДО ПИСАТЬ ВАШЕ ОТНОШЕНИЕ К ЭТОЙ СТРАТЕГИИ, Я УВАЖАЮ МНЕНИЕ МНОГИХ НА ЭТОМ ФОРУМЕ, НО МНЕ НУЖНО УЗНАТЬ МНЕНИЕ КАК СНИМАТЬ ДАННЫЕ В МАССИВ ДЛЯ ОБУЧЕНИЯ И ПРИНЯТИЯ ТОРГОВЫХ РЕШЕНИЙ !

Предложите, если можете конкретную идеологию как заносить входной вектор (на каждом баре), в обучающую матрицу.

Как я вижу и как уже написал только с другим индикатором (с ним часто сливает):

Подается входной вектор X1 X2 X3 X4...Xn, где X1,X2,... показатели индикатора, в данном случае MACD.

У меня 2 класса пока, что которые определяют движение вниз цены валютной пары(тогда открываемся на SELL) и вверх (открываем BUY), если будут результаты, то еще ввиду 3-й класс для флэта)

Необходимо отнести вектор X1 X2 ... к кому то классу. Покажите на рисунке с какой периодичностью снимать значения MACD, чтобы с высокой вероятностью цена пошла определенному классу. Может какие-то есть характерные точки...

 

Вроде как два способа .

1 Берем показания индикатора с 0 бара, 1 бара, 2 бараи тд. Получаем вектор Х1{0,1,2...}. Далеее смещаем на один Х2{1,2,3.....}. Соотв Х3{2,3,4...}.

2 Берем показания нескольких например индикаторов на одном баре это и будет обучающий вектор. Пример Х1{х1,х2,х3} на нулевом баре, х1=MACD(3), х2=MACD(EUR/USD,3), х3=процент ставки . Точно также вектора Х2 для первого бара и тд.

 
так ну тема пошла. второй способ заинтересовал меня. а в конце можно можно добавить x4 - скажем бинарная переменная 1-если цена пошла вверх, 0 -если цена пошла вниз, а то в конце обучим веса для двух классов, а какой класс, что значит будет непонятно.
 
orb:
x4 - скажем бинарная переменная 1-если цена пошла вверх, 0 -если цена пошла вниз
А как с будущим, куда пойдет цена, что на вход подавать?
 

в режиме классификации объекта, безусловно, нам неизвестно значение этой переменной в будущем.

бинарная переменная будет работать в режиме обучения, т.е. когда обучаются веса она не участвует w1=(w11 w21 w31) w2=(w12 w22 w32).

как ее внедрить логичнее после классификации в обучении сети. в какой-то части кода будет: id=1 если цена вверх, иначе id=0

x1 класс1; id=1

x2 класс2; id=0

...

x1000 класс1. id=1

потом просуммировать и чья сумма окажется меньше, те веса определяют класс сделок на sell, соответственно другой класс на buy.

 
можно поподробнее.
 
orb:

в режиме классификации объекта, безусловно, нам неизвестно значение этой переменной в будущем.

бинарная переменная будет работать в режиме обучения, т.е. когда обучаются веса она не участвует w1=(w11 w21 w31) w2=(w12 w22 w32).

как ее внедрить логичнее после классификации в обучении сети. в какой-то части кода будет: id=1 если цена вверх, иначе id=0

x1 класс1; id=1

x2 класс2; id=0

...

x1000 класс1. id=1

потом просуммировать и чья сумма окажется меньше, те веса определяют класс сделок на sell, соответственно другой класс на buy.


Так все таки как определять ее значение? Я про х4

Ее значение может быть только от -1 до 1. Бинарным делать нельзя. Что-то типа вероятности. Но зачем тогда нужна сеть?

 

ИЗВИНИТЕ ЗА СТЕПЕНЬ ФОРМАЛИЗАЦИИ ИДЕИ. ЭТО НАБРОСОК ЛИШЬ. А ВООБЩЕ ПОДСКАЖИТЕ КАК СНИМАТЬ ПОКАЗАТЕЛИ ВЕКТОРА,ЕСЛИ Я ХОЧУ КЛАСТЕРИЗОВАТЬ MACD X=(X1 X2 ... Xn)

1. Зачем нужна нам бинарная переменная x4.

В процессе обучения мы получаем матрицу весов в нашем случае 2 класса следовательно,

w=( w11 w12 )

w21 w22

(w31 w32)

Допустим мы обучили веса, теперь в режим работы советник подает вектор и он без труда отнесется к одному из классов, но что значит этот класс непонятно. А из содержательного подхода мы будем снимать такие показатели MACD, т.е. подавать вектора x=(x1 x2 x3), чтобы можно было априорно(идентифицировать) движение цены.

2. Реализация определения класса.

Как я вижу. У меня написан блок итерационный блок обучения, есть отдельный блок обучения с погружением в предысторию.

Алгоритм примерный определения бинарной переменной id (веса не обучены)

0)kk=равен числу пропущенных баров в истории k=1;

1) Если не первый проход : if (Close[0]>a) id[kk-k+1]=1; id[kk-k+1]=0;

2) подается вектор x. a=Close[0]

3)

обучение весов (алгоритм обучения сети кохонена)

каждый вектор у меня запоминается в глобальный массив

k++;

если не добрались до текущей даты и времени goto 1)

4) в конце провести глобальную классификацию, внeсти результаты в вектор class[] и сопоставить сформировавшийся вектор id[] затем

for (int i=1;i++;kk) if class[i]=1 SumClass1=SumClass1+id[k];

else SumClass2=SumClass2+id[k];

if SumClass1>Sumclass2 будем OderType=OP_BUY; else OderType=OP_SELL

3. Именно бинарная нужна, думаю она самая простая в реализации.

 
Vinin:


Так все таки как определять ее значение? Я про х4

Ее значение может быть только от -1 до 1. Бинарным делать нельзя. Что-то типа вероятности. Но зачем тогда нужна сеть?


про x4 забудьте =) согласен, вы правильное замечание сделали. торопился, мысль присвоила мою отдельную переменную в x4. это же конечно неверно.