Modul 3 · Bygg din første robot

3.1 Din første robot, del 1: innstillinger og indikatorer

Leksjon 7 av 19Lesetid: 2 min

Nå bygger vi en hel robot. Strategien er regelboken fra modul 1: EMA(10) krysser EMA(30), stop loss 30 pips, take profit 60 pips og maks én posisjon. Vi starter i MetaTrader 5.

Steg 1: Lag filen

  1. Åpne MetaTrader 5 og trykk F4 for å åpne MetaEditor.
  2. Velg File → New → Expert Advisor (template) og klikk Next.
  3. Kall den MaKryss, klikk Next til du kommer til Finish.
  4. Slett alt innholdet i filen. Vi skriver alt selv.

Steg 2: Toppen av filen

MQL5
#property copyright "Mitt navn"
#property version   "1.00"

#include <Trade\Trade.mqh>   // henter inn CTrade, som gjør det enkelt å sende ordrer
CTrade trade;

#include henter inn ferdig kode fra MetaTrader. CTrade er en hjelper som sender ordrer, lukker posisjoner og flytter stop loss med én linje hver.

Steg 3: Innstillingene

MQL5
input int    InpFastPeriod   = 10;      // Rask EMA
input int    InpSlowPeriod   = 30;      // Treg EMA
input double InpLots         = 0.10;    // Størrelse i lot
input double InpStopLossPips = 30;      // Stop loss i pips
input double InpTakeProfitPips = 60;    // Take profit i pips
input ulong  InpMagic        = 12345;   // Magisk nummer

Det magiske nummeret er robotens signatur. Roboten setter det på alle sine handler, slik at den bare styrer sine egne – ikke handler du har åpnet manuelt.

Steg 4: Globale variabler og OnInit

MQL5
int      hFast, hSlow;        // håndtak til indikatorene
datetime lastBarTime = 0;     // tidspunktet for forrige lys vi så på
double   pip;                 // størrelsen på én pip i pris

int OnInit()
{
   pip = (_Digits == 3 || _Digits == 5) ? 10 * _Point : _Point;

   hFast = iMA(_Symbol, _Period, InpFastPeriod, 0, MODE_EMA, PRICE_CLOSE);
   hSlow = iMA(_Symbol, _Period, InpSlowPeriod, 0, MODE_EMA, PRICE_CLOSE);
   if(hFast == INVALID_HANDLE || hSlow == INVALID_HANDLE)
   {
      Print("Kunne ikke lage indikatorene");
      return(INIT_FAILED);
   }

   trade.SetExpertMagicNumber(InpMagic);
   trade.SetTypeFillingBySymbol(_Symbol);
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   IndicatorRelease(hFast);
   IndicatorRelease(hSlow);
}

Hva er en pip i koden?

_Point er den minste prisendringen. På EUR/USD med fem desimaler er det 0,00001. En pip er ti ganger så mye: 0,0001. Linjen pip = ... tar høyde for både 5- og 3-desimalers par (som USD/JPY) og 4- og 2-desimalers par.

Kompiler ofte

Trykk Compile (F7) etter hvert steg. Da finner du feilene mens de er få. Nederst i MetaEditor står eventuelle feil med linjenummer.

Kort oppsummert

  • CTrade fra Trade.mqh gjør det enkelt å sende ordrer.
  • Input-parametere blir innstillinger du kan endre i plattformen.
  • Lag indikatorene én gang i OnInit, og sjekk at de ble laget.
Ø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.