Pra qualquer ativo, vc tem que normalizar os preços conforme o número de dígitos decimais do ativo.
Segue dica genérica dada pelo @Rogerio Giannetti Torres em outra resposta (a dica foi para o preço ASK, mas é só vc adaptar para o SL e o TP):
tickSize=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE); ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK); ask = NormalizeDouble(MathRound(ask/tickSize)*tickSize,_Digits);
- 2018.12.20
- www.mql5.com
Eu estou começando a programar pra Dólar, e o primeiro problema que estou tendo é justamente a questão do preço, já que o dolar se movimenta de meio em meio ponto, ao enviar a ordem me retorna [Invalid Stops].
Eu tentei com *_Didigts, mas mas está dando diferença, eu coloco 1 pontos de take ele joga 3.
mercado BR eu deixo sem o _Digits, afinal o que vc escreve como parametro é o que realmente tem que ser....já forex eu utilizo pois cada moeda tem sua pontuação diferente
Não julgo errado isso, mas com essa solução, vc deixa seu EA enviesado para um ativo especifico.
Normalizando ele vai funcionar de maneira correta em qq tipo de ativo.
Não julgo errado isso, mas com essa solução, vc deixa seu EA enviesado para um ativo especifico.
Normalizando ele vai funcionar de maneira correta em qq tipo de ativo.
Com certeza! Dentro do próprio mercado BR existem ativos com diferentes variações de dígitos (futuros de dólar têm 1 dígito, futuros de índice têm 0, ações têm 2, ouro tem 3 ... )
- 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
Eu estou começando a programar pra Dólar, e o primeiro problema que estou tendo é justamente a questão do preço, já que o dolar se movimenta de meio em meio ponto, ao enviar a ordem me retorna [Invalid Stops].
Eu tentei com *_Didigts, mas mas está dando diferença, eu coloco 1 pontos de take ele joga 3.