Minha EA faz uma entrada dupla - página 2

 
angevoyageur:

Isto parece uma explicação possível, mas se for o caso, não é normal. Você está usando o modo assíncrono? Caso contrário, seu EA deve aguardar a resposta do servidor e então apenas continuar e processar o próximo tick.

Se eu entender bem, esta é uma questão aleatória e você não pode reproduzi-la?

Você pode tentar imprimir mais informações de depuração adicionando esta linha após a declaração de m_Trade :


Hi

Desde minha solução descrita no posthttps://www.mql5.com/en/forum/14327 eu tive mais 1 comércio duplo.

Acho que o problema é a (lentidão) execução da função PositionSelect(Symbol()). Talvez os novos tiquetaques cheguem tão rápido que a EA envia uma nova ordem antes de receber uma resposta da função PositionSelect(Symbol()). Portanto, o tamanho da posição atual não é calculado corretamente. Em meu código, é teoricamente impossível enviar uma nova/dupla ordem se o tamanho da posição atual for igual ou maior que o tamanho máximo permitido da posição, ver código.

O servidor ao vivo (ECN) do corretor X gera tantos ticks durante um evento de notícias macroeconômicas, para cada tic que você vê no servidor de simulação de metaquotas, este servidor irá gerar 20, 30 ou 40 ticks!


PositionSelect(Symbol());

// Check of het model al LONG zit.             
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
      {
                                                           
// Check of het model al de maximale size in positie zit.                     
      if(PositionGetDouble(POSITION_VOLUME) >= MAX_Trade_Size)
            {
            return;
            }
      } 


Meu EA reverte automaticamente a posição dupla para obter o tamanho correto da posição como um backup adicional.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:
....

O servidor ao vivo (ECN) do corretor X gera tantos ticks durante um evento de notícias macroeconômicas, para cada tic que você vê no servidor de simulação de metaquotas, este servidor irá gerar 20, 30 ou 40 ticks!

Sim, isto é porque o DOM está ativo.

....

Meu EA reverte automaticamente a posição dupla para obter o tamanho correto da posição como um backup adicional.

Obrigado pela sua contribuição. Você tem este problema no mesmo corretor que outros, ou ele é independente do corretor?
 
angevoyageur:
Sim, isto é porque o DOM está ativo.
Obrigado pela sua contribuição. Você tem este problema no mesmo corretor que os outros, ou ele é independente do corretor?


O que é "DOM"???


Somente neste servidor de corretagem, eu nunca o experimentei no servidor de simulação (Metaquotes) desde que este tópico https://www.mql5.com/en/forum/14327 foi iniciado.

Antes desse período, o servidor do corretor X gera aproximadamente uma quantidade igual de ticks como o servidor de Metaquotes.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:


O que é "DOM"???


Somente neste servidor de corretagem, eu nunca o experimentei no servidor de simulação desde que este tópico https://www.mql5.com/en/forum/14327 foi iniciado.

Antes desse período, o servidor do corretor X gera aproximadamente uma quantidade igual de ticks como o servidor de Metaquotes.

DOM = Profundidade de Mercado, quando é ativado há muito mais eventos Tick.
 
angevoyageur:
DOM = Profundidade de Mercado, quando é ativado há muito mais eventos Tick.


É possível desativá-lo?

 
snelle_moda:


É possível desativá-lo?

Acho que não, tanto quanto sei, é possível do lado do corretor. Talvez você possa perguntar ao corretor.
 

Minimizei o número de carrapatos recebidos permitindo os carrapatos somente quando o preço em si foi alterado.


// De sum van de BID/LAST 
   static double dPriceSum;   
   double dOldPriceSum = dPriceSum;
   
// To be used for getting recent/latest price quotes
   MqlTick Latest_Price;      
   SymbolInfoTick(Symbol() ,Latest_Price);

   dPriceSum = Latest_Price.bid + Latest_Price.last; 

// Check if the price is (not)changed.
   if(dPriceSum == dOldPriceSum)
         {
         return;
         }
 
snelle_moda:

Minimizei o número de carrapatos recebidos permitindo os carrapatos somente quando o preço em si foi alterado.


e se o preço pedido estiver mudando ou a oferta aumentar 1 ponto e a última diminuir 1 ponto ? Um tick "normal" é uma mudança no Bid e/ou Ask.
 
angevoyageur:
e se o preço de venda estiver mudando ou se a oferta aumentar 1 ponto e a última diminuir 1 ponto ? Um tick "normal" é uma mudança no Bid e/ou Ask.

Esse é um bom ponto de vista. Talvez eu devesse usar apenas a mudança no preço BID.

Um BAR no gráfico também é baseado no preço BID?


Para o sinal de ativação da minha EA estou interessado apenas na mudança do preço no qual o BAR de 1 minuto está baseado.

 
Omg. Então, dormir não ajuda?

O que podemos fazer para evitar isso?