Przejdź do treści
MQL5 · MetaTrader 5 · po polsku
kod odczarowany

MQL5 / Z MQL4 na MQL5

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

  1. Wywołanie iCoś(...) bez ostatniego argumentu przenieś do OnInit i zapamiętaj wynik jako uchwyt.
  2. Sprawdź, czy uchwyt nie jest INVALID_HANDLE.
  3. W miejscu, gdzie stara wersja czytała wartość, wstaw CopyBuffer.
  4. Dodaj IndicatorRelease w OnDeinit.

Numery buforów popularnych wskaźników

WskaźnikBufory
iMA, iRSI, iATR, iCCI0
iMACD0 główna, 1 sygnalna
iBands0 środkowa, 1 górna, 2 dolna
iStochastic0 główna, 1 sygnalna
iADX0 ADX, 1 +DI, 2 −DI

Powiązane