- Inserir STOP LOSS em uma ordem
- Erro de preço inválido com ordem sell limit
- Como faço para colocar mais uma ordem em conta Netting/
Boa noite.
Você pode tentar:
//=== Global input variables input int iStopLoss = 300; // Stop Loss - Points input int iTakeProfit = 300; // Take Profit - Points ... double BID, ASK, SL, TP; //--- Determines last price for current symbol BID = SymbolInfoDouble(Symbol(), SYMBOL_BID); ASK = SymbolInfoDouble(Symbol(), SYMBOL_ASK); //--- Calculates stop loss and take profit - BUY SL = NormalizeDouble(ASK - (iStopLoss * Point()), Digits()); TP = NormalizeDouble(ASK + (iTakeProfit * Point()), Digits()); //--- Calculates stop loss and take profit - SELL SL = NormalizeDouble(BID + (iStopLoss * Point()), Digits()); TP = NormalizeDouble(BID - (iTakeProfit * Point()), Digits());
Boa noite.
Você pode tentar:
Bom dia
Tentei fazer assim mas ainda fica errado
Bom dia.
O problema parece ser bem diferente do que eu tinha entendido pela sua mensagem anterior. Pelo que eu entendi agora, você está fazendo o seguinte:
input double STP = 0.30;
Mas o MT5 está alterando o valor do parâmetro para 0.2999..., é isso? Se for esse o problema, eu também já tive um problema semelhante com um parâmetro tipo double quanto eu informava o valor de 0.07. Quando eu acessava novamente os parâmetros do robô, ele tinha salvado 0.0700...001. Qualquer outro valor ele aceitava normalmente, menos 0.07.
Você pode contornar esse problema usando o NormalizeDouble() mesmo, informando o número de dígitos após o ponto decimal que você deseja trabalhar. Por exemplo:
STP1 = NormalizeDouble(STP, 2);Depois, onde você estava utilizando STP, altera para STP1.
![Documentação sobre MQL5: Funções de Conversão / NormalizeDouble Documentação sobre MQL5: Funções de Conversão / NormalizeDouble](https://c.mql5.com/36/45/documenta-o-sobre-mql5-fun-es-de__2.png)
- www.mql5.com
Bom dia.
O problema parece ser bem diferente do que eu tinha entendido pela sua mensagem anterior. Pelo que eu entendi agora, você está fazendo o seguinte:
Mas o MT5 está alterando o valor do parâmetro para 0.2999..., é isso? Se for esse o problema, eu também já tive um problema semelhante com um parâmetro tipo double quanto eu informava o valor de 0.07. Quando eu acessava novamente os parâmetros do robô, ele tinha salvado 0.0700...001. Qualquer outro valor ele aceitava normalmente, menos 0.07.
Você pode contornar esse problema usando o NormalizeDouble() mesmo, informando o número de dígitos após o ponto decimal que você deseja trabalhar. Por exemplo:
Depois, onde você estava utilizando STP, altera para STP1.Tentei fazer isso
double TKP2 = NormalizeDouble (TKP,2);
Ou seja o TKP = 0.3 mas ainda assim
Muito estranho
Nos parâmetros vai continuar aparecendo o valor errado. Acho que não tem como corrigir isso. Acho que o problema é no MT5 mesmo (devem corrigir nas próximas versões). O que você pode é contornar o problema a partir do seu código, como lhe falei anteriormente, arredondando o valor do parâmetro para 2 decimais (ou quantas você quiser) com o NomalizeDouble().
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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