Vc tá normalizando pra número inteiro. Tem que normalizar pra múltiplo de 5.
Divide por 5, normaliza o resultado pra inteiro e em seguida multiplica por 5, que vai dar certo.
Obrigado pela atenção Patinhas.
Ainda não foi normalizado.
Consegue ter outra sugestão ou algo que estou fazendo errado ?
2020.05.24 02:35:32.449 2020.05.21 11:29:00 BSMAX :82713.38536828017 2020.05.24 02:35:32.449 2020.05.21 11:29:00 SELL 1: 82713.39
Print("BSMAX :" +bsmax_0); double LOSSTrend = (bsmax_0 / 5); Print("SELL 1: " + NormalizeDouble(LOSSTrend * 5,2));
Também tentei assim:
double LOSSTrend = NormalizeDouble((bsmax_0 / 5)*5,_Digits) ; trade.SellStop(5, precoEntrada, Symbol(), LOSSTrend, 0.00);
Obrigado pela atenção Patinhas.
Ainda não foi normalizado.
Consegue ter outra sugestão ou algo que estou fazendo errado ?
Também tentei assim:
Obrigado pela atenção Patinhas.
Ainda não foi normalizado.
Consegue ter outra sugestão ou algo que estou fazendo errado ?
Também tentei assim:
Oi Marcelo,
Conforme expliquei antes, vc tem que primeiro dividir por 5, em seguida normalizar (arredondar para inteiro) e, ao final, multiplicar por 5. Somente nessa ordem obterá o resultado correto:
double LOSSTrend = 5 * NormalizeDouble((bsmax_0 / 5),_Digits) ;
Porém, eu prefiro fazer do jeito abaixo, que funciona pra qualquer ativo, e não apenas pro índice:
double price_step = SymbolInfoDouble ( Symbol() , SYMBOL_TRADE_TICK_SIZE ); double round_price = price_step * MathRound ( price / price_step );
Perfeito. Funcionou.
Muito obrigado Patinhas!
Perfeito. Funcionou.
Muito obrigado Patinhas!
double price_step = SymbolInfoDouble ( Symbol() , SYMBOL_TRADE_TICK_SIZE ); double round_price = price_step * MathRound ( price / price_step );No exemplo acima, só não entendi o campo price. Fico no aguardo. Grato.
. . .
Price é o preço a normalizar e ajustar (stop loss, take profit, trailing, preço de abertura, ...):
//+--------------------------------------------------------------------------------------------------------------------+ //| This function normalizes and adjusts the price to the TICK SIZE | //+--------------------------------------------------------------------------------------------------------------------+ double NormalizePrice(double Price) { //--- Get the minimal price change double TickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); //--- Return the price normalized if(TickSize == 0.0) {return(NormalizeDouble(Price, _Digits));} //--- Return the price normalized and adjusted to the TICK SIZE return(NormalizeDouble(MathRound(Price / TickSize ) * TickSize, _Digits)); }
- 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
Pessoal alguém saberia ajudar com este problema?
A compra é realizada, porém o takestop não funciona. Estou tentando converter um código do profitchart.
Estou com dificuldade em achar função SellToCoverStop equivalente para MQL.
Outra coisa que o Sell Stop é logo acionado sem menos ocorrer a condição.
Obrigado pela atenção pessoal.
Código ProfitChart
Código MT5
Resultado