4.3 Filtre og feilhåndtering
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:
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:
| Plattform | Hvor |
|---|---|
| MetaTrader 5 | Toolbox (Ctrl+T) → fanen Experts |
| MetaTrader 4 | Terminal (Ctrl+T) → fanen Experts |
| cTrader | Fanen 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.
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.
1Hvordan regner roboten ut størrelsen?
Tap per lot = avstand til stop loss ÷ tick-størrelse × tick-verdi.
2Hvilken vei skal en trailing stop flyttes?
En trailing stop låser inn gevinst – den flyttes aldri bakover.
3Hvor ser du først når roboten ikke gjør som forventet?
Sjekk alltid om ordren lyktes, og skriv feilen til loggen.
65% av ikke-profesjonelle taper penger når de handler CFDer med denne leverandøren.