Pergunta sobre a função OnTradeTransaction - página 3

 
Mikalas:

:)

1. EXEMPLO para FORTS

2. você não pode colocar parênteses?

3. Tenho a impressão de que você está lendo mensagens através de uma linha :)

Não, eu tenho a impressão de que você está escrevendo do outro lado da linha:

void OnTick()
{
  MqlTick a_tick; //Зачем этот зазор ниже?
                                           
  if ( SymbolInfoTick( _Symbol, a_tick ) )
  {
    PlaceOrder( _Symbol, a_tick.ask, 1, false );   //Устанавливаем ордер
  }     
}

:)) Coloco pontos de parada e ainda não entendi. Desculpe, mas seu código é feio. O pedido é enviado primeiro, e depois alguns cheques sem sentido são feitos naOnTradeTransaction e CheckOrder(). O volume também é calculado no verificador.

Não vamos torturar uns aos outros: Você faz pelo menos uma breve anotação de seu código (o que o autor queria dizer por assim dizer, que objetivos ele buscava:) e eu tentarei fazer uma análise não superficial do mesmo. Não quero voltar a chamá-lo como está agora, mesmo sob pontos de parada.

 
Mikalas:

:)

Vamos fazer desta maneira.

Eu lhe farei perguntas e você as responderá.

...

Vamos lá!
Mikalas:

Pergunta 1: Como você conhecerá o bilhete de pedido (enviando o comando OrderSendAsync), se o evento TradeTransaction não veio (ou não é usado)?

Reconhecerei o pedido através da função TrackingHistoryOrders, porque mais cedo ou mais tarde a ordem será executada e irá para o histórico do pedido, que esta função analisará.

 
C-4:

Tenho a impressão de que você está escrevendo através de uma linha:

Coloco pontos de parada e ainda não entendo. Desculpe, mas seu código é feio. O pedido é enviado primeiro, e depois alguns cheques sem sentido são feitos na OnTradeTransaction e CheckOrder(). O volume também é calculado no verificador.

Não vamos torturar uns aos outros: Você faz pelo menos uma breve anotação de seu código (o que o autor queria dizer por assim dizer, que objetivos ele buscava:) e eu tentarei fazer uma análise não superficial do mesmo. Não quero chamá-lo novamente na forma em que está agora, mesmo sob pontos de parada.

:):):)

Não sou mais um jovem (a foto tem 9 anos de idade), e estou mais confortável fazendo "lacunas" no código para melhor percepção.

E muitas pessoas também acham mais conveniente ler o código quando linhas e colunas de 100 caracteres não estão escritas juntas.

Você acha que é "feio" porque VOCÊ levou tempo para inventar seu próprio método de

Comando OrderSendAsync, então você acha que código diferente = feio! :)

O princípio é muito simples, e você o conhece, porque participou de discussões sobre o assunto.

A solução para este problema foi sugerida por Yurich, que foi que para cada ordem do comando OrderSendAsync

tem sua própria magia, então esta ordem, se o evento TradeTransaction não chegou, é muito fácil de encontrar (por magia).

Uma gama de números mágicos é alocada para cada símbolo, por exemplo, para AUDUSD de 1010000 a 1019999,

para EURUSD de 1020000 a 1029999

Estes números únicos podem ser repetidos ao longo do tempo

if ( mem_magic >= ( magic_number + 9999 ) ) mem_magic = magic_number;  //Переполнение, начинаем сначала

Para evitar "entrar" em outra ordem, há uma variável (datetime mem_time;)

que armazena a data e a hora em que o pedido foi feito.

Devemos continuar com isto?

 
C-4:
Vamos lá!

Eu recebo o ticket do pedido através da função TrackingHistoryOrders, porque mais cedo ou mais tarde o pedido será executado e entrará no histórico de pedidos, que será analisado por esta função.

Tudo bem, mas preciso disso mais cedo do que tarde (a ordem pode "pendurar" por um dia e não vai ficar na história).

Eu quero modificá-lo!

Eu quero apagar!

 

Toda a confusão e muito código auxiliar vem desta frase: Além disso,as transações podem se perder na entrega do servidor para o terminal.

Alguém pode esclarecer a situação? Quem pode perder uma transação pessoalmente (falhas de câmbio, fechamento de corretor, paradas do servidor MQ MT5)?

Por que a MQ não quer garantir a entrega das transações, quem se beneficia?

 
Serj_Che:

Toda a confusão e muito código auxiliar vem desta frase: Além disso,as transações podem se perder na entrega do servidor para o terminal.

Alguém pode esclarecer a situação? Quem pode perder uma transação especificamente em pessoas (falhas na troca, fechamento do corretor)?

Por que a MQ não quer garantir a entrega das transações, quem se beneficia?

Ninguém faz, mas a MQ "não tem recursos" para fazer tudo de uma só vez, e há muitos projetos, e

os programadores talentosos são escassos, por isso está demorando muito...

Eles irão, é claro. (Eles já têm tudo para isso, além do próprio mecanismo de rastreamento).

 
Basil, então como modificar (apagar) um OrderSendAsync emitido se você não tem um bilhete?
 
Mikalas:

Ninguém é beneficiado, a MQ não consegue deitar as mãos a tudo de uma vez, e há muitos projetos, mas

os programadores talentosos são escassos, por isso está demorando muito...

Eles irão, é claro. (eles já têm tudo para isso, exceto o próprio mecanismo de rastreamento).

Tanto quanto sei, a troca dá tudo de si. Também não faz sentido para um corretor normal perder nada.

Na MQ é o que parece. MQ tem MetaTrader5 e a integração com o intercâmbio não é uma prioridade.

 
Serj_Che:

No que me diz respeito, a troca dá tudo de si. Também não faz sentido para um corretor normal perder nada.

Isto é similar ao MQ. MQ tem MetaTrader5 e a integração com o intercâmbio não é uma prioridade.

Sim, isto é porque não há cozinha na troca (apenas comissões), e há milhões de seguidores MMM no FOREX,

Eles podem ter $100, mas TODOS têm! Muito dinheiro, há algo a contar! :)

 

Vasily, vai haver uma resposta?

Acho que não.

Eu ganhei?

Razão: