Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 277

 
mila.com:
Здравствуйте.
Помогите, пожалуйста, сравнить цену МА на первом баре с ценами МА на предыдущих  четырёх барах. Если цена выросла и разница больше N заполнить буфер. Пытаюсь так

Цена какая выросла - МА? Выросла по отношение к каждому последующему бару(значению на баре) или по отношению к любому из четырех?

 
Aleksey Vyazmikin:

Цена какая выросла - МА? Выросла по отношение к каждому последующему бару(значению на баре) или по отношению к любому из четырех?

Да, К любому.

Условие: Если значение линии МА на первом баре увеличилось на N относительно значения МА на любом из четырёх предыдущих баров, то буфер.

Мне нужно знать, что значение МА выросло на  "N"пипс, и неважно за какое время, но кроме сравнения на ограниченном количестве баров ничего не придумала.

 
mila.com:

Да, К любому.

Условие: Если значение линии МА на первом баре увеличилось на N относительно значения МА на любом из четырёх предыдущих баров, то буфер.

Мне нужно знать, что значение МА выросло на  "N"пипс, и неважно за какое время, но кроме сравнения на ограниченном количестве баров ничего не придумала.


Так почему бы Вам не отнимать одно значение МА от другого и смотреть на дельту - сравнивать её с минимумом, зачем эти циклы?

 
Aleksey Vyazmikin:

Так почему бы Вам не отнимать одно значение МА от другого и смотреть на дельту - сравнивать её с минимумом, зачем эти циклы?

Цена может меняться медленно на протяжении нескольких баров по одному пипсу (условно) на пятом будет искомое изменение.

 
mila.com:

Цена может меняться медленно на протяжении нескольких баров


Так возьмите значение индикатора 4 бара назад и текущее и сравните - если период усреднения не сверх мелкий, то прирост плавный...

 

Или у Вас индикаторы с разными настройками?

 
Aleksey Vyazmikin:

Так возьмите значение индикатора 4 бара назад и текущее и сравните - если период усреднения не сверх мелкий, то прирост плавный...

Искомая разница может быть и на втором баре, а вы предлагаете сравнивать первый и четвёртый.

 
mila.com:

Искомая разница может быть и на втором баре, а вы предлагаете сравнивать первый и четвёртый.


Какой период усреднения у МА - просто уж интересно стало - вам перелом что ль нужен?

 
mila.com:

Один индикатор МА. Вы поможете с циклом?


Если я правильно понял, чего Вы хотите, то вот скрипт - разберитесь с ним.

#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int period_iMA=16;
input double N_=0.005;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double DeltaMA=0.0;
   int Nbar=0;
   for(int i=1;i<5;i++)
     {
      DeltaMA=iMAf(1)-iMAf(i);
      if(DeltaMA<0)DeltaMA=DeltaMA*(-1);
      if(N_-DeltaMA<0) {Nbar=i; break;}
     }
   Print("Бар привышения - ",Nbar);

  }
//+------------------------------------------------------------------+
double iMAf(int index)
  {
   return NormalizeDouble(iMA(Symbol(),0,period_iMA,0,0,0,index),Digits);
  }
//+------------------------------------------------------------------+

Дельту я делаю в положительное значение, если Вам надо определять с учетом + или - , то уберите строку if(DeltaMA<0)DeltaMA=DeltaMA*(-1); и учитываете отдельно константу для сравнения (с - и +)

 
Aleksey Vyazmikin: то вот скрипт - разберитесь с ним.
Спасибо

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