4.2 Trailing stop, break-even og ATR
En fast stop loss er en god start. Men mange strategier blir bedre når stop loss følger prisen, eller når avstanden tilpasses hvor urolig markedet er.
Break-even
Når handelen har gått et visst antall pips i din favør, flyttes stop loss til inngangsprisen. Da kan handelen ikke lenger gi tap (bortsett fra ved hull i prisen).
Trailing stop
Stop loss følger etter prisen med en fast avstand – men flyttes aldri tilbake. Dette må sjekkes ved hver prisendring, derfor ligger koden i OnTick() før sjekken for nytt lys.
input double InpTrailingPips = 20;
void TrailPositions()
{
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
if(ticket == 0) continue;
if(PositionGetString(POSITION_SYMBOL) != _Symbol ||
PositionGetInteger(POSITION_MAGIC) != (long)InpMagic) continue;
double sl = PositionGetDouble(POSITION_SL);
double tp = PositionGetDouble(POSITION_TP);
if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
{
double newSl = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_BID) - InpTrailingPips * pip, _Digits);
if(newSl > sl) trade.PositionModify(ticket, newSl, tp); // bare oppover
}
else
{
double newSl = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK) + InpTrailingPips * pip, _Digits);
if(sl == 0 || newSl < sl) trade.PositionModify(ticket, newSl, tp); // bare nedover
}
}
}I cTrader gjør du det samme med position.ModifyStopLossPrice(...) inne i en foreach-løkke over Positions.FindAll(Label, SymbolName).
ATR i stedet for pips
30 pips stop loss kan være for lite en urolig dag og for mye en rolig dag. Med ATR måler roboten hvor mye prisen normalt svinger, og setter stop loss deretter:
int hAtr = iATR(_Symbol, _Period, 14); // i OnInit
double atr = Value(hAtr, 1); // ATR på lys 1
double slDistance = atr * 1.5; // stop loss = 1,5 × ATR
double tpDistance = atr * 3.0; // take profit = 3 × ATRKombinert med posisjonsstørrelse fra forrige leksjon får du en robot som risikerer like mye i kroner hver gang – uansett hvor langt unna stop loss ligger.
Respekter meglerens minsteavstand
Megleren kan kreve en minste avstand mellom prisen og stop loss (stops level). Flytter roboten stop loss nærmere enn det, blir endringen avvist. Sjekk SYMBOL_TRADE_STOPS_LEVEL i MQL5 eller MODE_STOPLEVEL i MQL4 før du flytter.
Kort oppsummert
- Break-even flytter stop loss til inngangen etter en viss gevinst.
- Trailing stop sjekkes ved hver prisendring og flyttes bare i din favør.
- ATR gir stop loss og take profit som tilpasser seg volatiliteten.
65% av ikke-profesjonelle taper penger når de handler CFDer med denne leverandøren.