Automatyczne ustawianie stop lossów

Kategoria: Repozytorium kodu MQL4 | 28 stycznia 2009 o 23:18 | Odpowiedzi: 6 | Permalink

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”).

6 odpowiedzi do wpisu "Automatyczne ustawianie stop lossów"

  • szantilas

    22 grudnia 2009 o 09:58

    Witam, Bardzo przydalaby mi sie taka funkcja tylko nie wiem jak ja umiescic w MT4. Z gory dziekuje za pomoc. Pozdrawiam.

  • luktom

    24 grudnia 2009 o 16:54 | Odwiedź stronę WWW autora

    W funkcji start wpisujesz (aby uzyskać 40 pipsów): stoploss(40,0);

  • Fesiek

    24 grudnia 2009 o 23:52

    Witaj. Po wpisaniu powyższej funkcji w MetaEditor i skompilowaniu nie występują żadne błędy. Funkcja ta jednak w MetaTrader ładuje się i od razu usuwa. W zakładce "Dziennik" są raporty w tym samym czasie: "Script {nazwa} loaded successfully" i "Script {nazwa} removed". Co ciekawe, każdy skrypt jaki mam tak się zachowuje. Czy może w opcjach MT4 coś trzeba zmienić?

  • luktom

    25 grudnia 2009 o 13:09 | Odwiedź stronę WWW autora

    No i działa poprawnie, bo tak właśnie działają skrypty :P Przenieś ten skrypt do katalogu experts i odpal go jako EA, wtedy uzyskasz to co chcesz.

  • Andreas

    2 czerwca 2010 o 14:14

    Witam Mam wskaźnik ( coś w rodzaju twojego macoma), jaka jest możliwość dodania "trailing stop" do kroczącego tego wskaźnika z tym by można było ustawić określoną ilość popsów, od czoła tego wskaćnika. Np.wskaxnik pokazuje 1,2200 a ja chciałbym ustawić minus (2 lub 3 ,5 ???) Pozdrawiam Ps.Moge podesłać kod tego wskaźnika

  • Andreas

    3 czerwca 2010 o 09:48

    Witam Może niedokładnie napisałem o co mi chodzi: Czy jest możliwość by "trailing stop" podążał za wskaźnikiem a nie za kursem ? Pozdrawiam