[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 403

 
Nail_Saby писал(а) >>

Кусок кода с for я взял с готовой функции http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66...

А return() самый нижний убрать что ли? Чтобы заработало?

Начинать надо с логики. Что и как ты хотел получить.

 

Подскажите почему нельзя приравнять значение одной МА к другой и в случае их равенства открывать сделку. У меня работает только со знаками <= или >=, а никак иначе.

 
Stanislav.exe >>:

Подскажите почему нельзя приравнять значение одной МА к другой и в случае их равенства открывать сделку. У меня работает только со знаками <= или >=, а никак иначе.

переменные типа double не рекомендуется сравнивать

 
sanyooooook писал(а) >>

переменные типа double не рекомендуется сравнивать

Так как правильно написать если мне нужно именно пересечение, а не больше или меньше?

И ещё один момент можно ли считать количество сделок за время равное: от первого пересечения МА до их повторного пересечения?

Если да то как...

 
Stanislav.exe >>:

Так как правильно написать если мне нужно именно пересечение, а не больше или меньше?

И ещё один момент можно ли считать количество сделок за время равное: от первого пересечения МА до их повторного пересечения?

Если да то как...

   ma=iMA(NULL,0,MovingPeriod,0,MODE_EMA,PRICE_CLOSE,5);
   ma1=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_EMA,PRICE_CLOSE,5);
   ma2=iMA(NULL,0,MovingPeriod,0,MODE_EMA,PRICE_CLOSE,1);
   ma3=iMA(NULL,0,MovingPeriod1,MovingShift,MODE_EMA,PRICE_CLOSE,1);
//---- sell conditions
   if (ma1<ma && ma2<ma3) 
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),5,0,0,"",MAGICMA,0,Red);
      f=0;
      return;
     }
//---- buy conditions
   if (ma1>ma && ma2>ma3)
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),5,0,0,"",MAGICMA,0,Blue);
      f=0;
      return;
один из вариантов кода
 
sanyooooook писал(а) >>
один из вариантов кода

Спасибо sanyooooook, если можно, что означает последняя цифра в

ma=iMA(....... ..PRICE_CLOSE,.... вот эта пятёрочка 5);

И ещё на счёт количества сделок, можно прописать, чтоб их было например только 1 или 2..3 за время перечения МА

 
Stanislav.exe >>:

Спасибо sanyooooook, если можно, что означает последняя цифра в

ma=iMA(....... ..PRICE_CLOSE,.... вот эта пятёрочка 5);

И ещё на счёт количества сделок, можно прописать, чтоб их было например только 1 или 2..3 за время перечения МА

в метаэдиторе выдели интересующий тебя текст в данном случае iMA и нажми F1, информация о выделенной строке появится внизу окна

 
sanyooooook писал(а) >>

в метаэдиторе выдели интересующий тебя текст в данном случае iMA и нажми F1, информация о выделенной строке появится внизу окна

shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

Как это по русски понять дружище, я это уже читал всё равно допереть не могу...

 
Stanislav.exe >>:
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).

Как это по русски понять дружище, я это уже читал всё равно допереть не могу...

По простому это номер бара, с которого берется сигнал индикатора. Текущий бар нулевой, далее счет в глубину истории.

 

Пересечение проще и быстрее проверять по другому

   ma11=iMA(NULL,0,MovingPeriod,0,MODE_EMA,PRICE_CLOSE,1);
   ma12=iMA(NULL,0,MovingPeriod,0,MODE_EMA,PRICE_CLOSE,2);
   ma21=iMA(NULL,0,MovingPeriod1,0,MODE_EMA,PRICE_CLOSE,1);
   ma22=iMA(NULL,0,MovingPeriod1,0,MODE_EMA,PRICE_CLOSE,2);
   if ((ma11-ma12)*(ma21-ma22)<0) {
       //пересечение есть
       if (ma11>ma21)  // Пересечение вверх
       if (ma11<ma21)  // Пересечение вниз
   }
Скорость работы выше. Логические сложные выражение выполняются дольше простых. Умножение быстрее логического