Modul 2 · Programmering for tradere

2.3 Slik leser du indikatorer i koden

Leksjon 6 av 19Lesetid: 2 min

Nesten alle roboter bruker indikatorer. Måten du leser dem på, er forskjellig i de tre språkene – men tanken er den samme: Hent verdien for et bestemt lys.

Lys 1 og lys 2

Et kryss betyr at noe var under på lys 2 og over på lys 1. Derfor leser vi nesten alltid to verdier:

  • Lys 1: det siste lukkede lyset.
  • Lys 2: lyset før det.

I MetaTrader kalles nummeret shift. I cTrader bruker du .Last(1) og .Last(2).

MQL4: direkte

I MQL4 henter du en verdi med én linje. Siste tall er shift:

MQL4
double fast1 = iMA(NULL, 0, 10, 0, MODE_EMA, PRICE_CLOSE, 1);   // EMA(10) på lys 1
double rsi1  = iRSI(NULL, 0, 14, PRICE_CLOSE, 1);               // RSI(14) på lys 1

NULL betyr «dette markedet», og 0 betyr «denne tidsrammen».

MQL5: håndtak og CopyBuffer

I MQL5 lager du indikatoren én gang i OnInit() og får et håndtak (et nummer). Verdiene leser du med CopyBuffer:

MQL5
int hFast;

int OnInit()
{
   hFast = iMA(_Symbol, _Period, 10, 0, MODE_EMA, PRICE_CLOSE);
   if(hFast == INVALID_HANDLE) return(INIT_FAILED);
   return(INIT_SUCCEEDED);
}

double Value(int handle, int buffer, int shift)
{
   double buf[1];
   if(CopyBuffer(handle, buffer, shift, 1, buf) != 1) return(EMPTY_VALUE);
   return(buf[0]);
}

// i OnTick:  double fast1 = Value(hFast, 0, 1);

Noen indikatorer har flere buffere – for eksempel har Bollinger Bands midtlinje (0), øvre bånd (1) og nedre bånd (2), og MACD har hovedlinje (0) og signallinje (1).

cTrader: Indicators-objektet

I cTrader lager du indikatoren i OnStart() og leser .Result:

C# (cTrader)
private MovingAverage _fast;

protected override void OnStart()
{
    _fast = Indicators.MovingAverage(Bars.ClosePrices, 10, MovingAverageType.Exponential);
}

protected override void OnBar()
{
    double fast1 = _fast.Result.Last(1);   // EMA(10) på lys 1
}

Oversikt

IndikatorMQL4MQL5cTrader
Glidende gjennomsnittiMA(...)iMA(...) + CopyBufferIndicators.MovingAverage(...)
RSIiRSI(...)iRSI(...)Indicators.RelativeStrengthIndex(...)
Bollinger BandsiBands(...)iBands(...)Indicators.BollingerBands(...)
MACDiMACD(...)iMACD(...)Indicators.MacdCrossOver(...)
ATRiATR(...)iATR(...)Indicators.AverageTrueRange(...)

Slå opp i dokumentasjonen

Alle funksjonene er beskrevet i den offisielle dokumentasjonen: docs.mql4.com, mql5.com/docs og help.ctrader.com. Når du er usikker på rekkefølgen av parametere, er det dit du går.

Kort oppsummert

  • Les verdier fra lys 1 (siste lukkede) og lys 2 for å finne kryss.
  • MQL4 leser indikatorer direkte, MQL5 bruker håndtak og CopyBuffer.
  • cTrader lager indikatorer i OnStart og leser dem med .Result.Last(n).
Test deg selv · Modul 2

Hva husker du fra «Programmering for tradere»?

Å 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. 1Hva gjør en input-parameter?

  2. 2Hvordan leser MQL5 indikatorverdier?

Ø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.