Problemas no trailing

Para adicionar comentários, por favor Faça o login ou registrar
jdmaster
79
jdmaster  

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:


cTrade.PositionModify(PositionTicket,NormalizeDouble(CurrentStopLoss-trai*_Point,_Digits),bid-inpTakeProfit);


Agradeço se os amigos experientes puderem ajudar!

Joscelino Celso de Oliveira
517
Joscelino Celso de Oliveira  
jdmaster:

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

Rogerio Giannetti Torres
2037
Rogerio Giannetti Torres  
jdmaster:

"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  

jdmaster
79
jdmaster  
Joscelino Celso de Oliveira:

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.

jdmaster
79
jdmaster  
Rogerio Giannetti Torres:


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.

Rogerio Giannetti Torres
2037
Rogerio Giannetti Torres  
jdmaster:


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

jdmaster
79
jdmaster  
Rogerio Giannetti Torres:

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

t


Erro


Em azul esta a posição colocada perfeitamente e em vermelho a mudança de posição...

Arquivos anexados:
TRAILING.png 38 kb
jdmaster
79
jdmaster  
Rogerio Giannetti Torres:

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....

Rogerio Giannetti Torres
2037
Rogerio Giannetti Torres  
jdmaster:

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.

jdmaster
79
jdmaster  
Rogerio Giannetti Torres:

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...

Para adicionar comentários, por favor Faça o login ou registrar