Zmienne predefiniowane w MQL4

Język programowania MQL4 został opracowany i dostosowany do specyficznych wymagań tworzenia EA, wskaźników i skryptów czyli w większości przypadków do operowania na rynkach które mają dużą zmienność i szybkość zmian jeśli tak można określić kwotowania real-time. W celu przyspieszenia obliczeń i szybkiego dostępu do najczęściej wykorzystywanych zmiennych, którymi jest między innymi wartość kwotowań, udostępniono programistom tak zwane zmienne predefiniowane, którymi są Ask, Bid, Open, High, Close, Digits, Point, Time, Volume. Dostęp do zmiennych predefiniowanych jest z każdego rodzaju programu, czyli z EA, wskaźnika, skryptu, biblioteki.

Aby zapewnić szybki i bezpieczny dostęp do tych danych, terminal klienta przechowuje lokalne kopie predefiniowanych zmiennych dla każdego niezależnie uruchomionego programu. Dane te są aktualizowane przy każdej zmianie wartości kwotowań czy parametrów symbolu typu Digits, Point. Można też dokonać programowej aktualizacji tych danych za pomocą funkcji RefreshRates().

Ask

Ask przechowuje ostatnią znaną wartość ceny Ask dla symbolu wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka.

Przykład:

if( iRSI(NULL,0,14,PRICE_CLOSE,0) < 25)
{
OrderSend (Symbol(), OP_BUY, Lots, Ask, 3, Bid-StopLoss * Point, Ask +
TakeProfit * Point, "Moje zlecenie", 3, D’2005.10.10 12:30, Red);
return;
}

Bid

Bid przechowuje ostatnią znaną wartość ceny Bid dla symbolu wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka.

Przykład:

if( iRSI(NULL,0,14,PRICE_CLOSE,0) > 75 )
{
OrderSend(EURUSD, OP_SELL, Lots, Bid, 3, Ask + StopLoss * Point, Bid-
TakeProfit * Point, "Moje zlecenie" , 3, D’2005.10.10 12:30, Red);
return (0);
}

Open

Open[] jest zmienną tablicową i przechowuje wszystkie wartości ceny otwarcia dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej Open jest taki sam jak do każdej zmiennej tablicowej, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością ceny zamknięcia. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1.

Przykład:

i = Bary - counted_bars - 1 while (i> = 0) (double high = High [i]; double
low = Low [i]; double open = Open [i]; podwójne close = Close [i];
AccumulationBuffer [ i] = (close-low) - (ang. high-close) if
(AccumulationBuffer [i] = 0) (double diff = wysoka - niska; if (0 == diff)
AccumulationBuffer [i] = 0; else (AccumulationBuffer [i] / = diff;
AccumulationBuffer [i] *= Tom [i];)) if (i <Bary-1) AccumulationBuffer [i]
+ = AccumulationBuffer [i +1]; i -;

High

High[] jest zmienną tablicową i przechowuje wszystkie wartości najwyższej ceny dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej High jest taki sam jak do każdej tablicy, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością najwyższej ceny. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1.

Przykład:

//---- Maksima liczenia i = Bars-KPeriod if (counted_bars> KPeriod) i =
Bars-counted_bars-1 while (i> = 0) (double max =- 1000000, k = i + KPeriod-
1; while (k> = i) (cena = High [k] if (max <cena) max = cena; k -;)
HighesBuffer [i] = max; i -;) //----

Low

Low[] jest zmienną tablicową i przechowuje wszystkie wartości najniższej ceny dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej Low jest taki sam jak do każdej tablicy, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością najniższej ceny. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1.

Przykład:

//---- Minima liczenia i = Bars-KPeriod if (counted_bars> KPeriod) i =
Bars-counted_bars-1 while (i> = 0) (double min = 1000000; k = i + KPeriod-
1, natomiast (k> = i) (cena = niska [k] if (min> cena) min = cena; k -;)
LowesBuffer [i] = min; i -;) //--

Close

Close[] jest zmienną tablicową i przechowuje wszystkie wartości ceny zamknięcia dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej Close jest taki sam jak do każdej zmiennej tablicowej, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością ceny zamknięcia. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1.

Przykład:

int handle = FileOpen( "file.csv" FILE_CSV | FILE_WRITE, ";");
if (uchwyt> 0) {
// zapis nagłówka kolumn tabeli, pierwsza linia
FileWrite(handle, "Time, Open, High, Low, Close, Volume" )
//zapis danych w wierszach oddzielonych średnikami
for(int i = 0; i <Bary i + +)
FileWrite (handle, TIme[i], Open[i], High[i], Low[i], Close[i], Volume[
i]);
FileClose (fp);

Volume

Voluime[] jest zmienną tablicową i przechowuje wszystkie wartości wielkości obrotu dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej Volume jest taki sam jak do każdej zmiennej tablicowej, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością ceny zamknięcia. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1.

Przykład:

if (i==0 && time0<i_time + periodseconds)
{
d_volume += Volume[0]
if (Low[0]<d_low) d_low = Low[0];
if(High[0]>d_high) d_high = High [0];
d_close = Close[0];
}
last_fpos = FileTell(ExtHandle);
last_volume = Volume[i];
FileWriteInteger(ExtHandle, i_time, LONG_VALUE);
FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE);
FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE)

Time

Time[] jest zmienną tablicową i przechowuje wszystkie wartości czasu dla każdego słupka wykresu, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka. Dostęp do poszczególnych wartości zmiennej Time jest taki sam,  jak do każdej zmiennej tablicowej, czyli przez indeks poczynając od 0 (zero), co jest pierwszą, najświeższą wartością ceny zamknięcia. Indeks najstarszej wartości ceny zamknięcia na wykresie równy jest zmiennej predefiniowanej Bars-1.

Przykład:

for(i=Bars-2; i>= 0; i--)
{
if (High[i+1]>LastHigh) LastHigh = High[i+1]
if (Low [i+1]<LastLow) LastLow = Low [i+1];
//----
if ( TimeDay(Time[i]) != TimeDay(Time [i+1]) )
{
P = (LastHigh + LastLow + Close [i+1]) / 3;
R1 = P * 2 - LastLow;
S1 = P * 2 - LastHigh;
R2 = P + LastHigh - LastLow;
S2 = P - (LastHigh - LastLow);
R3 = P * 2 + LastHigh - LastLow * 2;
S3 = P * 2 - (LastHigh * 2 - LastLow);
LastLow = Open[i];
LastHigh = Open[i];)
//----
PBuffer[i] = P;
S1Buffer[i] = S1;
R1Buffer[i] = R1;
S2Buffer[i] = S2;
R2Buffer[i] = R2;
S3Buffer[i] = S3;
R3Buffer[i] = R3;
}

Bars

Bars przechowuje liczbę słupków, jakie są dostępne na bieżącym wykresie, na którym został uruchomiony EA, wskaźnik, skrypt, biblioteka.

Przykład:

// drukuje wszystkie ceny zamknięcia
for(int i=0; i <= Bars-1; i++)
{
Print( Close[i] );
}

Digits

Digits przechowuje wartość określającą ile dany symbol posiada pozycji po przecinku w cenie bieżących kwotowań.

Przykład:

// funkcja DoubleToStr dokonuje konwersji wartości double
zmiennoprzecinkowej do string i dokonuje zaokrąglenia do ilości cyfr Digits
które są parametrem konfiguracyjnym danego symbolu
Print( DoubleToStr( Close[0], Digits) );

Point

Zmienna Point przechowuje wartość punkta danego symbolu. Dla instrumentu kwotowanego z dokładnością do 5 miejsc po przecinku wartość ta wynosi 0.00001, dla instrumentu kwotowanego z dokładnością jedności wartość ta wynosi 1.

Przykład:

OrderSend(Symbol(), OP_BUY, Lots, Ask, 3,0, Ask + TakeProfit * Point);

Niniejszy materiał, przygotowany przez DM BOŚ S.A. ma charakter wyłącznie informacyjny, prezentowany jest w celach edukacyjnych i nie stanowi porady prawnej oraz nie jest rekomendacją osobistą w ramach świadczenia usługi doradztwa inwestycyjnego zgodnie z przepisami prawa. DM BOŚ S.A. nie udziela gwarancji dokładności, aktualności, oraz kompletności niniejszych informacji. Zaleca się przeprowadzenie we własnym zakresie niezależnego przeglądu informacji z niniejszego materiału.

1/1