Erro 4756 ao tentar modificar posição. Ajuda!

 

Olá, pessoal.

Tem algo que me incomodando bastante nos últimos dias de testes do meu EA.

Ao executar backtesting com a opção "Cada tick é baseado em um tick real", estou recebendo erro 4756 (invalid stops) ao tentar modificar uma posição.

Esse erro não ocorre quando faço backtesting com a opção "Cada tick".

Pesquisei sobre o erro, mas ou procurei errado ou não encontrei algo que ajudasse a responder o motivo do erro.

Pensei ser algo com a diferença entre o novo stop loss e o preço atual de mercado, mas fiz testes e não encontrei padrão.


Alguém, por gentileza, poderia ajudar com base nas informações abaixo? (se precisarem de mais algum dado, fico à disposição).

No log abaixo há minhas tentativas de modificar o stop loss (coloquei um código que aumentava o valor em 5 a cada tentativa frustrada, até descobrir o valor que seria aceito)

2018.11.03 23:43:26.119 2018.05.02 09:15:00   sell stop 1.00 WINFH at 86120 sl: 86155 (86135 / 86145 / 86135)
2018.11.03 23:43:26.121 2018.05.02 09:15:00   CTrade::OrderSend: sell stop 1.00 WINFH at 86120 sl: 86155 [done]
2018.11.03 23:43:26.128 2018.05.02 09:15:20   order [#2 sell stop 1.00 WINFH at 86120] triggered
2018.11.03 23:43:26.128 2018.05.02 09:15:20   deal #2 sell 1.00 WINFH at 86150 done (based on order #2)
2018.11.03 23:43:26.128 2018.05.02 09:15:20   deal performed [#2 sell 1.00 WINFH at 86150]
2018.11.03 23:43:26.128 2018.05.02 09:15:20   order performed sell 1.00 at 86150 [#2 sell stop 1.00 WINFH at 86120]
2018.11.03 23:43:31.631 2018.05.02 09:15:20   failed modify #2 sell 1.00 WINFH sl: 86155, tp: 0 -> sl: 86150, tp: 0 [Invalid stops]
2018.11.03 23:43:31.631 2018.05.02 09:15:20   CTrade::OrderSend: modify WINFH (sl: 86150, tp: 0) [invalid stops]
2018.11.03 23:43:33.507 2018.05.02 09:15:20   failed modify #2 sell 1.00 WINFH sl: 86155, tp: 0 -> sl: 86155, tp: 0 [Invalid stops]
2018.11.03 23:43:33.507 2018.05.02 09:15:20   CTrade::OrderSend: modify WINFH (sl: 86155, tp: 0) [invalid stops]
2018.11.03 23:43:34.773 2018.05.02 09:15:20   position modified [#2 sell 1.00 WINFH 86150 sl: 86160]
2018.11.03 23:43:34.773 2018.05.02 09:15:20   CTrade::OrderSend: modify WINFH (sl: 86160, tp: 0) [done]



Tem algo a ver com os valores de bid, ask ou last?

Não encontrei padrão para os valores aceitos para modificação do stop loss.


Grato!

 
Flávio Henrique:

Olá, pessoal.

Tem algo que me incomodando bastante nos últimos dias de testes do meu EA.

Ao executar backtesting com a opção "Cada tick é baseado em um tick real", estou recebendo erro 4756 (invalid stops) ao tentar modificar uma posição.

Esse erro não ocorre quando faço backtesting com a opção "Cada tick".

Pesquisei sobre o erro, mas ou procurei errado ou não encontrei algo que ajudasse a responder o motivo do erro.

Pensei ser algo com a diferença entre o novo stop loss e o preço atual de mercado, mas fiz testes e não encontrei padrão.


Alguém, por gentileza, poderia ajudar com base nas informações abaixo? (se precisarem de mais algum dado, fico à disposição).

No log abaixo há minhas tentativas de modificar o stop loss (coloquei um código que aumentava o valor em 5 a cada tentativa frustrada, até descobrir o valor que seria aceito)



Tem algo a ver com os valores de bid, ask ou last?

Não encontrei padrão para os valores aceitos para modificação do stop loss.


Grato!

Olá Flavio.

Repare que às 09:15:20 você fez uma venda a 86150, portanto naquele momento o preço BID estava em 86150 e o preço ASK deveria estar no mínimo em 86155.

O stop-loss de uma ordem de venda tem que ficar ACIMA do preço ASK, portanto acima de 86155. Foi por isso que ele não aceitou você modificar o stop-loss para 86150 nem 86155 e só aceitou quando você modificou para 86160.