сравнение машек

 

Пол дня бьюсь над элементарным,уже нет сил,может быть мне кто нибудь подскажет почему данный кусок кода не выписывает в журнале "rovny" когда в коментах значение двух машек совпадают


int start()
{
double ma_13_0 = iMA(Symbol(),0,13,0,MODE_SMA,PRICE_CLOSE,0);
double ma_26_0 = iMA(Symbol(),0,26,0,MODE_SMA,PRICE_CLOSE,0);


NormalizeDouble(ma_13_0,4);
NormalizeDouble(ma_26_0,4);

Comment("13 ma = ",ma_13_0,"\n",
"26 ma = ",ma_26_0,
);

if(ma_13_0 == ma_26_0)
Print("rovny");

return(0);
}

Файлы:
new_ma.mq4  1 kb
 

1. Момент точного совпадения двух машек существует только в непрерывном времени, которого в реальном трейдинге нет, т.к. тут оно измеряется дискретно, по мере поступления тиков. Так что у тебя шанс поймать такой момент ничтожно мал. Старайся ловить не точный момент воображаемого равенства, а временную область реального пересечения, т.е. условие должно быть типа ( ma1(1) - ma2(1) ) * ( ma1(0) - ma2(0) ) < 0.

2. Все сравнения чисел типа double рекомендуется осуществлять после их нормализации функцией NormalizeDouble() - примерно по этой же причине. Тема избитая, с бородой, поищи по имени этой функции здесь.

 
guliver88 писал(а) >>

Пол дня бьюсь над элементарным,уже нет сил,может быть мне кто нибудь подскажет почему данный кусок кода не выписывает в журнале "rovny" когда в коментах значение двух машек совпадают

int start()
{
double ma_13_0 = iMA(Symbol(),0,13,0,MODE_SMA,PRICE_CLOSE,0);
double ma_26_0 = iMA(Symbol(),0,26,0,MODE_SMA,PRICE_CLOSE,0);


ma_13_0=
NormalizeDouble(ma_13_0,4);
ma_26_0=
NormalizeDouble(ma_26_0,4);

Comment("13 ma = ",ma_13_0,"\n",
"26 ma = ",ma_26_0,
);

if(ma_13_0 == ma_26_0)
Print("rovny");

return(0);
}

 
Mathemat >>:

1. Момент точного совпадения двух машек существует только в непрерывном времени, которого в реальном трейдинге нет, т.к. тут оно измеряется дискретно, по мере поступления тиков. Так что у тебя шанс поймать такой момент ничтожно мал. Старайся ловить не точный момент воображаемого равенства, а временную область реального пересечения, т.е. условие должно быть типа ( ma1(1) - ma2(1) ) * ( ma1(0) - ma2(0) ) < 0.

2. Все сравнения чисел типа double рекомендуется осуществлять после их нормализации функцией NormalizeDouble() - примерно по этой же причине. Тема избитая, с бородой, поищи по имени этой функции здесь.

ясно,спасибо

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