Início Negociação Sistemática Postagem

Aumente Seus Lucros Após o Break Even: Expert para MetaTrader 4

Anexo
35609.zip (12.47 KB, Baixar 0 vezes)

Hoje vamos falar sobre uma funcionalidade incrível deste pequeno EA (Expert Advisor) que pode ajudar a otimizar suas operações: a função de contagem de ordens.

int OrdersCounter()
  {
   int counter=0;
//---
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS))
         if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) // se a ordem foi aberta por este EA
           {
//--- se o break even já aconteceu
   /* Para compras, somente quando o StopLoss é igual ou maior que o preço de abertura. Nota: Esta implementação não é boa se você tiver ordens pendentes. É adequada apenas para compras e vendas.*/
            double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
            if(!XBreakeven) // Se somente o Break Even e o trailing stop não aconteceram
              {
               counter++; // conta a posição
              }
           }
   return counter;
  }

Com essa contagem, estamos considerando apenas as ordens que não possuem StopLoss acima ou igual ao preço de abertura para compras, e abaixo para vendas. Em suma, contamos todas as ordens que ainda não alcançaram o break even ou em que o trailing stop não protegeu o preço de abertura.

 double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice();
            if(!XBreakeven) // Se somente o Break Even e o trailing stop não aconteceram

Com isso, criamos um contador que retorna o valor que vamos usar para limitar nossa posição máxima, que neste caso está definida para 1 ordem por vez.

   if(OrdersCounter()<MaximumOrders)

Portanto, sempre que o break even ocorrer, essa função não irá contar, e como neste exemplo temos apenas uma posição, ela retornará zero, permitindo que abramos outra venda e o processo continua.

Isso só seria possível porque criamos uma função de break even.

void BreakEvenFunction()
  {
//---
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS))
         if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
           {
// para compra se o Bid estiver acima do Preço de Abertura + pips de break even. Vice-versa para vendas
            double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice());
            /* Para compras, somente quando o StopLoss é igual ou maior que o Preço de Abertura. Vice-versa para vendas */
            if(xHybrid)
              {
               bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE);
              }
           }
  }

Então, o que você está esperando? Experimente e veja a diferença nas suas operações!

Publicações relacionadas

Comentário (0)