Usando EUR/USD
É possível usar menos que 0.0013 de Stop Loss ou Take Profit no Strategy Tester?
Se eu uso menos a operação não é aceita mostrando erro 4766= invalid stops
Bom dia,
os stops da ordem tem que obedecer ao nível mínimo definido no atributo SYMBOL_TRADE_STOPS_LEVEL.
Bom dia,
os stops da ordem tem que obedecer ao nível mínimo definido no atributo SYMBOL_TRADE_STOPS_LEVEL.
E é possível definir esse nével em meu EA?
Como faço isso?
...
Como faço isso?
Bom dia.
//--- Determines last price for current symbol double BID = SymbolInfoDouble(Symbol(), SYMBOL_BID); double ASK = SymbolInfoDouble(Symbol(), SYMBOL_ASK); //--- Get the SYMBOL_TRADE_STOPS_LEVEL level ulong StopsLevel = SymbolInfoInteger(Symbol(), SYMBOL_TRADE_STOPS_LEVEL); //--- Calculates take profit - BUY double TP = NormalizeDouble(ASK + (StopsLevel * Point()), Digits()); //--- Calculates take profit - SELL double TP = NormalizeDouble(BID - (StopsLevel * Point()), Digits());
Olá
complementado a resposta do colaborador, todo preço deve obedecer ( ser múltiplo ) o TICK SIZE do instrumento, então a função geral para obter um preço normalizado e ajustado ao tamanho do TICKSIZE é como mostrado abaixo.
price = NormalizeDouble(MathRound(price/tickSize )*tickSize ,_Digits);Sendo: tickSize = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE); price = Um preço que você quer ajustar para o TICK SIZE.
Valeu @Rogerio Giannetti Torres! Obrigado!
Olá
complementado a resposta do colaborador, todo preço deve obedecer ( ser múltiplo ) o TICK SIZE do instrumento, então a função geral para obter um preço normalizado e ajustado ao tamanho do TICKSIZE é como mostrado abaixo.
Não entendi nadica de nada.
Que raio de valor é colocado na variável tickSise?
Meu EA continua se recusando aceitar TP e STP menores que .0013
Os senhores poderiam me passar como enviar uma ordem compra ou venda com STP e TP menores?
Não entendi nadica de nada.
Que raio de valor é colocado na variável tickSise?
Meu EA continua se recusando aceitar TP e STP menores que .0013
Os senhores poderiam me passar como enviar uma ordem compra ou venda com STP e TP menores?
A resposta já foi dada.
Ou o seu EA está bloqueando isso por alguma razão (eu duvido), OU, a sua corretora não deixa...
Isso é obtivo pelo EA através da informação da corretora, quando se executa o código com a propriedade SYMBOL_TRADE_STOPS_LEVEL. Todo EA minimamente decente imprime essa e outras informações sobre "o quê" a corretora aceita, na janela de logs do MT4/5.
A resposta já foi dada.
Ou o seu EA está bloqueando isso por alguma razão (eu duvido), OU, a sua corretora não deixa...
Isso é obtivo pelo EA através da informação da corretora, quando se executa o código com a propriedade SYMBOL_TRADE_STOPS_LEVEL. Todo EA minimamente decente imprime essa e outras informações sobre "o quê" a corretora aceita, na janela de logs do MT4/5.
Desculpe, não me expliquei corretamente
Gostaria de saber à que corresponde o valor retornado pela função:
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)
Não imagino qual seja a correspondẽncia. É o valor monetárioa do tick atual? Volume? Quantidade de Pontos?
Desculpe, não me expliquei corretamente
Gostaria de saber à que corresponde o valor retornado pela função:
Não imagino qual seja a correspondẽncia. É o valor monetárioa do tick atual? Volume? Quantidade de Pontos?
Não é Tick Size! É o que a corretora estabelece! Você não tem domínio sobre isso, só tem que aceitar, ou mudar de corretora...
leia a documentação:
É isso aí... E apenas para mostrar como poderia ficar o código com a complementação do @Rogerio Giannetti Torres:
//--- Get the last price for current symbol double BID = SymbolInfoDouble(_Symbol, SYMBOL_BID); double ASK = SymbolInfoDouble(_Symbol, SYMBOL_ASK); //--- Get the SYMBOL_TRADE_STOPS_LEVEL level ulong StopsLevel = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL); //--- Calculates take profit - BUY double TP = NormalizeTickSize(ASK + (StopsLevel * _Point)); //--- Calculates take profit - SELL double TP = NormalizeTickSize(BID - (StopsLevel * _Point)); //+--------------------------------------------------------------------------------------------------------------------+ //| This function normalizes and adjusts the price to the TICK SIZE | //+--------------------------------------------------------------------------------------------------------------------+ double NormalizeTickSize(double Price) { //--- Get the minimal price change double TickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); //--- Return the price normalized and adjusted to the TICK SIZE return(NormalizeDouble(MathRound(Price / TickSize) * TickSize, _Digits)); }
Implementando assim, o seu EA vai calcular o menor TP aceito pela corretora para o símbolo. Se ele continua incluindo à distância de 0.0013, então é porque realmente esse é o menor valor aceito pela corretora para o símbolo, como já explicado pelo @Flavio Jarabeck.
![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
É possível usar menos que 0.0013 de Stop Loss ou Take Profit no Strategy Tester?
Se eu uso menos a operação não é aceita mostrando erro 4766= invalid stops