Tabela de todos os ofícios. Acesso via MQL5 - página 5

 
prostotrader:

Aqui no meu código está a prevenção de duplicação:

Bem, então :) há uma perda de carrapatos em seu código.
 
Yury Kulikov:
Bem, então :) há uma perda de carrapatos em seu código.

:) mas por alguma razão são redundantes :)

Muito obrigado Yuri, vou dar uma olhada nisso.

 

De fato, ao mudar para COPY_TICKS_TRADE - o erro de mistura de ticks desapareceu, mas ao mesmo tempo no modo COPY_TICKS_TRADE as bandeiras não podem ser recebidas

  • TICK_FLAG_BUY - um tique ocorreu como resultado de um negócio de compra
  • TICK_FLAG_SELL - o carrapato ocorreu como resultado de um negócio de venda

 
Karputov Vladimir:

De fato, ao mudar para COPY_TICKS_TRADE - o erro de mistura de ticks desapareceu, mas ao mesmo tempo no modo COPY_TICKS_TRADE as bandeiras não podem ser recebidas

  • TICK_FLAG_BUY - um tique ocorreu como resultado de um negócio de compra
  • TICK_FLAG_SELL - o carrapato ocorreu como resultado de um negócio de venda

As bandeiras vêm como resultado de um verdadeiro comércio (estou testando agora)
 
Yury Kulikov:
Bem, então :) há uma perda de carrapatos em seu código.

Yuri, tente meu indicador (veja de perto)

Espero que os carrapatos apareçam, em vez de vê-los na história.

Eu copio cada vez, antes que novos carrapatos apareçam.

int copied=CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,start_time,0);

"0" é quantos carrapatos reapareceram.

Se copiado = 0, não há carrapatos novos.

Se removermos este "apoio".

if(start_time==ulong(ticks[copied-1].time_msc)) return;

então definitivamente haverá uma duplicação.

A tarefa não é visualizar o histórico do tick, mas exibir a alimentação do tick em tempo real.

 
prostotrader:
No real, as bandeiras entram (estou testando no real agora)

Sim, isso mesmo. Eu me confundi comCOPY_TICKS_INFO.

Adicionado:

no entanto, no modo COPY_TICKS_ALL os carrapatos, alguns, chegam em ordem de confusão.

 
prostotrader:

Yuri, tente meu indicador (olhe com cuidado)

Há letras demais em seu código :)

O algoritmo é simples. Em OnCalculate() olhar para o volume real, se ele mudou, então carregue os últimos ticks, lembre-se de quantos ticks eram no último momento (o mesmo valor time_msc), para que a próxima chamada CopyTicks() para cortar esses ticks do cálculo.

 
Yury Kulikov:

Há letras demais em seu código :)

Algoritmo é simples. Em OnCalculate() olhe o volume real, se ele mudou, então carregue os últimos ticks, lembre-se de quantos ticks eram no último momento (o mesmo valor time_msc), então a próxima chamada CopyTicks() exclua estes ticks do cálculo.

Obrigado, acho que sei como resolver o problema...
 
Yury Kulikov:

Há letras demais em seu código :)

Algoritmo é simples. Na OnCalculate () olhe o volume real, se ele mudou, você baixa os últimos ticks, e lembra quantos ticks eram no último momento (o mesmo valor time_msc), então a próxima chamada CopyTicks () exclui estes ticks do cálculo.

Yuri, muito obrigado mais uma vez pelo conselho competente.

Eu fiz tudo e funciona perfeitamente, mas por mais de 3 horas não há nenhuma situação que

Eu descrevi :)

 

Bem, finalmente! Funcionou!

Tudo está correto e os carrapatos não são mais duplicados ou perdidos.

A demonstração está no arquivo ZIP e, se você mesmo quiser verificá-la, a versão de depuração está no porão.

Arquivos anexados:
Razão: