Modul 4 · Risikostyring i koden

4.3 Filtre og feilhåndtering

Leksjon 13 av 19Lesetid: 2 min

En robot som fungerer i testeren, kan få problemer live. Filtre og god feilhåndtering er forskjellen på en lekerobot og en robot du kan stole på.

Tre nyttige filtre

Trendfilter – handle bare med trenden: ``mql5 double trend = Value(hTrend, 1); // SMA(200) på lys 1 if(iClose(_Symbol, _Period, 1) <= trend) buySignal = false; if(iClose(_Symbol, _Period, 1) >= trend) sellSignal = false; ``

Tidsfilter – handle bare i bestemte timer: ``mql5 MqlDateTime t; TimeToStruct(TimeCurrent(), t); // servertid if(t.hour < 8 || t.hour >= 20) return; // bare mellom 08 og 20 ``

Spreadfilter – ikke handle når spreaden er høy: ``mql5 double spreadPips = (SymbolInfoDouble(_Symbol, SYMBOL_ASK) - SymbolInfoDouble(_Symbol, SYMBOL_BID)) / pip; if(spreadPips > 2.0) return; ``

Servertid er ikke norsk tid

TimeCurrent() i MetaTrader gir meglerens servertid, som ofte er GMT+2 eller GMT+3 – en time foran norsk tid. I cTrader kan du velge tidssone i [Robot(TimeZone = ...)].

Sjekk om ordren lyktes

Ordrer kan bli avvist: markedet er stengt, størrelsen er feil, det er ikke nok margin, eller prisen har flyttet seg. Sjekk alltid svaret:

MQL5
if(!trade.Buy(lots, _Symbol, ask, sl, tp, "Robot"))
   Print("Ordren feilet: ", trade.ResultRetcode(), " ", trade.ResultRetcodeDescription());

I cTrader: ``csharp var result = ExecuteMarketOrder(TradeType.Buy, SymbolName, volume, Label, slPips, tpPips); if (!result.IsSuccessful) Print("Ordren feilet: ", result.Error); ``

Bruk loggen

Alt du skriver med Print(...) havner i loggen:

PlattformHvor
MetaTrader 5Toolbox (Ctrl+T) → fanen Experts
MetaTrader 4Terminal (Ctrl+T) → fanen Experts
cTraderFanen Log under roboten

Når roboten ikke gjør det du forventer, er loggen første sted å se. Skriv gjerne ut verdiene roboten bruker, for eksempel Print("fast1=", fast1, " slow1=", slow1);, mens du tester.

Vanlige feil live

  • Ugyldig fylling (invalid filling) i MT5: løses med trade.SetTypeFillingBySymbol(_Symbol).
  • Ugyldig stop loss: for nær prisen, eller på feil side.
  • Markedet er stengt: helg eller helligdag.
  • For liten størrelse: under minste lovlige lot.

Kort oppsummert

  • Trend-, tids- og spreadfiltre hindrer mange dårlige handler.
  • Sjekk alltid om ordren lyktes, og skriv ut feilen hvis ikke.
  • Loggen er første sted å se når roboten ikke gjør som forventet.
Test deg selv · Modul 4

Hva husker du fra «Risikostyring i koden»?

Å hente frem det du har lest, er en av de mest effektive måtene å lære på. Velg det svaret du tror er riktig – du får forklaringen med en gang.

  1. 1Hvordan regner roboten ut størrelsen?

  2. 2Hvilken vei skal en trailing stop flyttes?

  3. 3Hvor ser du først når roboten ikke gjør som forventet?

Øv på det du har lært – uten risikoPrøv det i praksis på en gratis demokonto hos Skilling, med ekte priser og fiktive penger.
Åpne gratis demokonto

65% av ikke-profesjonelle taper penger når de handler CFDer med denne leverandøren.