Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 277

 
mila.com:
Olá.
Por favor, ajude-me a comparar o preço de MA na primeira barra com os preços de MA nas quatro barras anteriores. Se o preço tiver aumentado e a diferença for maior que N, preencha o buffer. Eu estou tentando desta maneira

Qual foi o aumento de preço - o MA? Ela aumentou em relação a cada barra sucessiva (valor na barra) ou em relação a qualquer uma das quatro?

 
Aleksey Vyazmikin:

Qual foi o aumento de preço - o MA? Subiu em relação a cada barra subseqüente (valor na barra) ou em relação a qualquer uma das quatro?

Sim, para qualquer bar.

Condição: Se o valor da MA na primeira barra aumentou em N em relação ao valor da MA em qualquer uma das quatro barras anteriores, então, buffer.

Preciso saber que o valor do MA aumentou em "N" pips, e não importa por que período de tempo, mas não consigo pensar em nada além de uma comparação em um número limitado de barras.

 
mila.com:

Sim, para qualquer pessoa.

Condição: Se o valor da linha MA na primeira barra aumentou em N em relação ao valor MA em qualquer uma das quatro barras anteriores, então buffer.

Preciso saber que o valor do MA aumentou por "N "pips, e não importa o tempo, mas além de comparar em um número limitado de bares não consigo pensar em nada.


Então por que você não subtrai um valor de MA do outro e olha para o delta - compare-o com o baixo, por que estes ciclos?

 
Aleksey Vyazmikin:

Então por que você não subtrai um valor de MA do outro e olha para o delta - compare-o com o mínimo, por que estes ciclos?

O preço pode mudar lentamente em várias barras, um cachimbo de cada vez (nocional) a quinta será a mudança que você está procurando.

 
mila.com:

O preço pode mudar lentamente em várias barras


Então pegue o valor indicador 4 barras atrás e o valor atual e compare - se o período médio não for super raso, então o aumento é suave...

 

Ou você tem indicadores com configurações diferentes?

 
Aleksey Vyazmikin:

Portanto, pegue o valor indicador 4 barras atrás e o valor atual e compare - se o período médio não for super raso, o aumento é suave...

A diferença que você está procurando pode estar na segunda barra, mas você sugere comparar a primeira e a quarta.

 
mila.com:

A diferença que você está procurando pode estar na segunda barra, mas você sugere comparar a primeira e a quarta.


Qual é o período médio do MA - eu estava apenas me perguntando - você precisa de uma pausa?

 
mila.com:

Um indicador MA. Você pode ajudar com o loop?


Se eu entendi corretamente o que você quer, aqui está o roteiro - lide com ele.

#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);
  }
//+------------------------------------------------------------------+

Eu faço delta em valor positivo, se você precisar determinar com + ou -, então remova a linhase(DeltaMA<0)DeltaMA=DeltaMA*(-1); e leve em conta separadamente uma constante para comparação (com - e +)

 
Aleksey Vyazmikin: então aqui está o roteiro - lide com ele.
Obrigado

Razão: