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ê só poderia responder se soubesse do que está falando?
Este é um tópico sobre o MT5/mql5, vou remover todos os posts irrelevantes.
Não há nenhum preço de parada na história do MT5.
O principal problema em mql5 (conta hedging) é conhecer o preço Stop Loss, quando uma posição é fechada, devido à falta de histórico de posições. Você pode usar HistorySelectByPosition() para encontrar seu Stop Loss inicial (Stop Loss da ordem inicial), mas se você tiver modificado esse Stop Loss mais tarde, ele gera novas ordens para fazê-lo, sem o mesmo POSITION_ID, e portanto, elas não serão selecionadas pela função HistorySelectByPosition(), portanto torna-se muito difícil saber o último Stop Loss que você colocou.
Eu não sei se pode ser considerado como um bug, mas se não, deve ser.
Cumprimentos.
O principal problema em mql5 (conta hedging) é conhecer o preço Stop Loss, quando uma posição é fechada, devido à falta de histórico de posições. Você pode usar o HistorySelectByPosition() para encontrar seu Stop Loss inicial (Stop Loss da ordem inicial)...
Não, você não pode ou eu o entendi mal.
O atual Stoploss não está em nenhum lugar da história.
Não, você não pode ou eu o entendi mal.
O Stoploss não está em lugar algum na história.
.o problema é quando você modifica esse Stop Loss mais tarde.
Você pode usar HistorySelectByPosition(), com seu POSITION_ID, e então você pode encontrar a primeira encomenda com esse POSITION_ID, e verificar o Stop Loss desta encomenda (HistoryOrderGetDouble(ticket, ORDER_SL)). Funcionou para mim, mas
.o problema é quando você modifica esse Stop Loss mais tarde.
Ok entendido agora, você está certo.
Você pode usar HistorySelectByPosition(), com seu POSITION_ID, e então você pode encontrar a primeira ordem com esse POSITION_ID, e verificar o Stop Loss desta ordem (HistoryOrderGetDouble(ticket,ORDER_SL). Funcionou para mim, mas
.o problema é quando você modifica esse Stop Loss mais tarde.
então verifique DEAL_ENTRY, se OUT, get HystoryDealGetDouble(ticket,DEAL_PRICE).
Se DEAL_PRICE igual a HistoryOrderGetDouble(ticket,ORDER_SL), então isso significa que a Ordem foi fechada devido ao fim da perda.
Aqui está meu opnião.
Ok entendido agora, você está certo.
Se DEAL_PRICE igual a HistoryOrderGetDouble(ticket,ORDER_SL), então isso significa que a Ordem foi fechada devido ao fim da perda.
E então, verifique ORDER_POSITION_ID igual a DEAL_POSITION_ID,
então verifique DEAL_ENTRY, se OUT, get HystoryDealGetDouble(ticket,DEAL_PRICE) .
Se DEAL_PRICE igual a HistoryOrderGetDouble(ticket,ORDER_SL), então isso significa que a Ordem foi fechada devido ao fim da perda.
Aqui está meu opnião.
E o escorregamento?
Não há necessidade de parecer escorregadio, pois o pedido foi fechado, e o preço é próximo ao HystoryDealGetDouble(bilhete, DEAL_PRICE).
Se o pedido não foi fechado, e você faz um pedido para fechar, então você deve considerar quanto escorregou, para que nenhum erro requeira.