![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Deu uma olhada rápida (ainda não fiz nenhuma escavação), encontrou a referência de ponto que você está calculando.
Tente "jogá-lo fora" e colocar um ponto estúpido. Talvez seja esse o problema (apontar através do MarketInfo pode nem sempre sair do jeito que você quer?).
É sempre suposto que...
embora você possa tentar normalizá-lo também =)
e nem sempre é aceitável - especialista pode negociar em vários pares, e o ponto pode ser diferente...
Suponha que os pedidos de perda = 1,29211 (5 dígitos após o ponto decimal)
bid=1,29716 (também 5 dígitos )
TrailingStop = 50
point =0,001
então (bid - TrailingStop * point)=1,29216>1,29211
True, isto requer que os dígitos se tornem subitamente 5
e também
pode ser substituído sem dor por
Acho que não é necessário verificar a ausência de nível de parada de perda quando se está em trilha.
Na verdade é, estou me corrigindo. Se estabelecermos um stop loss somente quando houver lucro, e se não estivermos dispostos a esperar por uma chamada de margem.
Eu não encontrei mais nada. Em qual par sua parada de trilha funcionou incorretamente e houve algum movimento forte?
Estou convertendo tudo em valores inteiros para fins de comparação. Eu armazeno e uso os valores dados onde quer que eu possa (na matriz).
utilizar os valores dados (em arrays, variáveis, etc.)
Isto é, variáveis do tipo int podem tomar valores de -2147483648 a 2147483647.
Esta dimensionalidade é bastante adequada para cruzes.
Correspondentemente, 1,2999 e 1,3000 podem ser fundidos a 12999 e 13000, e então podem ser comparados com segurança,
sem receio de qualquer erro periódico.
Eu esbocei um exemplo aqui :)
aqui
saída:
ponto de deslocamento EURUSD,H1: Valor Real Duplo = 1,2999999999
ponto de deslocamento EURUSD,H1: Valor do ponto de deslocamento = 13000
ponto de deslocamento EURUSD,H1: Valor restaurado = 1.3000
em
Alternativamente.
Hi.
Eu levo tudo a números inteiros para comparação
2dev:
Você está certo - este é um problema fundamental, é perigoso comparar números de ponto flutuante.
Em lugares importantes, sempre trazer números com uma certa precisão através da Normalize().
Padronizar no tipo duplo (8 bytes).
A propósito, forçamos a normalização de todos os preços passados nas consultas comerciais para evitar erros.
Você pode enviar um pedido de stop loss como 1.2932461, mas ele será definido como 1.2932.
Por favor, verifique se este é o erro ao tentar redefinir a parada pelo mesmo preço?
3 pessoas estavam observando =))) Renat veio e apenas apontou o dedo para o erro =)))
Vou verificar agora, é claro, mas o mais provável é que seja este o caso... Eu não normalizei o "bid - TrailingStop * point", e esta mesma construção está envolvida na modificação da ordem...
não estamos atentos, cavalheiros ;)
você quer dizer a Normalize() que Begun sugeriu?
você quer dizer a Normalize() que Begun sugeriu?
Desculpe, eu quis dizer o padrão NormalizeDouble.