Automatyczne ustawianie stop lossów

Jakiś czas temu opisywałem ciekawą ofertę brokera MB Trading. Z racji, iż jest to broker ECN w specyficzny sposób obsługuje on składanie zleceń – nie można złożyć zlecenia po rynku z predefiniowanymi poziomami SL i TP – trzeba wejść po rynku, a następnie modyfikować poziomy SL i TP.

Powyżej opisana sytuacja (oraz liczne, wręcz zbyt licznie pytania) zainspirowała mnie do napisania tego wpisu. Poniżej przedstawiam przykładowy kod, jaki można wykorzystać, aby automatycznie ustawić SL dla wszystkich zleceń go nie posiadających. Kod oczywiście można stosować nie tylko u brokerów ECN.

void stoploss(int sl,int magic=0) {

 for(int i=0;i<OrdersTotal();i++) {
  if(OrderSelect(i,SELECT_BY_POS)) {
   if(OrderMagicNumber()==magic && OrderSymbol()==Symbol()) {

    if(OrderStopLoss()==0) {
     if(OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP) {
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-sl*Point,
                  OrderTakeProfit(),OrderExpiration(),CLR_NONE);
     } else {
      OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+sl*Point,
                  OrderTakeProfit(),OrderExpiration(),CLR_NONE);
     }
    }
   }
  }
 }
}

W parametrach funkcji podajemy wielkość stop lossa do ustawienia oraz opcjonalny magic number (gdy nie podamy, zastosuje magic number równy zero, czyli ustawi SL dla wszystkich zleceń wprowadzonych „z palca”).

Autor: Łukasz Tomaszkiewicz

Podziel się ze znajomymi:

Prześlij nam swoje uwagi

[contact-form-7 404 "Not Found"]
  • Facebook