Minha EA faz uma entrada dupla - página 5

 
Klammeraffe:

A linha referente a "cada carrapato" pode ser o motivo pelo qual isso não acontece mais.

A função só é executada, quando aparece uma nova barra. Portanto, muito provavelmente, apenas o primeiro tique de uma barra pode executar uma troca. Após a primeira barra, o código recebe um "retorno" até que uma nova barra apareça. Talvez isso tenha sido resolvido para mim.

Acho que este pedaço de código é dos artigos:

Este é outro trabalho, mas se houver algum erro retornado pelo corretor ou em outro lugar, seu sinal não será mais válido, a menos que você mantenha um loop para verificar novamente e novamente.
 
doshur:
  • O código afixado inicialmente pelo doshur, pode explicar porque ele pode ver em seu diário de bordo "Posição aberta em..." enquanto nenhuma troca foi aberta. Isto porque, mesmo que a PositionOpen() retorne verdadeiro, não significa que uma troca foi colocada.Veja a documentação. Mas não pode explicar por que uma "dupla" troca foi colocada.
correção. Há uma dupla"Posição aberta em..." e 2 trocas foram abertas.
É claro. Quero dizer "por que ele podia ver...". A questão aqui é que não há nada em seu código que possa explicar por que você conseguiu estas duas negociações.
 
angevoyageur:
É claro. Quero dizer "por que ele podia ver...". A questão aqui é que não há nada em seu código que possa explicar por que você conseguiu estas duas negociações.
Ok. Entenda.
 
angevoyageur:

Acho que é muito importante encontrar a razão por trás desta questão, é claro que também é importante ter uma alternativa (Dormir ?) até que possamos entender completamente o que está acontecendo. Por isso, tento retomar a situação:

* Ao utilizar o método PositionOpen da classe CTrade, pelo menos 3 usuários conseguiram, em algum momento, 2 negócios na mesma direção ao invés de 1, resultando em uma posição com um volume dobrado em relação ao que se espera.

Eu uso os dois métodos, para abrir nova posição = "old fashion way", modificando o stoploss = "classe CTrade".


* Este problema parece ocorrer no mesmo corretor, com um símbolo onde a Profundidade de Mercado é ativada (as pessoas envolvidas podem confirmar isto, por favor).

Sim, o servidor do corretor X, Profundidade de Mercado é ativado.


* Este problema ocorre com ordem síncrona, ordem assíncrona não foi utilizada (favor confirmar).

Sim, a ordem assíncrona não foi utilizada.


* O problema ocorre de forma aleatória.

Sim, mas somente durante as horas ocupadas do mercado( eventosmacroeconômicos ).



 

Na minha opinião, este problema pode ser facilmente resolvido.


A EA deve sempre esperar por uma resposta/resposta se a função "PositionSelect(Symbol())" for utilizada e o terminal tiver atualizado os dados da função, antes de poder retomar com a execução do código.

A EA deve sempre esperar por uma resposta/resposta se a função "OrderSend(mrequest,mresult)" for usada e o terminal tiver atualizado os dados da função, antes de poder retomar com a execução do código.


Menciono também o próprio terminal porque os dados da função serão copiados para o terminal e isso também levará algum tempo.

Desta forma, o tamanho da posição atual será sempre calculado corretamente, de modo que a ordem dupla não ocorrerá mais.


O que você acha?

 
snelle_moda:

Na minha opinião, este problema pode ser facilmente resolvido.


O EA deve sempre esperar por uma resposta/resposta se a função "PositionSelect(Symbol())" for utilizada e o terminal tiver atualizado os dados da função, antes de poder retomar com a execução do código.

A EA deve sempre esperar por uma resposta/resposta se a função "OrderSend(mrequest,mresult)" for usada e o terminal tiver atualizado os dados da função, antes de poder retomar com a execução do código.


Menciono também o próprio terminal porque os dados da função serão copiados para o terminal e isto também levará algum tempo.

Desta forma, o tamanho da posição atual será sempre calculado corretamente, de modo que a ordem dupla não ocorrerá mais.


O que você acha?

Não tenho certeza do que você quer dizer com "esperar sempre por uma resposta...". ?

De qualquer forma, eu preenchi um pedido ao ServiceDesk para pedir conselhos. Veremos.

 
angevoyageur:

Não tenho certeza do que você quer dizer com "esperar sempre por uma resposta...". ?

De qualquer forma, eu preenchi um pedido ao ServiceDesk para pedir conselhos. Veremos.

"Não tenho certeza do que você quer dizer com "sempre aguarde uma resposta..." ?"


A EA deve esperar/parar até que a função PositionSelect(Symbol()) tenha completado a cópia dos dados sobre uma posição para o ambiente do programa.

Veja-o como uma função de sono forçado ().

 
snelle_moda:

"Não tenho certeza do que você quer dizer com "esperar sempre por uma resposta..." ?"


A EA deve esperar/parar até que a função PositionSelect(Symbol()) tenha completado a cópia dos dados sobre uma posição para o ambiente do programa.

Veja-o como uma função de sono forçado ().

Ok, entendido. Mas não consigo me satisfazer com tal solução, ou há algo que não entendemos ou há um bug em algum lugar.
 
Só espero que haja uma solução.

De qualquer forma, Feliz Natal para todos.
 
Alguma atualização da central de serviço?