OnTradeTransaction - página 6

 
prostotrader:

Você pode não se lembrar de nada

Eu concordo que isso funcionaria (no caso de uma vazão completa)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

Mas a conversa parece estar ficando um pouco mais ampla.
 
Andrey Dik:

Você é muito desatento, eu não souo iniciante do tópico.

Você também deveria me mostrar um código como este:

//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  
}  

Se você não gostar, você pode usar Joba! É assim?

Já gastei tempo suficiente para responder à sua pergunta.

Se sua pergunta não fosse tão "abstrata", talvez a resposta fosse mais específica.

Nomeadamente:

1. FORTS ou FOREX

2. Que tipo de rede ou hedgie você usa?

3. se outras ordens são usadas durante a vida útil da posição

A pergunta é a mesma que a resposta.

 
fxsaber:
Concordo que isso funcionaria (no caso de um preenchimento completo)
void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{
  if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
    Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}

Mas a conversa parece estar ficando um pouco mais ampla.

Não me lembro que esse volume possa ser definido para ST/TP.

Caso contrário (vou verificar agora), a posição fechará FULL ou SL ou TP

 
prostotrader:

Não me lembro de esperar pela ST/TP para definir o volume, se não,

então a posição fechará FULL ou SL ou TP

A liquidez pode simplesmente não ser suficiente.
 
fxsaber:
A liquidez pode simplesmente não ser suficiente.
Sim, e o Corretor pode desligar a energia :)....
 
prostotrader:
Sim, e o Corretor pode desligar a energia :)....
Pegue um instrumento de baixa liquefação e pronto.
 
fxsaber:
Pegue um instrumento de baixa liquefação e pronto.

É por isso que recomendei o uso de pedidos pendentes

Adicionado por

Muita coisa depende do mercado e do instrumento...

 
<br/ translate="no">

Para identificar com precisão qual ordem foi respondida no evento da OnTradeTransaction, todos os eventos que não sejam o primeiro evento de ordem são assinados com um ingresso.

O primeiro evento é assinado tanto pelo ingresso quanto pelo request_id. O request_id é obtido pelo usuário logo após o pedido ser submetido pela função OrderSendAsinc. É assim que uma iteração específica de OrderSendAsinc está ligada aos resultados obtidos na OnTradeTransaction.

O ingresso no OrderSendAsync pode até não existir, e muito provavelmente não existirá se estivermos disparando ordens a cem por segundo (retcode 10008 na melhor das hipóteses, e é isso).

 
dmipec:

O bilhete na OrderSendAsync pode ou não estar lá e muito provavelmente não estará lá se as ordens forem disparadas em algumas tsas (retcode 10008 na melhor das hipóteses e é isso).

Bem, não dez, apenas 30 por segundo em um login padrão.

Se você o escreveu corretamente, a(s) ordem(s) estará(ão) definitivamente lá.

 
Vasiliy Sokolov:

Em vez de analisar eventos, você deve analisar o ambiente comercial e somente se o ambiente comercial tiver mudado é que você deve tomar as decisões necessárias. A OnTransaction só pode ser usada em casos muito limitados, e geralmente é melhor prescindir dela em seu trabalho. Veja o MetaTrader 4, ele não tem a OnTransaction e todos o fazem sem ele.

Eu concordo. Mas infelizmente na MT5, ao contrário da MT4, o ambiente comercial pode não corresponder à realidade. Por exemplo, quando uma ordem pendente é executada por vários milissegundos, ela pode não estar em lugar algum. E mesmo a OnTradeTransaction não vai ajudar aqui.