Veja este tópico, provavelmente um pouco confuso, mas você pode encontrar a idéia.
O sistema de negociação MT5 é muito diferente do MT4, então você tem que mudar seu pensamento.

- www.mql5.com
Estou escrevendo um EA, modificando meu EA escrito para o MT4. Eu abro um pedido usando OrderSend.
Simplesmente se eu precisar entender (por fases da História), se a ordem enviada (a propósito.... eu tenho que verificar Ordem, Acordos ou Posição?), foi fechada porque chegou à StopLoss.
Verifiquei nos fóruns, mas não encontrei o que preciso....
ORDEM_PREÇO_CORRENTE | dá apenas o preço atual do símbolo do pedido |
que não pode ser comparada àORDER_SL. Suponho que o ORDER_PRICE_CURRENT é apenas o preço atual do símbolo e não o preço de fechamento do pedido.
Obrigado a todos por seu apoio.
É isto?
//-------------------------------- ES CIERRE POR SL ---------------------------------------------- bool esCierreSL(int ind, int modoInd= SELECT_BY_TICKET, int modoHist= MODE_TRADES) { bool resp= OrderSelect(ind, modoInd, modoHist)? (StringFind(OrderComment(), "[sl]", 0)>-1): false; return(resp); }
É isto?
A pergunta é sobre mql5, seu código é mql4.
Ocomentário do pedido não é uma maneira confiável de codificar.
A pergunta é sobre mql5, seu código é mql4.
Ocomentário do pedido não é uma maneira confiável de codificar.
Desculpe pelo necro, mas isto é bastante interessante na minha opinião.
Estou fazendo a transição de mql4 para mql5, e acho as mudanças nos sistemas de comércio e história bastante desafiadoras.
Para saber se uma negociação no livro de história foi fechada por stop-loss, take-profit, ou de outra forma:
- no MT4 você poderia comparar OrderStopLoss(), OrderTakeProfit() e OrderClosePrice(), ou simplesmente verificar OrderComment().
- na MT5 a única maneira possível me parece verificar o comentário de um negócio: HistoryDealGetString(tk, DEAL_COMMENT)
É interessante, mas se eu entendi corretamente, o objetivo é identificar mudanças comerciais baseadas no manuseio de eventos, na mosca.
Portanto, deve haver um programa de escuta (como um conselheiro especializado correndo em um gráfico) ou então nada é detectado.
Na minha opinião, a detecção de razões de fechamento comercial deve ser feita na carteira de negociação histórica porque é (ou deveria ser) a maneira mais segura de saber o que aconteceu, já que é agitada em algum lugar e não é capturada do ar.
Minha análise está errada? o que você acha?

- www.mql5.com
Marco: Tanto o MT4 como o MT5 quando um pedido é fechado por stop-loss ou take-profit escrevem [SL price] ou [TP price] no comentário (de maneiras diferentes... mas ainda assim). | Não, eles não escrevem. Esse é o seu corretor. Não é uma boa idéia, os corretores podem mudar os comentários, incluindo a colocação completa. |
Não, eles não fazem isso. Esse é o seu corretor. |
Ok, ambos os corretores MT4 e MT5 colocaram essa string no comentário... pelo menos os poucos que eu testei.
E concordo, isto não é uma boa idéia, uma vez que o comentário pode estar sujeito a mudanças pela mão do corretor.
Mas não vejo como isso poderia ser feito de maneira diferente, já que não consigo encontrar outros traços no livro de história comercial.
Existe uma maneira melhor de atingir este objetivo?
Entrei em contato com a central de atendimento há 2 anos (a respeito do MT4).
e eles responderam
Portanto, ele é feito pelo sistema, não pelo corretor. No entanto, ainda não ajuda se o corretor pode então mudá-lo.
Não notei nenhuma ocasião em que o corretor tenha alterado o comentário do pedido.
Normalmente, em meu código, é mais importante saber se uma negociação foi fechada com lucro ou prejuízo. Ao usar uma parada móvel, uma negociação pode atingir o SL, mas ainda assim ter lucro.
Entrei em contato com a central de atendimento há 2 anos (a respeito do MT4).
e eles responderam
portanto, isso é feito pelo sistema, não pelo corretor. No entanto, ainda não ajuda se o corretor puder mudá-lo.
Não notei nenhuma ocasião em que o corretor tenha mudado o comentário do pedido.
Normalmente, em meu código, é mais importante saber se um negócio fechou com lucro ou prejuízo. Ao usar uma parada móvel, uma negociação pode atingir o SL, mas ainda assim ter lucro.
Obrigado Keith, isso é o que eu esperava, já que não consigo encontrar uma solução melhor.
Acredito que ambos os cartazes estão convertendo MQL4 em MQL5
De qualquer forma, basta comparar o preço de fechamento com o preço de perda de estoque.
Nota: Em conta real (especialmente ECN), provavelmente o preço de ativação tem uma lacuna entre o preço de fechamento pré-definido, então use "<=" ou ">=".
De qualquer forma, basta comparar o preço de fechamento com o preço de perda de estoque.
Nota: Em conta real (especialmente ECN), provavelmente o preço de ativação tem uma lacuna entre o preço de fechamento pré-definido, então use "<=" ou ">=".
Você não pode comparar o preço de fechamento com o preço de stop loss. Slippage significa que ele poderia fechar mais alto ou mais baixo do que o stop loss.
Portanto, "<=" ou ">=" não é útil.

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Estou escrevendo um EA, modificando meu EA escrito para o MT4. Eu abro um pedido usando OrderSend.
Simplesmente se eu precisar entender (por fases da História), se a ordem enviada (a propósito.... eu tenho que checar Order, Deals or Position?), foi fechada porque chegou a StopLoss.
Verifiquei nos fóruns, mas não encontrei o que preciso....
ORDEM_PREÇO_CORRENTE
dá apenas o preço atual do símbolo do pedido
que não pode ser comparada àORDER_SL. Suponho que o ORDER_PRICE_CURRENT é apenas o preço atual do símbolo e não o preço de fechamento do pedido.
Obrigado a todos por seu apoio.
EDIT :
Este tópico está agora em sua maioria obsoleto devido às novas possibilidades oferecidas pelo MT5 desde a construção de 1640.
Veja os últimos posts do tópico para alguns exemplos.