EA fechando posição no momento errado

 

Estou trabalhando no EA que opera na contra tendência, ao abrir a posição ele deveria encerrar quando o preço cruzasse a média em um TF maior que o do EA, porém, aparentemente está calculando a média móvel simples em vez da exponencial, e não sei onde está o erro. Poderiam ajudar??

A seta vermelha é onde deveria ser a saída da operação se considerar a média exponencial, mas se for a móvel o EA teria saído corretamente. A questão é que eu configurei a exponencial na média móvel.

Aqui é onde inicializo a média móvel, no caso é a do manipulador ma4Handle

   if((macdHandle=iMACD(NULL,0,MediaR,MediaL,9,PRICE_CLOSE))==INVALID_HANDLE||(maHandle=iMA(NULL,0,maPeriodFast,0,MODE_EMA,PRICE_CLOSE))==INVALID_HANDLE||(ma2Handle=iMA(NULL,0,maPeriodSlow,0,MODE_EMA,PRICE_CLOSE))==INVALID_HANDLE||(ma3Handle=iMA(NULL,Period_TF_Higher,maPeriodSlow,0,MODE_EMA,PRICE_CLOSE))==INVALID_HANDLE||(ma4Handle=iMA(NULL,Period_TF_Higher,maPeriodFast,0,MODE_EMA,PRICE_CLOSE))==INVALID_HANDLE)
     {
      Alert("Erro ao criar handles para indicadores - erro: ", GetLastError(), "!!");
      return(false);
     }


E aqui é onde verifico se há uma posição em aberto e comparo o valor de máximo da vela atual com a média em questão.

         if(posAberta)
         {
           // printf("high1 %.2f, high2 %.2f, high3 %.2f e high4 %.2f e high %.2f MÉDIA %.2f",p_high1,p_high2,p_high3,p_high4,p_close1,p_high,media4);
            if(media4 <= p_high1) FechaPosicao();
           
         }
 
ale_ifet:

Estou trabalhando no EA que opera na contra tendência, ao abrir a posição ele deveria encerrar quando o preço cruzasse a média em um TF maior que o do EA, porém, aparentemente está calculando a média móvel simples em vez da exponencial, e não sei onde está o erro. Poderiam ajudar??

A seta vermelha é onde deveria ser a saída da operação se considerar a média exponencial, mas se for a móvel o EA teria saído corretamente. A questão é que eu configurei a exponencial na média móvel.

Aqui é onde inicializo a média móvel, no caso é a do manipulador ma4Handle


E aqui é onde verifico se há uma posição em aberto e comparo o valor de máximo da vela atual com a média em questão.

Olá. Ele está usando corretamente a.media exponencial, disso pode ter certeza...

Eu usaria uns prints (ou a depuração) para saber naquela vela o que aconteceu.

Mais fácil, roda o bt visual bem lento nessa parte e deixe no timeframe maior para ver o valor da média

.
 
Ricardo Branco #:
Olá. Ele está usando corretamente a.media exponencial, disso pode ter certeza...

Eu usaria uns prints (ou a depuração) para saber naquela vela o que aconteceu.

Mais fácil, roda o bt visual bem lento nessa parte e deixe no timeframe maior para ver o valor da média

.

Obrigado pela dica, entendi o que aconteceu, a média só encosta após as próximas barras, por isso ele não encerrava a operação, ao ver gráfico parado dava a impressão de ter encostado antes na barra, mas realmente na primeira vez que encosta é quando o EA encerra.

 
ale_ifet #:

Obrigado pela dica, entendi o que aconteceu, a média só encosta após as próximas barras, por isso ele não encerrava a operação, ao ver gráfico parado dava a impressão de ter encostado antes na barra, mas realmente na primeira vez que encosta é quando o EA encerra.

Imaginei que era isso...

Mas o que importa é que deu certo.


Sucesso!