Stop OffSet

 

Ola´pessoal da Comunidade ! sou novo por aqui! não encontrei o procurava e resolvi ? perguntar!

Alguém sabe me dizer onde configuro ou encontro ferramenta de Stop Offset no MT5. Procurei no Mercado de Plugins e Ferramentas e não encontrei !

Obrigado antecipadamente!

 
Adam Rodrigues:

Ola´pessoal da Comunidade ! sou novo por aqui! não encontrei o procurava e resolvi ? perguntar!

Alguém sabe me dizer onde configuro ou encontro ferramenta de Stop Offset no MT5. Procurei no Mercado de Plugins e Ferramentas e não encontrei !

Obrigado antecipadamente!

Olá Adam, eu acredito que só é possível aqui no MT5 se você desenvolver um EA por exemplo que faça isso. Vou deixar como exemplo o código que eu utilizo. Com essa função basta inseri-la no função OnTick.

#define EXPERT_MAGIC 123      //Magic Number do Robô

#include <Trade\Trade.mqh> //Biblioteca para enviar ordens de compra e venda
CTrade trade; //Instanciação da biblioteca trade

MqlTick tick;

input double  INPoffSet  = 50;  //Defina o Off Set (pontos)

//---

void OffSet()
  {
   bool selectposition = PositionSelect(_Symbol);

   if(!selectposition && PositionsTotal() > 0)
     {
      Print("Erro ao obter informação da posição.");
     }

   if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && tick.last < SL && tick.last >= (SL-INPoffSet))
     {
      for(int i=PositionsTotal()-1; i>=0; i--)
        {
         string symbolPosition = PositionGetSymbol(i);
         ulong magicPosition = PositionGetInteger(POSITION_MAGIC);
         if(symbolPosition == _Symbol && magicPosition == EXPERT_MAGIC)
           {
            ulong positionTicket = PositionGetInteger(POSITION_TICKET);
            if(!trade.PositionClose(positionTicket, 5))
              {
               //int errorCode = GetLastError();
               Print("Erro ao fechar posição pelo OffSet. ResultRetCode: ", trade.ResultRetcode(), " | ResultRetCodeDescription: ", trade.ResultRetcodeDescription());
               ResetLastError();
              }
            break;
           }
        }
     }
   if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && tick.last > SL && tick.last <= (SL+INPoffSet))
     {
      for(int i=PositionsTotal()-1; i>=0; i--)
        {
         string symbolPosition = PositionGetSymbol(i); 
         ulong magicPosition = PositionGetInteger(POSITION_MAGIC);
         if(symbolPosition == _Symbol && magicPosition == EXPERT_MAGIC)
           {
            ulong positionTicket = PositionGetInteger(POSITION_TICKET);
            if(!trade.PositionClose(positionTicket, 5))
              {
               int errorCode = GetLastError();
               Print("Erro ao fechar posição pelo OffSet. ResultRetCode: ", trade.ResultRetcode(), " | ResultRetCodeDescription: ", trade.ResultRetcodeDescription());
               ResetLastError();
              }
            break;
           }
        }
     }
  }


Razão: