![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
O MathFloor arredonda as casas decimais para o número INTEGRAL mais próximo?
MathFloor() faz o que diz na documentação ... "A função MathFloor retorna um valor numérico representando o maior número inteiro que é menor ou igual a x".
FirstTarget faz sentido como um parâmetro personalizado dentro de "OrderClose()" - Assumindo que "sizeClose" estava correto? (veja código citado)
Não . . . você tem isto:
quando você provavelmente quer dizer isto . . .
FirstTarget = OrderOpenPrice() + ( ( OrderTakeProfit()-OrderOpenPrice() ) / 2 ) ;
Use parênteses (e espaços) para deixar as coisas claras e sem ambigüidades.
Seu código não ajudou - desculpe.
Por que ? é errado ? de que forma ?
Você pode imprimir variáveis personalizadas? Se sim, devo estar fazendo isso errado, pois não está aparecendo na revista.
Sim, você pode imprimir qualquer variável . . o que você está fazendo ? mostre seu código.
Com relação à impressão de variáveis personalizadas, como eu faria isso para o "FirstTarget_Buy"?
Vou passar o tempo vasculhando todo o meu código e imprimindo muito - entendo como fazê-lo com bools e ints (integer -1 falha e bool é uma afirmação verdadeira ou falsa - fácil.) mas não entendo como fazê-lo quando você atribui funções a uma variável personalizada?
Obrigado por lançar luz sobre a fórmula "FirsTarget" acima! Desculpe, eu queria dizer que seu código não ajudou no sentido de que eu não estou entendendo como montar a fórmula... Acho isso realmente contra intuitivo - Você teria pensado que chamar "OrderSelect" lhe permitiria simplesmente ver qual era o tamanho do lote naquela ordem... e depois simplesmente dividi-lo...
Desculpe por ter se deparado como um completo idiota!
Desculpe por ter se deparado como um completo idiota!
De forma alguma, você só precisa encontrar seu ponto cego e iluminá-lo, uma vez que o tenha, você vai se perguntar por que achou tão difícil, tudo é fácil quando você sabe como.
Com relação à impressão de variáveis personalizadas, como eu faria isso para o "FirstTarget_Buy"?
Vou passar o tempo vasculhando todo o meu código e imprimindo muito - entendo como fazê-lo com bools e ints (integer -1 falha e bool é uma afirmação verdadeira ou falsa - fácil.) mas não entendo como fazê-lo quando você atribui funções a uma variável personalizada?
Eu queria dizer que seu código não ajudou no sentido de que eu não estou entendendo como colocar a fórmula junto... Acho isso realmente contra intuitivo - você teria pensado que chamar "OrderSelect" lhe permitiria simplesmente ver qual era o tamanho do lote naquela ordem de seleção... e depois simplesmente dividi-lo...
Você pode simplesmente ordenarSelecionar a ordem, usar OrderLots() e dividir por dois ... você pode fazer isso, e em muitas situações isso funcionará. Eu escrevo código para todos os casos que posso prever para que não tenha que consertá-la continuamente quando ela se quebra ...
Se o tamanho de sua posição for 2,0 lotes; isto dividido por dois é 1,0 lotes e isto funcionará . .
Se o tamanho de sua posição for 0,3 lotes; este dividido por dois é 0,15 lotes e este será um tamanho de posição inválido se MODE_LOTSTEP for 0,1 . . . você pode usar 0,1 ou 0,2 NÃO 0,15, então você precisa codificar esta verificação e ajuste.
O que você tem aqui não funcionará em todos os casos . .
Ahhhh! Acabei de passar os últimos 15 a 20 minutos apagando impressões em todo o lugar - estou começando a entender onde estou indo errado. Estou basicamente selecionando a ordem PENDENTE... ENTANTO, por ser uma ordem pendente, no ponto em que a seleciono, há uma grande chance de que as OrdensLots, paradas e alvos tenham mudado, portanto precisarei colocá-la em loop para que esteja sincronizada com a forma como minhas ordens pendentes estão sendo constantemente calculadas antes de serem acionadas.
Esse maldito doubletostr :P - Spot on RaptorUK! Agora posso ver que isto é calculado corretamente, graças ao seu ajuste :)
Acho que sei como fazer a maior parte agora - só por curiosidade, e se a afirmação "se" funcionasse para chamar APENAS a ordem que foi TRIGERADO. No momento, eu tenho que chamar quando tenho uma ordem de mercado aberta, mas estou tentando descobrir como chamar quando a ordem pendente foi acionada?
O código abaixo e a declaração "se" correspondente parece apenas chamar as ordens pendentes em aberto. Só quero uma maneira de "ir para" uma função personalizada específica (nula, por exemplo) com base no fato de que uma ordem foi acionada? (se isso fizer sentido!)
Obrigado por me esclarecerem tanto :)
Ahhhh! Acabei de passar os últimos 15 a 20 minutos apagando impressões em todo o lugar - estou começando a entender onde estou indo errado.
Fácil quando você sabe como![](https://c.mql5.com/mql4/forum/2013/07/rofl_3.gif)
Acho que sei como fazer a maior parte agora - só por curiosidade, o que "se" a declaração funcionaria para chamar APENAS a ordem que foi TRIGERADO. No momento, eu tenho que chamar quando tenho uma ordem de mercado aberta, mas estou tentando descobrir como chamar quando a ordem pendente foi acionada?
Quando uma ordem pendente for acionada, ela se tornará um OP_BUY ou OP_SELL, portanto . .
if(OrderType() == OP_BUY || OrderType() == OP_SELL) { }
Uma dica, use m o r e espaços . . quando você recebe uma divisão por erro zero e quer encontrar onde ela está acontecendo é fácil procurar por espaço/espaço e apenas encontrar suas divisões ao invés de todos os seus comentários . . então eu uso espaços ao redor = + - / % etc.
Boa dica - eu farei! Obrigado por sua ajuda :) Eu postarei de volta se eu conseguir fazer isso!
Não estou recebendo nenhuma informação sobre as impressões digitais? Absolutamente nada está aparecendo no Jornal. Presumo que isto seja porque nada está sendo selecionado até onde o OrderType vai desde a primeira declaração "se"? Pelo que posso ver aqui no código, eu teria pensado que não estou muito longe, pelo menos...?
Ok, estou de volta! ... Mas não tão boas notícias - eu tentei e testei múltiplas variações de código sem sorte. É aqui que eu estou agora.
Não estou recebendo nenhuma informação sobre as impressões digitais? Absolutamente nada está aparecendo no Jornal. Presumo que isto seja porque nada está sendo selecionado até onde o OrderType vai desde a primeira declaração "se"? Pelo que posso ver aqui no código, eu teria pensado que não estou muito longe, pelo menos...?
Como você está selecionando a Ordem antes de fazer isso ?
if(OrderType() == OP_BUY ){
Você ainda tem problemas aqui
Por que não . . .
2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: Order Select returned the error of 0 // Not sure what is going on here? 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000 // This is the right calculation based // upon the total lots opened on a pending order - to half. 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000 2013.07.31 11:13:52 2013.02.01 16:00 trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931 // This price is also correct.