Stop loss invalido

 

Boa noite,


Meu stoploss esta vindo com valor que não é múltiplo de 5 para o indice, poderiam me ajudar, o que devo mudar no meu codigo abaixo:

//---
void TrailingStop(double preco)
   {
      for(int i = PositionsTotal()-1; i>=0; i--)
         {
            string symbol = PositionGetSymbol(i);
            ulong magic = PositionGetInteger(POSITION_MAGIC);
            if(symbol == _Symbol && magic==magicNum)
               {
                  ulong PositionTicket = PositionGetInteger(POSITION_TICKET);
                  double StopLossCorrente = PositionGetDouble(POSITION_SL);
                  double TakeProfitCorrente = PositionGetDouble(POSITION_TP);
                  if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
                     {
                        if(preco >= (StopLossCorrente + gatilhoTS) )
                           {
                              double novoSL = NormalizeDouble(StopLossCorrente + stepTS, _Digits);
                              if(trade.PositionModify(PositionTicket, novoSL, TakeProfitCorrente))
                                 {
                                    Print("TrailingStop - sem falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription());
                                 }
                              else
                                 {
                                    Print("TrailingStop - com falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription());
                                 }
                           }
                     }
                  else if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
                     {
                        if(preco <= (StopLossCorrente - gatilhoTS) )
                           {
                              double novoSL = NormalizeDouble(StopLossCorrente - stepTS, _Digits);
                              if(trade.PositionModify(PositionTicket, novoSL, TakeProfitCorrente))
                                 {
                                    Print("TrailingStop - sem falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription());
                                 }
                              else
                                 {
                                    Print("TrailingStop - com falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription());
                                 }
                           }
 
Silverveins:

Boa noite,

....

veja esse tópico 


https://www.mql5.com/pt/forum/341303

Problemas ao postar no Market - Validação
Problemas ao postar no Market - Validação
  • 2020.05.20
  • www.mql5.com
Olá pessoal, Depois de dezenas de tentativas tentando colocar hoje um update do meu EA no Market do MT5 e dando erros variados, acho que está com a...
 
Jonathan Pereira:

veja esse tópico 


https://www.mql5.com/pt/forum/341303

Obrigado pela ajuda, sou novo aqui.

No caso vc deu uma sugestão para eu não alterar o código e sim colocar o mqh do Cssymbol é isso?

 
Silverveins:

Obrigado pela ajuda, sou novo aqui.

No caso vc deu uma sugestão para eu não alterar o código e sim colocar o mqh do Cssymbol é isso?

Na verdade esse tópico é um misto. Eu não uso a CSymbol e explico como faço, já o @Rogerio usa  
 
Jonathan Pereira:
Na verdade esse tópico é um misto. Eu não uso a CSymbol e explico como faço, já o @Rogerio usa  
Jonathan,

Obrigado pela resposta.
Dado o tamanho da minha ignorância neste assunto, como eu faria no meu codigo para que ele colocasse os múltiplos de 5.

Valeu!!!!
 
Não localizei o botão do stop loss? consegue me orientar?
 
CleoniceSobrinho:
Não localizei o botão do stop loss? consegue me orientar?

Botão?? que botão?? StopLoss é um posicionamento. Não é um objeto botão.

Pergunta: O que você está tendo de problema exatamente? pois parece que seu problema está além de um stoploss.

 
Ruy Christian Hoffmann:

Botão?? que botão?? StopLoss é um posicionamento. Não é um objeto botão.

Pergunta: O que você está tendo de problema exatamente? pois parece que seu problema está além de um stoploss.

double novoSL = NormalizeDouble(StopLossCorrente + stepTS, _Digits);

altera para

double novoSL = NormalizeDouble(StopLossCorrente + stepTS * _Point, _Digits);
 
Silverveins:
Jonathan,

Obrigado pela resposta.
Dado o tamanho da minha ignorância neste assunto, como eu faria no meu codigo para que ele colocasse os múltiplos de 5.

Valeu!!!!

Boa tarde, Francisco. Tudo bem?

Como é calculado o valor da variável stepTS?

Caso seja um loop, você pode fazer a soma sempre com múltiplos de 5.

Caso você queira verificar se o valor é um múltiplo de 5, pode verificar o resto da divisão: https://www.mql5.com/pt/docs/math/mathmod

Quando for 0, terá o múltiplo.

Documentação sobre MQL5: Funções Matemáticas / MathMod
Documentação sobre MQL5: Funções Matemáticas / MathMod
  • www.mql5.com
MathMod - Funções Matemáticas - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Razão: