Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Você pode não se lembrar de nada
{
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.
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.
Concordo que isso funcionaria (no caso de um preenchimento completo)
{
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
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.
Sim, e o Corretor pode desligar a energia :)....
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...
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).
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á.
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.