Estou tendo um problema bem estranho ao tentar a colocação de um stop loss "hard", como medida de segurança em meus EAs, que operam com stop loss "soft", enviado pelo código como market order.
Criei um EA super simplificado (e idiota, obviamente não é para ser usado em operações reais) para possibilitar a verificação do meu problema. Ia postar tudo no fórum internacional, mas pensei seria mais difícil receber ajuda por lá.
Executando este EA com Mini Índice (WINJ23), em conta hedging, para, por exemplo, a sexta-feira passada, 03/03/2023, ele executa as ordens de compra e venda corretamente em várias tentativas.
Se faço o mesmo para a quinta feira, 02/03/2023, ele, ou falha já na primeira tentativa, ou então processa a primeira tentativa corretamente e falha em todas as tentativas seguintes, fechando a Position que acabou de ser aberta, sabe-se lá por quê.
O código é bem simples e está comentado, então creio que será fácil testá-lo.
Agradeço muito se alguém puder me ajudar.
Stop e preço não estão normalizados. Voce precisa normalizar eles. Eu normalizo até o ask/bid, mas se quiser so normalizar o stop já provavelmente some seu erro.
Obrigado pela sugestão, Ricardo, mas o problema continua mesmo com os valores normalizados com 0, 1 ou 2 dígitos a Posição continua sendo zerada na segunda tentativa:
OrderPrice = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK),0); //ou ,1) ou ,2)
ProtectStoploss = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK)-800,0); //ou ,1) ou ,2)
Tentei também, sem sucesso:
int OrderPrice = 0;
int ProtectStoploss = 0;
OrderPrice = int(SymbolInfoDouble(_Symbol, SYMBOL_ASK));
ProtectStoploss = int(SymbolInfoDouble(_Symbol, SYMBOL_ASK)-800);
Vou tentar amanhã, em operação real ( só 1 contrato :) ), com os valores normalizados, vamos ver o que acontece.
Obrigado pela sugestão, Ricardo, mas o problema continua mesmo com os valores normalizados com 0, 1 ou 2 dígitos a Posição continua sendo zerada na segunda tentativa:
OrderPrice = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK),0); //ou ,1) ou ,2)
ProtectStoploss = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK)-800,0); //ou ,1) ou ,2)
Tentei também, sem sucesso:
int OrderPrice = 0;
int ProtectStoploss = 0;
OrderPrice = int(SymbolInfoDouble(_Symbol, SYMBOL_ASK));
ProtectStoploss = int(SymbolInfoDouble(_Symbol, SYMBOL_ASK)-800);
Vou tentar amanhã, em operação real ( só 1 contrato :) ), com os valores normalizados, vamos ver o que acontece.
- 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 tendo um problema bem estranho ao tentar a colocação de um stop loss "hard", como medida de segurança em meus EAs, que operam com stop loss "soft", enviado pelo código como market order.
Criei um EA super simplificado (e idiota, obviamente não é para ser usado em operações reais) para possibilitar a verificação do meu problema. Ia postar tudo no fórum internacional, mas pensei seria mais difícil receber ajuda por lá.
Executando este EA com Mini Índice (WINJ23), em conta hedging, para, por exemplo, a sexta-feira passada, 03/03/2023, ele executa as ordens de compra e venda corretamente em várias tentativas.
Se faço o mesmo para a quinta feira, 02/03/2023, ele, ou falha já na primeira tentativa, ou então processa a primeira tentativa corretamente e falha em todas as tentativas seguintes, fechando a Position que acabou de ser aberta, sabe-se lá por quê.
O código é bem simples e está comentado, então creio que será fácil testá-lo.
Agradeço muito se alguém puder me ajudar.