Trailing stop proprio

 

 Bom dia pessoal, Tudo bem ??

 

Estou tentando fazer meu proprio trailing stop, por que quero colocar minhas proprias regras de mudança do stop

como teste fiz esse stop o qual coloco na classe  OnTick(), porém analisando esse stop de perto notei que ele tem um problema ele nunca fica na zona de lucro .. sempre fica uma quantidade como um pequeno prejuizo.. mesmo que existe a possibilidade de ele ficar na zona de LUCRO..

Alguem sabe me dizer o por que ??

Abaixo segue a parte do trailing stop....

AGRADEÇO a todos pela ajuda...

ABS 

double stop = PositionGetDouble(POSITION_SL);
double take = PositionGetDouble(POSITION_TP);
if(PositionSelect(Symbol())==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL){
      double sell_value;
      PositionGetDouble(POSITION_PRICE_CURRENT, sell_value);
      if(last_price.bid < sell_value ){
         stop = NormalizeDouble(last_price.bid +40*_Point,_Digits);
         take = NormalizeDouble(last_price.bid - 200*_Point,_Digits);
         Print("Mudando TP e SL posição de venda.");
         mrequest.sl = stop;
         mrequest.tp = take;
         if(OrderSend(mrequest,mresult)){
              if(mresult.retcode!=TRADE_RETCODE_DONE){
               Print("OrderSend failed with error #",GetLastError());
             }
         }else{
             printf("Unable to move Stop Loss of position %s, error #%I64u",_Symbol,mresult.retcode);
         }
      }
  }

   if(PositionSelect(Symbol())==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY){
      double buy_value;
      PositionGetDouble(POSITION_PRICE_CURRENT, buy_value);
      if(last_price.ask > buy_value ){
         Print("Mudando TP e SL posição de compra.");
         stop = NormalizeDouble(last_price.ask -40*_Point,_Digits);
         take = NormalizeDouble(last_price.ask + 200*_Point,_Digits);
         mrequest.sl = stop;
         mrequest.tp = take;
         if(OrderSend(mrequest,mresult)){
           if(mresult.retcode!=TRADE_RETCODE_DONE){
               Print("OrderSend failed with error #",GetLastError());
           }
         }else{
             printf("Unable to move Stop Loss of position %s, error #%I64u",_Symbol,mresult.retcode);
         }
      }
   }
 
francysouz:

 Bom dia pessoal, Tudo bem ??

 

Estou tentando fazer meu proprio trailing stop, por que quero colocar minhas proprias regras de mudança do stop

como teste fiz esse stop o qual coloco na classe  OnTick(), porém analisando esse stop de perto notei que ele tem um problema ele nunca fica na zona de lucro .. sempre fica uma quantidade como um pequeno prejuizo.. mesmo que existe a possibilidade de ele ficar na zona de LUCRO..

Alguem sabe me dizer o por que ??

Abaixo segue a parte do trailing stop....

AGRADEÇO a todos pela ajuda...

ABS 

Este tema parece ser pouco popular na comunidade. Vejo que seu post é de 2015 e ficou sem resposta.

Estou iniciando em programação na linguagem Mql5 e também esbarrei na dificuldade de configurar um stop móvel personalizado.

Espero que você tenha resolvido o seu problema.


[]´s

 
francysouz:

 Bom dia pessoal, Tudo bem ??

 

Estou tentando fazer meu proprio trailing stop, por que quero colocar minhas proprias regras de mudança do stop

como teste fiz esse stop o qual coloco na classe  OnTick(), porém analisando esse stop de perto notei que ele tem um problema ele nunca fica na zona de lucro .. sempre fica uma quantidade como um pequeno prejuizo.. mesmo que existe a possibilidade de ele ficar na zona de LUCRO..

Alguem sabe me dizer o por que ??

Abaixo segue a parte do trailing stop....

AGRADEÇO a todos pela ajuda...

ABS 

Você precisa usar a função OrderModify em vez de OrderSend().
 
Vinicius Maciel:
Você precisa usar a função OrderModify em vez de OrderSend().

Não precisa. Funciona com OrderSend sim. 

[ ]´s

 
Joscelino Celso de Oliveira:

Este tema parece ser pouco popular na comunidade. Vejo que seu post é de 2015 e ficou sem resposta.

Estou iniciando em programação na linguagem Mql5 e também esbarrei na dificuldade de configurar um stop móvel personalizado.

Espero que você tenha resolvido o seu problema.


[]´s

Veja o expert deste link e o respectivo códio-fonte, provavelmente é o q precisas:

https://www.mql5.com/en/code/20636

Sds.

e_Breakeven_v4
e_Breakeven_v4
  • www.mql5.com
TwoBarsComparison The EA compares the opening prices of the zeroth and the second bar. It moves positions to a breakeven and/or enables trailing. exp_Amstell The EA uses a virtual Take Profit for closing gaining positions. Opening positions with a step. Catch the type of the last position and its price in...