В чём ошибка? (индюк МА)

 

Господа, в чём может быть у меня ошибка?

пытаюсь сделать индюка который показывал бы факт пересечения двух МА (с различными периодами).

ЗЫ: взял за основу чей-то индюк, основанный на различных фигурах по свечкам и стал его докручивать своими плюшками (паралельно изучая что к чему м МКЛ):

bool Ma1Ma2 (int i1)
  {
   double MA1=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,Open[i1],1);     // вот тут первая МА с периодом 12
   double MA2=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,Open[i1],1);     // вот тут вторая МА с периодом 48
   if (MA1 == MA2)
    return(true);
   else
      return(false);   
  }

эта функция возвращает ТРУ или ФОЛЗ если был факт пересечения (по-идее)

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



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

 
Xalegi писал (а) >>

Господа, в чём может быть у меня ошибка?

пытаюсь сделать индюка который показывал бы факт пересечения двух МА (с различными периодами).

ЗЫ: взял за основу чей-то индюк, основанный на различных фигурах по свечкам и стал его докручивать своими плюшками (паралельно изучая что к чему м МКЛ):

эта функция возвращает ТРУ или ФОЛЗ если был факт пересечения (по-идее)

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



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

Почитайте тут.

'Пересечение MA с разными периодами.'


И еще тут интересная статья.

 
Xalegi писал (а) >>

Господа, в чём может быть у меня ошибка?

пытаюсь сделать индюка который показывал бы факт пересечения двух МА (с различными периодами).

ЗЫ: взял за основу чей-то индюк, основанный на различных фигурах по свечкам и стал его докручивать своими плюшками (паралельно изучая что к чему м МКЛ):

эта функция возвращает ТРУ или ФОЛЗ если был факт пересечения (по-идее)

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


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

вы написали неверно

у вас ошибка при поиске пересечения

проблема в том что четко получит = двух мувингов не достаточно

необходим более сложный анализ

наберите в окне поиск - слово "пересечение" - найдете массу интересного

для информации почитайте еще и тут

'Пожалуйста помогите написать маленькую программу'

 

вообщем "УХУ" :)



начал читать и понимать что не всё так просто выходит с пересечениям...



НО... смотрите, что вообщем получается:

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

y1 = a1 + b1 * x1


y2 = a2 + b2 * x2



вообщем получаем систему уравнений... если допустим на каком-то моменте они пересекутся, то какая-та из координат (допустим ось времени, т.е. в какое-то время произошло пересечение) будет одинакова и по ней можно будет найти оставшуюся координату...



или меня не правильно учили в школе и в институте ? :)

 

вообщем надо было сходить покурить :)

пока курил я понял почему с пересечением могут быть большие проблемы :)

вообщем вопрос снимается :) что касаемо именно пересечения МА...

 

условие пересечения:

   if  ( ( (MA1[0] - MA2[0]) * (MA1[1] - MA2[1]) ) <= 0 )

если произведение разниц между текущим баром и предыдущем меньше либо равно нулю

 
Xalegi писал (а) >>

вообщем "УХУ" :)


начал читать и понимать что не всё так просто выходит с пересечениям...

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