iMA i pozostałe wskaźniki — z MQL4 na MQL5
W MQL4 iMA zwracało liczbę. W MQL5 zwraca uchwyt, a po wartość trzeba pójść osobno.
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Stara postać
MQL4
double srednia = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 1);Jedno wywołanie, od razu wartość dla świecy 1.
Nowa postać
MQL5
//--- raz, w OnInit
int uchwyt = iMA(_Symbol, _Period, 20, 0, MODE_SMA, PRICE_CLOSE);
//--- za każdym razem, gdy potrzebna jest wartość
double bufor[];
ArraySetAsSeries(bufor, true);
if(CopyBuffer(uchwyt, 0, 0, 2, bufor) < 2)
return;
double srednia = bufor[1];Zniknął ostatni argument — przesunięcie świecy. Przeniósł się do CopyBuffer.
Reguła przepisywania
- Wywołanie
iCoś(...)bez ostatniego argumentu przenieś doOnIniti zapamiętaj wynik jako uchwyt. - Sprawdź, czy uchwyt nie jest
INVALID_HANDLE. - W miejscu, gdzie stara wersja czytała wartość, wstaw
CopyBuffer. - Dodaj
IndicatorReleasewOnDeinit.
Numery buforów popularnych wskaźników
| Wskaźnik | Bufory |
|---|---|
iMA, iRSI, iATR, iCCI | 0 |
iMACD | 0 główna, 1 sygnalna |
iBands | 0 środkowa, 1 górna, 2 dolna |
iStochastic | 0 główna, 1 sygnalna |
iADX | 0 ADX, 1 +DI, 2 −DI |