Olá Rodolfo.
Os valores que está gerando, não são múltiplos de 5 (deveriam ser 48255 e 48655) pois os mini-índices só operam em valores com final 5 e 0.
[]´s
Ola, boa tarde,
Tenho erro similar no dolar, acredito que não seja o mesmo problema de pontos dolar corre a 0.5...
Fato curioso, que fico fazendo tentativas de modificação do SL na mesma operação ao mesmo preco, até que determinado momento muda (vide abaixo), alguem tem sugestão o que pode ser?
GR 2 18:46:07.835 Core 1 2015.10.08 10:45:00 failed modify sell 1.00 WDO@N sl: 0.000, tp: 0.000 -> sl: 3891.500, tp: 3891.500 [Invalid stops]
FN 0 18:46:07.835 Core 1 2015.10.08 10:45:00 CTrade::OrderSend: modify WDO@N (sl: 3891.500, tp: 3891.500) [invalid stops]
EP 2 18:46:07.835 Core 1 2015.10.08 10:45:20 failed modify sell 1.00 WDO@N sl: 0.000, tp: 0.000 -> sl: 3891.500, tp: 3891.500 [Invalid stops]
HH 0 18:46:07.835 Core 1 2015.10.08 10:45:20 CTrade::OrderSend: modify WDO@N (sl: 3891.500, tp: 3891.500) [invalid stops]
NE 0 18:46:07.835 Core 1 2015.10.08 10:45:40 position modified [sell 1.00 WDO@N 3891.500 sl: 3891.500 tp: 3891.500]
DM 0 18:46:07.835 Core 1 2015.10.08 10:45:40 CTrade::OrderSend: modify WDO@N (sl: 3891.500, tp: 3891.500) [done]
Obrigado
Ola, boa tarde,
Tenho erro similar no dolar, acredito que não seja o mesmo problema de pontos dolar corre a 0.5...
Fato curioso, que fico fazendo tentativas de modificação do SL na mesma operação ao mesmo preco, até que determinado momento muda (vide abaixo), alguem tem sugestão o que pode ser?
GR 2 18:46:07.835 Core 1 2015.10.08 10:45:00 failed modify sell 1.00 WDO@N sl: 0.000, tp: 0.000 -> sl: 3891.500, tp: 3891.500 [Invalid stops]
FN 0 18:46:07.835 Core 1 2015.10.08 10:45:00 CTrade::OrderSend: modify WDO@N (sl: 3891.500, tp: 3891.500) [invalid stops]
EP 2 18:46:07.835 Core 1 2015.10.08 10:45:20 failed modify sell 1.00 WDO@N sl: 0.000, tp: 0.000 -> sl: 3891.500, tp: 3891.500 [Invalid stops]
HH 0 18:46:07.835 Core 1 2015.10.08 10:45:20 CTrade::OrderSend: modify WDO@N (sl: 3891.500, tp: 3891.500) [invalid stops]
NE 0 18:46:07.835 Core 1 2015.10.08 10:45:40 position modified [sell 1.00 WDO@N 3891.500 sl: 3891.500 tp: 3891.500]
DM 0 18:46:07.835 Core 1 2015.10.08 10:45:40 CTrade::OrderSend: modify WDO@N (sl: 3891.500, tp: 3891.500) [done]
Obrigado
Olá Siraldo,
Algumas vezes o preço está muito próximo do patamar de stop. Se houver uma coincidência de bid/ask com seu preço de stop, o MT5 não irá aceitar fazer a modificação do mesmo e irá gerar uma mensagem de erro.
Vale a pena debugar o seu código e verificar em qual situação isso está acontecendo.
Abraços,
Malacarne
Nossa, fiquei até com vergonha agora. Muito obrigado Markely com certeza é isso, a gente fica tão submerso em códigos e algoritmos que às vezes não consegue pensar "fora da caixinha" e perceber situações como esta. Muito obrigado mesmo! Tudo de bom!
Rodolfo,
Também enfrentei o mesmo problema em meu EA, mas acabei perdendo tempo de execução de linha de código para ficar aproximando os SL e TP. Tem algum insight como contornar essa aproximação de forma simples?
Obrigado!!
Bom dia pessoal,
Estou tendo problemas com o STOP ATR justamente devido ao fato da cotação ser múltiplo de 5, alguém tem alguma regre para que eu possa implementar no meu EA para que ele regularize o valor para múltiplos de 5? Eu não consegui pensar em nenhuma até agora.
Bom dia pessoal,
Estou tendo problemas com o STOP ATR justamente devido ao fato da cotação ser múltiplo de 5, alguém tem alguma regre para que eu possa implementar no meu EA para que ele regularize o valor para múltiplos de 5? Eu não consegui pensar em nenhuma até agora.
Joao Luiz,
Eu construiria uma função assim :
double fRoundFive(double pValueToRound) {
double vRoundFive;
vRoundFive = MathRound(pValueToRound / 5) * 5;
return(vRoundFive);
}
Joao Luiz,
Eu construiria uma função assim :
double fRoundFive(double pValueToRound) {
double vRoundFive;
vRoundFive = MathRound(pValueToRound / 5) * 5;
return(vRoundFive);
}
Valeu Júlio, na realidade acabei dividindo o valor do stop por 10 depois normalizei com 0 casas decimais e multipliquei por 10 de novo, assim ficou sendo múltiplos de 10. Não faz grande diferença em múltiplos de 5 ou 10, então acabei deixando assim.
É uma baita gambiarra mas funcionou legal.
Eu gostaria de alguma coisa mais nativa a fim de servir para qualquer Ativo e não ser necessário alterar o robô para cada Ativo, mas não encontrei nada assim ainda.
Olá, gostaria de alterar o sl e tk e estou com o mesmo problema acima.
Quando tenho uma ordem aberta com sl e tk, e realizo outra compra, por ex, quero alterar o sl e tk, executo o codigo abaixo:
ZeroMemory(mrequest);
mrequest.action = TRADE_ACTION_SLTP;
mrequest.position = position_ticket;
mrequest.sl = NormalizeDouble(positionOpenPrice - STP*_Point,_Digits);
mrequest.tp = NormalizeDouble(positionOpenPrice + TKP*_Point,_Digits);
mrequest.symbol = _Symbol;
mrequest.magic = EA_Magic;
bool CheckOrder1 = OrderSend(mrequest,mresult);
O que acontece é que gera o erro:
failed modify #2 buy 3.00 WDOH18 sl: 0.000, tp: 0.000 -> sl: 3220.333, tp: 3231.333 [Invalid stops]
Alguem pode ajudar?
Obrigado.
Olá, gostaria de alterar o sl e tk e estou com o mesmo problema acima.
...
Olá bom dia!
Basta corrigir a normalização:
#include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
...
...
mrequest.sl = m_symbol.NormalizePrice(positionOpenPrice - STP*_Point);
mrequest.tp = m_symbol.NormlizePrice(positionOpenPrice + TKP*_Point);
Obs: STP e TKP tem que ser múltiplo de 500 pois o _Point do dolar é 0.001

- 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
Olá, tenho uma posição com preço médio, por exemplo, comprei 1 lote a 48480 e depois comprei novamente 1 lote, desta vez a 48435.
A posição passa a mostrar o preço 48457,5 . Até este momento tudo certo e estou com meus StopLoss e TakeProfit zerados.
Preciso então modificar esta posição colocando o SL e TP. Já tentei os 3 comandos abaixo e o erro é o mesmo para os três:
Erro:
CTrade::OrderSend: modify WINV15 (sl: 48257, tp: 48658) [invalid stops]
failed modify buy 2.00 WINV15 sl: 0, tp: 0 -> sl: 48257, tp: 48658 [Invalid stops]
Alguém, por gentileza, tem alguma dica?