Bom dia amigos, fiz um robô que utiliza o trailing stop, no índice ele funciona perfeitamente, já no dólar esta acusando o seguinte erro:
"2019.02.03 09:59:33.589 2019.01.31 09:00:35 failed modify #2 sell 5.00 WDOH19 sl: 3690.000, tp: 3670.000 -> sl: 3689.990, tp: 3673.500 [Invalid stops]"
O código que modifica a ordem é o seguinte:
Agradeço se os amigos experientes puderem ajudar!
O trecho de código que postou não permite avaliar se ha erro na logica do Trailing.
[ ]'s
"2019.02.03 09:59:33.589 2019.01.31 09:00:35 failed modify #2 sell 5.00 WDOH19 sl: 3690.000, tp: 3670.000 -> sl: 3689.990, tp: 3673.500 [Invalid stops]"
Olá JD,
o valor SL não é valido ter obedecer o TickSize que é de 0.500
O trecho de código que postou não permite avaliar se ha erro na logica do Trailing.
[ ]'s
Olá Joscelino, obrigado pela atenção, sim, de fato, coloquei o código reduzido para facilitar o trabalho, o que acontece é que como nosso amigo Rogério disse o tick é 0.500 e algumas vezes o cálculo para o trailing dá valores que não são múltiplos do tick, por exemplo: 95453 ao invés de 95450. Estou pensando em criar uma função para solucionar o problema, mandei a mensagem no intuito de descobrir se já existe algo pronto que resolva esse problema.
Obrigado.
Olá JD,
o valor SL não é valido ter obedecer o TickSize que é de 0.500
Olá novamente caro Rogério e obrigado mais uma vez pela atenção...
Sim, perfeita colocação, é o problema que ocorre, ele dá números quebrados, por exemplo, ao invés de 95450 ele tenta colocar o 95453, penso em criar uma função para resolver isso, caso não exista alguma ferramenta já pronta.
Obrigado.
Olá,
use a função da classe cSymbol... abaixo um exemplo.
TP=cSymbol.NormalizePrice(inpTakeProfit*Pnt);
SL=cSymbol.NormalizePrice(inpStopLoss*Pnt);
At.te
Rogério
Olá,
use a função da classe cSymbol... abaixo um exemplo.
TP=cSymbol.NormalizePrice(inpTakeProfit*Pnt);
SL=cSymbol.NormalizePrice(inpStopLoss*Pnt);
At.te
Rogério
Em azul esta a posição colocada perfeitamente e em vermelho a mudança de posição...
Olá,
use a função da classe cSymbol... abaixo um exemplo.
TP=cSymbol.NormalizePrice(inpTakeProfit*Pnt);
SL=cSymbol.NormalizePrice(inpStopLoss*Pnt);
At.te
Rogério
Sua sugestão foi perfeita, deu certo, não temos mais valores quebrados, mas perceba que o erro continua....
Sua sugestão foi perfeita, deu certo, não temos mais valores quebrados, mas perceba que o erro continua....
Olá
antes de emitir o modify tem que garantir que o SL<Bid e o TP>Ask
Obs: Mesmo assim qdo. os stops são muito curtos ou em momentos de alta volatilidade, a ordem ao chegar no servidor MT5 o preço já pode ter ultrapassado o SL ou TP.
Olá
antes de emitir o modify tem que garantir que o SL<Bid e o TP>Ask
Obs: Mesmo assim qdo. os stops são muito curtos ou em momentos de alta volatilidade, a ordem ao chegar no servidor MT5 o preço já pode ter ultrapassado o SL ou TP.
Boa noite caro Rogério, acredito que é isso mesmo que esteja acontecendo, devido aos stops curtos...mais uma vez, grato pela atenção, é sempre de grande ajuda...
- 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
Bom dia amigos, fiz um robô que utiliza o trailing stop, no índice ele funciona perfeitamente, já no dólar esta acusando o seguinte erro:
"2019.02.03 09:59:33.589 2019.01.31 09:00:35 failed modify #2 sell 5.00 WDOH19 sl: 3690.000, tp: 3670.000 -> sl: 3689.990, tp: 3673.500 [Invalid stops]"
O código que modifica a ordem é o seguinte:
Agradeço se os amigos experientes puderem ajudar!