2.3 Slik leser du indikatorer i koden
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:
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 1NULL 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:
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:
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
| Indikator | MQL4 | MQL5 | cTrader |
|---|---|---|---|
| Glidende gjennomsnitt | iMA(...) | iMA(...) + CopyBuffer | Indicators.MovingAverage(...) |
| RSI | iRSI(...) | iRSI(...) | Indicators.RelativeStrengthIndex(...) |
| Bollinger Bands | iBands(...) | iBands(...) | Indicators.BollingerBands(...) |
| MACD | iMACD(...) | iMACD(...) | Indicators.MacdCrossOver(...) |
| ATR | iATR(...) | 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).
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.
1Hva gjør en input-parameter?
I cTrader heter det [Parameter].
2Hvordan leser MQL5 indikatorverdier?
MQL4 leser direkte, MQL5 bruker håndtak og CopyBuffer.
65% av ikke-profesjonelle taper penger når de handler CFDer med denne leverandøren.