English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
MQL4'ten MQL5'e geçiş

MQL4'ten MQL5'e geçiş

MetaTrader 5Örnekler | 15 Aralık 2021, 09:55
253 0
Sergey Pavlov
Sergey Pavlov

Giriş

Birçok geliştirici, MQL4'te yazılmış çok sayıda gösterge ve alım satım stratejisi biriktirmiştir. Bunları Metatrader 5'te kullanmak için MQL5'e dönüştürülmeleri gerekir. MQL5'te tüm programları yeniden yazmak o kadar kolay değil. Bir dönüştürme-referansı olsaydı, onları dönüştürmek çok daha kolay olurdu ve örneklerle bu, daha iyi olurdu.

Bu makalede MQL4'ten MQL5'e geçiş için bir rehber sürümümü önermek istiyorum.

1. Grafik Dönemleri

MQL5 grafiğinde dönem sabitleri değişti ve bazı yeni zaman dilimleri (M2, M3, M4, M6, M10, M12, H2, H3, H6, H8, H12) eklendi. MQL4 zaman dilimlerini dönüştürmek için aşağıdaki işlevi kullanabilirsiniz:

ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);
      
      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);      
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);      
      default: return(PERIOD_CURRENT);
     }
  }

MQL5'te grafik zaman dilimi sabitlerinin sayısal değerlerinin (H1'den) bir çubuğun dakika sayısına eşit olmadığına dikkat edilmelidir (örneğin, MQL5'te, PERIOD_H1=16385 sabitinin sayısal değeriyken MQL4'te PERIOD_H1=60'tır). MQL4 programlarında MQL4 sabitlerinin sayısal değerleri kullanılıyorsa MQL5'e dönüştürürken bunu dikkate almalısınız.

Grafiğin belirtilen zaman diliminin dakika sayısını belirlemek için, PeriodSaniye işlevinin döndürdüğü değeri 60'a bölün.

2. Sabitleri Bildirme

MQL5'te standart MQL4 sabitlerinden bazıları yoktur; bu nedenle bunların bildirilmesi gerekir:

//+------------------------------------------------------------------+
//|                                                     InitMQL4.mqh |
//|                                                 Copyright DC2008 |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "keiji"
#property copyright "DC2008"
#property link      "https://www.mql5.com"
//--- Declaration of constants
#define OP_BUY 0           //Buy 
#define OP_SELL 1          //Sell 
#define OP_BUYLIMIT 2      //Pending order of BUY LIMIT type 
#define OP_SELLLIMIT 3     //Pending order of SELL LIMIT type 
#define OP_BUYSTOP 4       //Pending order of BUY STOP type 
#define OP_SELLSTOP 5      //Pending order of SELL STOP type 
//---
#define MODE_OPEN 0
#define MODE_CLOSE 3
#define MODE_VOLUME 4 
#define MODE_REAL_VOLUME 5
#define MODE_TRADES 0
#define MODE_HISTORY 1
#define SELECT_BY_POS 0
#define SELECT_BY_TICKET 1
//---
#define DOUBLE_VALUE 0
#define FLOAT_VALUE 1
#define LONG_VALUE INT_VALUE
//---
#define CHART_BAR 0
#define CHART_CANDLE 1
//---
#define MODE_ASCEND 0
#define MODE_DESCEND 1
//---
#define MODE_LOW 1
#define MODE_HIGH 2
#define MODE_TIME 5
#define MODE_BID 9
#define MODE_ASK 10
#define MODE_POINT 11
#define MODE_DIGITS 12
#define MODE_SPREAD 13
#define MODE_STOPLEVEL 14
#define MODE_LOTSIZE 15
#define MODE_TICKVALUE 16
#define MODE_TICKSIZE 17
#define MODE_SWAPLONG 18
#define MODE_SWAPSHORT 19
#define MODE_STARTING 20
#define MODE_EXPIRATION 21
#define MODE_TRADEALLOWED 22
#define MODE_MINLOT 23
#define MODE_LOTSTEP 24
#define MODE_MAXLOT 25
#define MODE_SWAPTYPE 26
#define MODE_PROFITCALCMODE 27
#define MODE_MARGINCALCMODE 28
#define MODE_MARGININIT 29
#define MODE_MARGINMAINTENANCE 30
#define MODE_MARGINHEDGED 31
#define MODE_MARGINREQUIRED 32
#define MODE_FREEZELEVEL 33
//---
#define EMPTY -1
Not: MQl4 ve MQL5'teki sabitler farklıdır; bu nedenle bunları daha sonra kullanmak üzere ayrı bir initMQ4.mqh dosyasında bildirmek daha iyidir.

3. Önceden Tanımlanmış Değişkenler

MQL4
 MQL5Açıklama
double Ask
MqlTick last_tick;
SymbolInfoTick(_Symbol,last_tick);
double Ask=last_tick.ask;
Satış
Mevcut sembol için bilinen en son satış fiyatı.
SymbolInfoTick
int Bars
int Bars=Bars(_Symbol,_Period);
Çubuklar
Geçerli grafikteki çubuk sayısı.
Çubuklar
double Bid
MqlTick last_tick;
SymbolInfoTick(_Symbol,last_tick);
double Bid=last_tick.bid;
Alış
Mevcut sembolün bilinen en son alış fiyatı.
SymbolInfoTick
double Close[]
double Close[];
int count;   // number of elements to copy
ArraySetAsSeries(Close,true);
CopyClose(_Symbol,_Period,0,count,Close);
Kapanış
Mevcut grafiğin her çubuğu için kapanış fiyatlarını içeren seri dizisi.
CopyClose, ArraySetAsSeries
int Digits
int Digits=_Digits;
Basamaklar
Mevcut sembol fiyatları için ondalık noktadan sonraki basamak sayısı.
_Digits

double High[]
double High[];
int count;   // number of elements to copy
ArraySetAsSeries(High,true);
CopyHigh(_Symbol,_Period,0,count,High);
Yüksek
Mevcut grafiğin her bir çubuğunun en yüksek fiyatlarını içeren seri dizisi.
CopyHigh, ArraySetAsSeries
double Low[]
double Low[];
int count;   // number of elements to copy
ArraySetAsSeries(Low,true);
CopyLow(_Symbol,_Period,0,count,Low);
Düşük
Mevcut grafiğin her bir çubuğunun en düşük fiyatlarını içeren seri dizisi.
CopyLow, ArraySetAsSeries
double Open[]
double Open[];
int count;   // number of elements to copy
ArraySetAsSeries(Open,true);
CopyOpen(_Symbol,_Period,0,count,Open);
Açılış
Mevcut grafiğin her bir çubuğunun açılış fiyatlarını içeren seri dizisi.
CopyOpen, ArraySetAsSeries
double Point
double Point=_Point;
Nokta
Fiyat teklifi para birimindeki mevcut sembol noktası değeri.
_Point
datetime Time[]
datetime Time[];
int count;   // number of elements to copy
ArraySetAsSeries(Time,true);
CopyTime(_Symbol,_Period,0,count,Time);
Zaman
Mevcut grafiğin her bir çubuğunun açık zamanını içeren seri dizisi. Datetime gibi veriler, 1 Ocak 1970 00:00 a.m.'den bu yana geçen zamanı saniye cinsinden temsil eder.
CopyTime, ArraySetAsSeries
double Volume[]
long Volume[];
int count;   // number of elements to copy
ArraySetAsSeries(Volume,true);
CopyTickVolume(_Symbol,_Period,0,count,Volume);
Hacim
Mevcut grafiğin her bir çubuğunun tick hacimlerini içeren seri dizisi.
CopyTickVolume, ArraySetAsSeries


4. Hesap Bilgileri

MQL4
MQL5
Açıklama
double AccountBalance()
double AccountInfoDouble(ACCOUNT_BALANCE)
AccountBalance
Cari hesabın bakiye değerini (hesaptaki para miktarını) döndürür.
AccountInfoDouble
double AccountCredit()
double AccountInfoDouble(ACCOUNT_CREDIT)
AccountCredit
Cari hesabın kredi değerini döndürür.
AccountInfoDouble
string AccountCompany()
string AccountInfoString(ACCOUNT_COMPANY)
AccountCompany
Cari hesabın kayıtlı olduğu aracı şirket adını döndürür.
AccountInfoString
string AccountCurrency()
string AccountInfoString(ACCOUNT_CURRENCY)
AccountCurrency
Cari hesabın para birimi adını döndürür.
AccountInfoString
double AccountEquity()
double AccountInfoDouble(ACCOUNT_EQUITY)
AccountEquity
Cari hesabın hisse senedi değerini döndürür. Hisse senedi hesaplaması, alım satım sunucusu ayarlarına bağlıdır.
AccountInfoDouble
double AccountFreeMargin()
double AccountInfoDouble(ACCOUNT_FREEMARGIN)
AccountFreeMargin
Cari hesabın serbest marj değerini döndürür.
AccountInfoDouble
double AccountFreeMarginCheck(string symbol,
                              int cmd,
                              double volume)
-
AccountFreeMarginCheck
Belirtilen pozisyon cari hesaptaki mevcut fiyatta açıldıktan sonra kalan serbest marjı döndürür.
double AccountFreeMarginMode()
-
AccountFreeMarginMode
Cari hesapta pozisyon açmaya izin verilen serbest marj hesaplama modu.
int AccountLeverage()
int AccountInfoInteger(ACCOUNT_LEVERAGE)
AccountLeverage
Cari hesabın kaldıracını döndürür.
AccountInfoInteger
double AccountMargin()
double AccountInfoDouble(ACCOUNT_MARGIN)
AccountMargin
Cari hesabın marj değerini döndürür.
AccountInfoDouble
string AccountName()
string AccountInfoString(ACCOUNT_NAME)
AccountName
Cari hesap adını döndürür.
AccountInfoString
int AccountNumber()
int AccountInfoInteger(ACCOUNT_LOGIN)
AccountNumber
Cari hesap sayısını döndürür.
AccountInfoInteger
double AccountProfit()
double AccountInfoDouble(ACCOUNT_PROFIT)
AccountProfit
Cari hesabın kar değerini döndürür.
AccountInfoDouble
string AccountServer()
string AccountInfoString(ACCOUNT_SERVER)
AccountServer
Bağlı sunucu adını döndürür.
AccountInfoString
int AccountStopoutLevel()
double AccountInfoDouble(ACCOUNT_MARGIN_SO_SO)
AccountStopoutLevel
Stop Out düzeyinin değerini döndürür.
AccountInfoDouble
int AccountStopoutMode()
int AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE)
AccountStopoutMode
Stop Out düzeyi için hesaplama modunu döndürür.
AccountInfoInteger


5. Dizi İşlevleri

MQL4
MQL5
 Açıklama
int ArrayBsearch(double array[],
                 double value,
                 int count=WHOLE_ARRAY,
                 int start=0,
                 int direction=MODE_ASCEND)
int ArrayBsearch(double    array[],
                 double    searched_value
                 )
ArrayBsearch
İşlev, tek boyutlu bir sayısal dizide belirtilen bir değeri arar.
ArrayBsearch
int ArrayCopy(object&dest[],
              object source[],
              int start_dest=0,
              int start_source=0,
              int count=WHOLE_ARRAY)
int ArrayCopy(void  dst_array[],
              void  src_array[],
              int   dst_start=0,
              int   src_start=0,
              int   cnt=WHOLE_ARRAY
              )
ArrayCopy
Bir diziyi diğerine kopyalar. Diziler aynı türde olmalıdır, ancak double[], int[], datetime[], color[] ve bool[] türündeki diziler aynı türdeki diziler olarak kopyalanabilir. Kopyalanan öğe miktarını döndürür.
ArrayCopy
int ArrayCopyRates(double&dest_array[],
                   string symbol=NULL,
                   int timeframe=0)
-ArrayCopyRates
Mevcut grafik çubuklarının verilerini iki boyutlu RateInfo[][6] türünün dizisine kopyalar ve kopyalanan çubuk miktarını döndürür veya başarısız olursa -1 değerini döndürür.
int ArrayCopySeries(double&array[],
                    int series_index,
                    string symbol=NULL,
                    int timeframe=0)
int ArrayCopySeriesMQL4(double &array[],
                        int series_index,
                        string symbol=NULL,
                        int tf=0)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int count=Bars(symbol,timeframe);
   switch(series_index)
     {
      case MODE_OPEN:
         return(CopyOpen(symbol,timeframe,0,count,array));
      case MODE_LOW:
         return(CopyLow(symbol,timeframe,0,count,array));
      case MODE_HIGH:
         return(CopyHigh(symbol,timeframe,0,count,array));
      case MODE_CLOSE:
         return(CopyClose(symbol,timeframe,0,count,array));

      default: return(0);
     }
   return(0);
  }
ArrayCopySeries
Bir zaman serisi dizisini özel bir diziye kopyalar ve kopyalanan öğelerin sayısını döndürür.
CopyOpen, CopyLow, CopyHigh, CopyClose, Bars
int ArrayDimension( object array[])
-ArrayDimension
Çok boyutlu dizi sıralamasını döndürür.
bool ArrayGetAsSeries( object array[])
bool ArrayGetAsSeries(void  array)
ArrayGetAsSeries
Bir dizi bir zaman serisi dizisi olarak düzenlenmişse (dizi öğeleri sondan birinciye indekslenir) TRUE değerini, aksi takdirde FALSE değerini döndürür.
ArrayGetAsSeries
int ArrayInitialize(double &array[],
                    double value)
int ArrayInitializeMQL4(double &array[],
                        double value)
  {
   ArrayInitialize(array,value);
   return(ArraySize(array));
  }
ArrayInitialize
Sayısal bir dizinin tüm öğelerini aynı değere ayarlar. Başlatılan öğelerin sayısını döndürür.
ArrayInitialize, ArraySize
bool ArrayIsSeries( object array[])
bool ArrayIsSeries(void  array[])
ArrayIsSeries
Kontrol altındaki dizi bir zaman serisi dizisiyse (Time[],Open[],Close[],High[],Low[] veya Volume[]) TRUE değerini; aksi takdirde FALSE değerini döndürür.
ArrayIsSeries
int ArrayMaximum(double array[],
                 int count=WHOLE_ARRAY,
                 int start=0)
int ArrayMaximumMQL4(double &array[],
                     int count=WHOLE_ARRAY,
                     int start=0)
  {
   return(ArrayMaximum(array,start,count));
  }
ArrayMaximum
Maksimum değere sahip öğeyi arar. İşlev, dizideki bu maksimum öğenin pozisyonunu döndürür.
ArrayMaximum
int ArrayMinimum(double array[],
                 int count=WHOLE_ARRAY,
                 int start=0)
int ArrayMinimumMQL4(double &array[],
                     int count=WHOLE_ARRAY,
                     int start=0)
  {
   return(ArrayMinimum(array,start,count));
  }
ArrayMinimum
Minimum değere sahip öğeyi arar. İşlev, dizideki bu minimum öğenin pozisyonunu döndürür.
ArrayMinimum
int ArrayRange(object array[],
               int range_index)
int ArrayRange(void  array[],
               int   rank_index
               )
ArrayRange
Dizinin verilen boyutundaki öğelerin sayısını döndürür.
ArrayRange
int ArrayResize(object &array[],
                int new_size)
int ArrayResize(void  array[],
                int   new_size,
                int   allocated_size=0
                )
ArrayResize
İlk boyut için yeni bir boyut ayarlar.
ArrayResize
bool ArraySetAsSeries(double &array[],
                      bool set)
bool ArraySetAsSeries(void  array[],
                      bool  set
                      )
ArraySetAsSeries
Dizinin verilen boyutundaki öğelerin sayısını döndürür. İndeksler sıfır tabanlı olduğu için ebatın boyutu en büyük indeksten 1 değer büyüktür.
ArraySetAsSeries
int ArraySize( object array[])
int ArraySize(void  array[])
ArraySize
Dizide yer alan öğelerin sayısını döndürür.
ArraySize
int ArraySort(double &array[],
              int count=WHOLE_ARRAY,
              int start=0,
              int sort_dir=MODE_ASCEND)
int ArraySortMQL4(double &array[],
                  int count=WHOLE_ARRAY,
                  int start=0,
                  int sort_dir=MODE_ASCEND)
  {
   switch(sort_dir)
     {
      case MODE_ASCEND:
         ArraySetAsSeries(array,true);
      case MODE_DESCEND:
         ArraySetAsSeries(array,false);

      default: ArraySetAsSeries(array,true);
     }
   ArraySort(array);
   return(0);
  }
ArraySort
Sayısal dizileri birinci boyuta göre sıralar. Seri dizileri ArraySort() tarafından sıralanamaz.
ArraySort, ArraySetAsSeries


6. Kontrol

MQL4
MQL5
Açıklama
int GetLastError()
int GetLastError()
GetLastError
İşlev, en son oluşan hatayı döndürür, ardından son hata kodunun saklandığı özel last_error değişkeninin değeri sıfırlanır.
GetLastError
bool IsConnected()
bool TerminalInfoInteger(TERMINAL_CONNECTED)
IsConnected
İşlev, istemci terminali ile veri alışverişini gerçekleştiren sunucu arasındaki ana bağlantının durumunu döndürür. Sunucuya bağlantı başarıyla kurulduysa TRUE, aksi takdirde FALSE değerini döndürür.
TerminalInfoInteger
bool IsDemo()
bool IsDemoMQL4()
  {
   if(AccountInfoInteger(ACCOUNT_TRADE_MODE)==ACCOUNT_TRADE_MODE_DEMO)
      return(true);
   else
      return(false);
  }
IsDemo
Expert, bir demo hesabı üzerinde çalışıyorsa TRUE, aksi takdirde FALSE değerini döndürür.
AccountInfoInteger
bool IsDllsAllowed()
bool TerminalInfoInteger(TERMINAL_DLLS_ALLOWED)
IsDllsAllowed
Expert Advisor için işlev DLL çağrısına izin veriliyorsa TRUE, aksi takdirde FALSE değerini döndürür.
TerminalInfoInteger
bool IsExpertEnabled()
bool AccountInfoInteger(ACCOUNT_TRADE_EXPERT)
IsExpertEnabled
İstemci terminalinde Expert Advisor'ların kullanımı etkinleştirilmişse TRUE, aksi takdirde FALSE değerini döndürür.
AccountInfoInteger
bool IsLibrariesAllowed()
bool MQLInfoInteger(MQL5_DLLS_ALLOWED)
IsLibrariesAllowed
Expert Advisor kitaplık işlevini çağırabiliyorsa TRUE, aksi takdirde FALSE değerini döndürür.
MQLInfoInteger
bool IsOptimization()
bool MQLInfoInteger(MQL5_OPTIMIZATION)
IsOptimization
Expert Advisor, strateji test cihazı optimizasyon modunda çalışıyorsa TRUE, aksi takdirde FALSE değerini döndürür.
MQLInfoInteger
bool IsStopped()
bool IsStopped()
IsStopped
Programa (Expert Advisor veya script dosyası) çalışmasını durdurma komutu verilmişse TRUE, aksi takdirde FALSE değerini döndürür.
IsStopped
bool IsTesting()
bool MQLInfoInteger(MQL5_TESTING)
IsTesting
Expert Advisor test modunda çalışıyorsa TRUE, aksi takdirde FALSE değerini döndürür.
MQLInfoInteger
bool IsTradeAllowed()
bool MQLInfoInteger(MQL5_TRADE_ALLOWED)
IsTradeAllowed
Expert Advisor'lar tarafından alım satıma izin veriliyorsa ve alım satım için bir ileti dizisi meşgul değilse TRUE, aksi takdirde FALSE değerini döndürür.
MQLInfoInteger
bool IsTradeContextBusy()
-IsTradeContextBusy
Alım satım için bir ileti dizisi başka bir Expert Advisor tarafından kullanılıyorsa TRUE, aksi takdirde FALSE değerini döndürür.
bool IsVisualMode()
bool MQLInfoInteger(MQL5_VISUAL_MODE)
IsVisualMode
Expert Advisor işaretli "Görsel Mod" düğmesi ile test edilirse TRUE, aksi takdirde FALSE değerini döndürür.
MQLInfoInteger
int UninitializeReason()
int UninitializeReason()
UninitializeReason
Expert Advisor'lar, özel göstergeler ve script dosyaları için başlatmayı geri alma nedeninin kodunu döndürür.
UninitializeReason


7. İstemci Terminali

MQL4
 MQL5 Açıklama
string TerminalCompany()
string TerminalInfoString(TERMINAL_COMPANY)
TerminalCompany
İstemci terminaline sahip olan şirketin adını döndürür.
TerminalInfoString
string TerminalName()
string TerminalInfoString(TERMINAL_NAME)
TerminalName
İstemci terminali adını döndürür.
TerminalInfoString
string TerminalPath()
string TerminalInfoString(TERMINAL_PATH)
TerminalPath
İstemci terminalinin başlatıldığı dizini döndürür.
TerminalInfoString


8. Ortak İşlevler

MQL4
MQL5
Açıklama
void Alert(...)
void Alert(argument,...)
Uyarı
Kullanıcı tanımlı verileri içeren bir iletişim kutusu görüntüler. Parametreler herhangi bir türde olabilir.
Uyarı
void Comment(...)
void Comment(argument,...)
Açıklama
İşlev, kullanıcı tarafından tanımlanan açıklamayı grafiğin sol üst köşesinde verir.
Açıklama
int GetTickCount()
uint GetTickCount()
GetTickCount
GetTickCount() işlevi, sistemin başlatılmasından itibaren geçen milisaniye sayısını alır.
GetTickCount
double MarketInfo(string symbol,
                  int type)
double MarketInfoMQL4(string symbol,
                      int type)
  {
   switch(type)
     {
      case MODE_LOW:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
      case MODE_HIGH:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
      case MODE_TIME:
         return(SymbolInfoInteger(symbol,SYMBOL_TIME));
      case MODE_BID:
         return(Bid);
      case MODE_ASK:
         return(Ask);
      case MODE_POINT:
         return(SymbolInfoDouble(symbol,SYMBOL_POINT));
      case MODE_DIGITS:
         return(SymbolInfoInteger(symbol,SYMBOL_DIGITS));
      case MODE_SPREAD:
         return(SymbolInfoInteger(symbol,SYMBOL_SPREAD));
      case MODE_STOPLEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL));
      case MODE_LOTSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE));
      case MODE_TICKVALUE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
      case MODE_TICKSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
      case MODE_SWAPLONG:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
      case MODE_SWAPSHORT:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
      case MODE_STARTING:
         return(0);
      case MODE_EXPIRATION:
         return(0);
      case MODE_TRADEALLOWED:
         return(0);
      case MODE_MINLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
      case MODE_LOTSTEP:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
      case MODE_MAXLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
      case MODE_SWAPTYPE:
         return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE));
      case MODE_PROFITCALCMODE:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE));
      case MODE_MARGINCALCMODE:
         return(0);
      case MODE_MARGININIT:
         return(0);
      case MODE_MARGINMAINTENANCE:
         return(0);
      case MODE_MARGINHEDGED:
         return(0);
      case MODE_MARGINREQUIRED:
         return(0);
      case MODE_FREEZELEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));

      default: return(0);
     }
   return(0);
  }
MarketInfo
Piyasa İzleme penceresinde listelenen menkul kıymetler hakkında çeşitli verileri döndürür.
SymbolInfoInteger, SymbolInfoDouble, Bid, Ask
int MessageBox(string text=NULL,
               string caption=NULL,
               int flags=EMPTY)
int MessageBox(string  text,
               string  caption=NULL,
               int     flags=0)
MessageBox
MessageBox işlevi, mesaj kutusunu oluşturur, görüntüler ve çalıştırır.
MessageBox
void PlaySound(string filename)
bool PlaySound(string filename)
PlaySound
İşlev, bir ses dosyası çalar.
PlaySound
void Print(...)
void Print(argument,...)
Yazdır
Expertler günlüğüne bir mesaj yazdırır.
Yazdır
bool SendFTP(string filename,
             string ftp_path=NULL)
bool SendFTP(string filename,
             string ftp_path=NULL)
SendFTP
Dosyayı Araçlar->Seçenekler->Yayıncı sekmesinde ayarlanan FTP sunucusuna gönderir. Deneme başarısız olursa FALSE değerini döndürür.
SendFTP
void SendMail(string subject,
              string some_text)
bool SendMail(string  subject,
              string  some_text)
SendMail
Araçlar->Seçenekler->E-posta sekmesinde ayarlanan e-postaya bir mesaj gönderir.
SendMail
void Sleep(int milliseconds)
void Sleep(int milliseconds)
Sleep
Sleep() işlevi, belirtilen aralık içinde geçerli expert'in yürütülmesini askıya alır.
Sleep


9. Dönüştürme İşlevleri

MQL4
MQL5
Açıklama
string CharToStr(int char_code)
string CharToString(int char_code)
CharToStr
Sembol kodunu tek karakterli bir dizeye dönüştürür.
CharToString
string DoubleToStr(double value,
                   int digits)
string DoubleToString(double value,
                      int digits=8)
DoubleToStr
Belirtilen duyarlık biçimine dönüştürülmüş, belirtilen sayısal değere sahip metin dizesini döndürür.
DoubleToString
double NormalizeDouble(double value,
                       int digits)
double NormalizeDouble(double value,
                       int digits)
NormalizeDouble
Kayan nokta değerini verilen duyarlığa yuvarlar. Double türünün normalleştirilmiş değerini döndürür.
NormalizeDouble
double StrToDouble(string value)
double StringToDouble(string value)
StrToDouble
Sayının dize gösterimini double türüne dönüştürür (çift duyarlıklı kayan nokta biçimi).
StringToDouble
int StrToInteger(string value)
long StringToInteger(string value)
StrToInteger
Değer karakter gösterimini içeren dizeyi int (tamsayı) türünde bir değere dönüştürür.
StringToInteger
datetime StrToTime(string value)
datetime StringToTime(string value)
StrToTime
"yyyy.aa.gg ss:dd" biçimindeki dizeyi datetime türüne dönüştürür (1 Ocak 1970'den itibaren geçen saniye miktarı).
StringToTime
string TimeToStr(datetime value,
                 int mode=TIME_DATE|TIME_MINUTES)
string TimeToString(datetime value,
                    int mode=TIME_DATE|TIME_MINUTES)
TimeToStr
1 Ocak 1970'den itibaren geçen süreyi saniye cinsinden içeren değeri "yyyy.aa.gg ss:dd" biçiminde bir dizeye dönüştürür.
TimeToString


10. Özel Göstergeler

MQL4
MQL5
 Açıklama
void IndicatorBuffers(int count)
-IndicatorBuffers
Özel gösterge hesaplamaları için kullanılan arabellekler için bellek ayırır.
int IndicatorCounted()
int IndicatorCountedMQL4()
  {
   if(prev_calculated>0) return(prev_calculated-1);
   if(prev_calculated==0) return(0);
   return(0);
  }
IndicatorCounted
İşlev, gösterge en son başlatıldıktan sonra değiştirilmeyen çubuk miktarını döndürür.
OnCalculate
void IndicatorDigits(int digits)
bool IndicatorSetInteger(INDICATOR_DIGITS,digits)
IndicatorDigits
Gösterge değerlerini görselleştirmek için duyarlık biçimini (ondalık noktadan sonraki basamak sayısı) ayarlar.
IndicatorSetInteger
void IndicatorShortName(string name)
bool IndicatorSetString(INDICATOR_SHORTNAME,name)
IndicatorShortName
DataWindow'da ve grafik alt penceresinde gösterilecek özel bir göstergenin "kısa" adını ayarlar.
IndicatorSetString
void SetIndexArrow(int index,
                   int code)
bool PlotIndexSetInteger(index,PLOT_ARROW,code)
SetIndexArrow
DRAW_ARROW türündeki göstergeler satırı için bir ok sembolü ayarlar.
PlotIndexSetInteger
bool SetIndexBuffer(int index,
                    double array[])
bool SetIndexBuffer(index,array,INDICATOR_DATA)
SetIndexBuffer
Genel düzeyde bildirilen dizi değişkenini önceden tanımlanmış özel gösterge arabelleğine bağlar.
SetIndexBuffer
void SetIndexDrawBegin(int index,
                       int begin)
bool PlotIndexSetInteger(index,PLOT_DRAW_BEGIN,begin)
SetIndexDrawBegin
Belirli bir gösterge çizgisinin çiziminin başlaması gereken çubuk numarasını (veri başlangıcından itibaren) ayarlar.
PlotIndexSetInteger
void SetIndexEmptyValue(int index,
                        double value)
bool PlotIndexSetDouble(index,PLOT_EMPTY_VALUE,value)
SetIndexEmptyValue
Çizim satırı boş değerini ayarlar.
PlotIndexSetDouble
void SetIndexLabel(int index,
                   string text)
bool PlotIndexSetString(index,PLOT_LABEL,text)
SetIndexLabel
Çizim satırı açıklamasını DataWindow'da ve araç ipucunda gösterilecek şekilde ayarlar.
PlotIndexSetString
void SetIndexShift(int index,
                   int shift)
bool PlotIndexSetInteger(index,PLOT_SHIFT,shift)
SetIndexShift
Çizim satırı için ofseti ayarlar.
PlotIndexSetInteger
void SetIndexStyle(int index,
                   int type,
                   int style=EMPTY,
                   int width=EMPTY,
                   color clr=CLR_NONE)
void SetIndexStyleMQL4(int index,
                       int type,
                       int style=EMPTY,
                       int width=EMPTY,
                       color clr=CLR_NONE)
  {
   if(width>-1)
      PlotIndexSetInteger(index,PLOT_LINE_WIDTH,width);
   if(clr!=CLR_NONE)
      PlotIndexSetInteger(index,PLOT_LINE_COLOR,clr);
   switch(type)
     {
      case 0:
         PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_LINE);
      case 1:
         PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_SECTION);
      case 2:
         PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_HISTOGRAM);
      case 3:
         PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_ARROW);
      case 4:
         PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_ZIGZAG);
      case 12:
         PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_NONE);

      default:
         PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_LINE);
     }
   switch(style)
     {
      case 0:
         PlotIndexSetInteger(index,PLOT_LINE_STYLE,STYLE_SOLID);
      case 1:
         PlotIndexSetInteger(index,PLOT_LINE_STYLE,STYLE_DASH);
      case 2:
         PlotIndexSetInteger(index,PLOT_LINE_STYLE,STYLE_DOT);
      case 3:
         PlotIndexSetInteger(index,PLOT_LINE_STYLE,STYLE_DASHDOT);
      case 4:
         PlotIndexSetInteger(index,PLOT_LINE_STYLE,STYLE_DASHDOTDOT);

      default: return;
     }
SetIndexStyle
Belirli bir gösterge çizgisi için yeni türü, stili, genişliği ve rengi ayarlar.
PlotIndexSetInteger
void SetLevelStyle(int draw_style,
                   int line_width,
                   color clr=CLR_NONE)
void SetLevelStyleMQL4(int draw_style,
                       int line_width,
                       color clr=CLR_NONE)
  {
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,line_width);
   if(clr!=CLR_NONE)
      IndicatorSetInteger(INDICATOR_LEVELCOLOR,clr);
   switch(draw_style)
     {
      case 0:
         IndicatorSetInteger(INDICATOR_LEVELSTYLE,STYLE_SOLID);
      case 1:
         IndicatorSetInteger(INDICATOR_LEVELSTYLE,STYLE_DASH);
      case 2:
         IndicatorSetInteger(INDICATOR_LEVELSTYLE,STYLE_DOT);
      case 3:
         IndicatorSetInteger(INDICATOR_LEVELSTYLE,STYLE_DASHDOT);
      case 4:
         IndicatorSetInteger(INDICATOR_LEVELSTYLE,STYLE_DASHDOTDOT);

      default: return;
     }
  }
SetLevelStyle
İşlev, ayrı bir pencerede görüntülenecek göstergenin yatay düzeylerinin yeni stilini, genişliğini ve rengini ayarlar.
IndicatorSetInteger
void SetLevelValue(int level,
                   double value)
bool IndicatorSetDouble(INDICATOR_LEVELVALUE,level,value)
SetLevelValue
İşlev, göstergenin belirli bir yatay düzeyi için ayrı bir pencerede görüntülenecek bir değer ayarlar.
IndicatorSetDouble


11. Tarih ve Saat İşlevleri

MQL4
 MQL5Açıklama
int Day()
int DayMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.day);
  }
Gün
Ayın geçerli gününü, yani bilinen son sunucu zamanının ayın gününü döndürür.
TimeCurrent, MqlDateTime
int DayOfWeek()
int DayOfWeekMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.day_of_week);
  }
DayOfWeek
Bilinen son sunucu zamanının haftanın geçerli sıfır tabanlı gününü (0-Pazar,1,2,3,4,5,6) döndürür.
TimeCurrent, MqlDateTime
int DayOfYear()
int DayOfYearMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.day_of_year);
  }
DayOfYear
Yılın geçerli gününü (1, 1 Ocak anlamına gelir,..,365(6) 31 Aralık anlamına gelir); yani bilinen son sunucu zamanının yılın gününü döndürür.
TimeCurrent, MqlDateTime
int Hour()
int HourMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.hour);
  }
Saat
Programın başlatıldığı ana kadar bilinen son sunucu zamanının saatini (0,1,2,..23) döndürür (bu değer, program yürütme süresi içinde değişmez).
TimeCurrent, MqlDateTime
int Minute()
int MinuteMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.min);
  }
Dakika
Programın başlatıldığı ana kadar bilinen son sunucu zamanının geçerli dakikasını (0,1,2,..59) döndürür (bu değer, program yürütme süresi içinde değişmez).
TimeCurrent, MqlDateTime
int Month()
int MonthMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.mon);
  }
Ay
Geçerli ayı sayı (1-Ocak,2,3,4,5,6,7,8,9,10,11,12) - yani bilinen son sunucu zamanının ay sayısı - olarak döndürür.
TimeCurrent, MqlDateTime
int Seconds()
int SecondsMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.sec);
  }
Saniye
Bilinen son sunucu zamanının geçerli dakikasının başlangıcından programın başlatıldığı ana kadar geçen saniye miktarını döndürür (bu değer, program yürütme süresi içinde değişmez).
TimeCurrent, MqlDateTime
datetime TimeCurrent()
datetime TimeCurrent()
TimeCurrent
1 Ocak 1970 00:00'dan geçen saniye sayısı olarak bilinen son sunucu zamanını (en son fiyat teklifinin gelme zamanı) döndürür.
TimeCurrent
int TimeDay(datetime date)
int TimeDayMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.day);
  }
TimeDay
Belirtilen tarih için ayın gününü (1 - 31) döndürür.
TimeToStruct, MqlDateTime
int TimeDayOfWeek(datetime date)
int TimeDayOfWeekMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.day_of_week);
  }
TimeDayOfWeek
Belirtilen tarih için sıfır tabanlı haftanın gününü (0 Pazar,1,2,3,4,5,6 anlamına gelir) döndürür.
TimeToStruct, MqlDateTime
int TimeDayOfYear(datetime date)
int TimeDayOfYearMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.day_of_year);
  }
TimeDayOfYear
Belirtilen tarih için yılın gününü (1, 1 Ocak,..,365(6) 31 Aralık anlamına gelir) döndürür.
TimeToStruct, MqlDateTime
int TimeHour(datetime time)
int TimeHourMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.hour);
  }
TimeHour
Belirtilen süre için saati döndürür.
TimeToStruct, MqlDateTime
datetime TimeLocal()
datetime TimeLocal()
TimeLocal
Yerel bilgisayar saatini 1 Ocak 1970 00:00'dan itibaren geçen saniye sayısı olarak döndürür.
TimeLocal
int TimeMinute(datetime time)
int TimeMinuteMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.min);
  }
TimeMinute
Belirtilen süre için dakikayı döndürür.
TimeToStruct, MqlDateTime
int TimeMonth(datetime time)
int TimeMonthMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.mon);
  }
TimeMonth
Belirtilen zaman için ay sayısını döndürür.
TimeToStruct, MqlDateTime
int TimeSeconds(datetime time)
int TimeSecondsMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.sec);
  }
TimeSeconds
Belirtilen zaman için dakikanın başlangıcından itibaren geçen saniye miktarını döndürür.
TimeToStruct, MqlDateTime
int TimeYear(datetime time)
int TimeYearMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.year);
  }
TimeYear
Belirtilen tarih için yılı döndürür. Döndürülen değer, 1970 ile 2037 aralığında olabilir.
TimeToStruct, MqlDateTime
int Year()
int YearMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.year);
  }
Yıl
Geçerli yılı, yani bilinen son sunucu zamanının yılını döndürür.
TimeCurrent, MqlDateTime


12. Dosya İşlevleri

MQL4
 MQL5 Açıklama
void FileClose(int handle)
void FileClose(int file_handle)
FileClose
FileOpen() işlevi tarafından önceden açılmış dosyayı kapatır.
FileClose
void FileDelete(string filename)
bool FileDelete(string file_name
                int common_flag=0)
FileDelete
Belirtilen dosya adını kaldırır.
FileDelete
void FileFlush(int handle)
void FileFlush(int file_handle)
FileFlush
Dosya arabelleğinde depolanan tüm verileri diske boşaltır.
FileFlush
bool FileIsEnding(int handle)
bool FileIsEnding(int file_handle)
FileIsEnding
Dosya işaretçisi dosyanın sonundaysa mantıksal true, aksi takdirde false değerini döndürür.
FileIsEnding
bool FileIsLineEnding(int handle)
bool FileIsLineEnding(int file_handle)
FileIsLineEnding
CSV dosyası için, dosya işaretçisi satırın sonundaysa mantıksal true, aksi takdirde false değerini döndürür.
FileIsLineEnding
int FileOpen(string filename,
             int mode,
             int delimiter=';')
int FileOpen(string ile_name,
             int pen_flags,
             short delimiter='\t'
             uint codepage=CP_ACP)
FileOpen
Giriş ve/veya çıkış için dosyayı açar. Açılan dosya için bir dosya tanıtıcısını veya -1 (işlev başarısız olursa) değerini döndürür.
FileOpen
int FileOpenHistory(string filename,
                    int mode,
                    int delimiter=';')
-FileOpenHistory
Dosyayı geçerli geçmiş dizininde (terminal_directory\history\server_name) veya alt klasörlerinde açar. Açılan dosya için dosya tanıtıcısını döndürür. İşlev başarısız olursa döndürülen değer -1'dir.
int FileReadArray(int handle,
                  object &array[],
                  int start,
                  int count)
uint FileReadArray(int file_handle,
                   void array[],
                   int start_item=0,
                   int items_count=WHOLE_ARRAY)
FileReadArray
İkili dosyadan belirtilen miktarda öğeyi diziye okur.
FileReadArray
double FileReadDouble(int handle,
                      int size=DOUBLE_VALUE)
double FileReadDoubleMQL4(int handle,
                          int size=DOUBLE_VALUE)
  {
   return(FileReadDouble(handle));
  }
FileReadDouble
Geçerli ikili dosya pozisyonundan kayan noktalı çift duyarlıklı sayıyı okur.
FileReadDouble
int FileReadInteger(int handle,
                    int size=LONG_VALUE)
int FileReadInteger(int file_handle,
                    int size=INT_VALUE)
FileReadInteger
İşlev, geçerli ikili dosya pozisyonundan tamsayıyı okur.
FileReadInteger
double FileReadNumber(int handle)
double FileReadNumber(int file_handle)
FileReadNumber
Sınırlayıcıdan önceki geçerli dosya pozisyonundan sayıyı okur. Yalnızca CSV dosyaları içindir.
FileReadNumber
string FileReadString(int handle,
                      int length=0)
string FileReadString(int file_handle,
                      int size=-1)
FileReadString
Функция читает строку с текущей позиции файла.
FileReadString
bool FileSeek(int handle,
              int offset,
              int origin)
bool FileSeekMQL4(long handle,
                  int offset,
                  ENUM_FILE_POSITION origin)
  {
   FileSeek(handle,offset,origin);
   return(true);
  }
FileSeek
İşlev, dosya işaretçisini başlangıçtan, sondan veya geçerli dosya pozisyonundan bayt cinsinden bir ofset olan yeni bir pozisyona taşır.
FileSeek
int FileSize(int handle)
ulong FileSize(int file_handle)
FileSize
İşlev, dosya boyutunu bayt cinsinden döndürür.
FileSize
int FileTell(int handle)
ulong FileTell(int file_handle)
FileTell
Dosya işaretçisinin geçerli pozisyonunu döndürür.
FileTell
int FileWrite(int handle,...)
uint FileWrite(int file_handle,...)
FileWrite
İşlev, sınırlayıcı otomatik olarak eklenerek bir CSV dosyasına veri yazmak için tasarlanmıştır.
FileWrite
int FileWriteArray(int handle,
                   object array[],
                   int start,
                   int count)
int FileWriteArray(int file_handle,
                   void array[],
                   int start_item=0,
                   int items_count=WHOLE_ARRAY)
FileWriteArray
İşlev, diziyi bir ikili dosyaya yazar.
FileWriteArray
int FileWriteDouble(int handle,
                    double value,
                    int size=DOUBLE_VALUE)
uint FileWriteDouble(int file_handle,
                     double dvalue)
FileWriteDouble
İşlev, kayan noktalı bir çift değeri ikili bir dosyaya yazar.
FileWriteDouble
int FileWriteInteger(int handle,
                     int value,
                     int size=LONG_VALUE)
uint FileWriteInteger(int file_handle,
                      int ivalue,
                      int size=INT_VALUE)
FileWriteInteger
İşlev, tamsayı değerini ikili bir dosyaya yazar.
FileWriteInteger
int FileWriteString(int handle,
                    string value,
                    int size)
uint FileWriteString(int file_handle,
                     string svalue,
                     int size=-1)
FileWriteString
İşlev, dizeyi geçerli dosya pozisyonundan ikili bir dosyaya yazar.
FileWriteString


13. Genel Değişkenler

MQL4
MQL5
 Açıklama
bool GlobalVariableCheck(string name)
bool GlobalVariableCheck(string name)
GlobalVariableCheck
Genel değişken varsa TRUE, aksi takdirde FALSE değerini döndürür.
GlobalVariableCheck
bool GlobalVariableDel(string name)
bool GlobalVariableDel(string name)
GlobalVariableDel
Genel değişkeni siler.
GlobalVariableDel
double GlobalVariableGet(string name)
double GlobalVariableGet(string name)
GlobalVariableGet
Varolan bir genel değişkenin değerini veya bir hata oluşursa 0'ı döndürür.
GlobalVariableGet
string GlobalVariableName(int index)
string GlobalVariableName(int index)
GlobalVariableName
İşlev, genel değişkenler listesinde indeksine göre genel bir değişkenin adını döndürür.
GlobalVariableName
datetime GlobalVariableSet(string name,
                           double value)
datetime GlobalVariableSet(string name,
                           double value)
GlobalVariableSet
Genel değişkenin yeni bir değerini ayarlar. Mevcut değilse, sistem yeni bir genel değişken oluşturur.
GlobalVariableSet
bool GlobalVariableSetOnCondition(string name,
                                  double value,
                                  double check_value)
bool GlobalVariableSetOnCondition(string name,
                                  double value,
                                  double check_value)
GlobalVariableSetOnCondition
Geçerli değer üçüncü check_value parametresine eşitse mevcut genel değişkenin yeni değerini ayarlar.
GlobalVariableSetOnCondition
int GlobalVariablesDeleteAll(string prefix_name=NULL)
int GlobalVariablesDeleteAll(string prefix_name=NULL
                             datetime limit_data=0)
GlobalVariablesDeleteAll
Genel değişkenleri siler.
GlobalVariablesDeleteAll
int GlobalVariablesTotal()
int GlobalVariablesTotal()
GlobalVariablesTotal
İşlev, genel değişkenlerin toplam sayısını döndürür.
GlobalVariablesTotal


14. Matematiksel İşlevler

 MQL4MQL5
 Açıklama
double MathAbs(double value)
double MathAbs(double value)
MathAbs
Belirtilen sayısal değerin mutlak değerini (modülü) döndürür.
MathAbs
double MathArccos(double x)
double MathArccos(double val)
MathArccos
MathArccos işlevi, 0 ila Pi (radyan cinsinden) aralığında x'in arkkosinüsünü döndürür.
MathArccos
double MathArcsin(double x)
double MathArcsin(double val)
MathArcsin
MathArcsin işlevi, -Pi/2 ile Pi/2 radyan aralığında x'in arksinüsünü döndürür.
MathArcsin
double MathArctan(double x)
double MathArctan(double value)
MathArctan
MathArctan, x'in arktanjantını döndürür.
MathArctan
double MathCeil(double x)
double MathCeil(double val)
MathCeil
MathCeil işlevi, x'i aşan veya ona eşit olan en küçük tamsayıyı temsil eden sayısal bir değer döndürür.
MathCeil
double MathCos(double value)
double MathCos(double value)
MathCos
Belirtilen açının kosinüsünü döndürür.
MathCos
double MathExp(double d)
double MathExp(double value)
MathExp
d'nin kuvvetine yükseltilmiş e değerini döndürür.
MathExp
double MathFloor(double x)
double MathFloor(double val)
MathFloor
MathFloor işlevi, x'ten küçük veya ona eşit olan en büyük tamsayıyı temsil eden sayısal bir değer döndürür.
MathFloor
double MathLog(double x)
double MathLog(double val)
MathLog
MathLog işlevi, başarılı olursa, x'in doğal logaritmasını döndürür.
MathLog
double MathMax(double value1,
               double value2)
double MathMax(double value1,
               double value2)
MathMax
İki sayısal değerin maksimum değerini döndürür.
MathMax
double MathMin(double value1,
               double value2)
double MathMin(double value1,
               double value2)
MathMin
İki sayısal değerin minimum değerini döndürür.
MathMin
double MathMod(double value1,
               double value2)
double MathMod(double value1,
               double value2)
MathMod
İşlev, iki sayının bölünmesinden kalan kayan noktayı döndürür.
MathMod
double MathPow(double base,
               double exponent)
double MathPow(double base,
               double exponent)
MathPow
Belirtilen kuvvete yükseltilmiş temel ifadenin değerini döndürür (üs değeri).
MathPow
int MathRand()
int MathRand()
MathRand
MathRand işlevi, 0 ile 32767 aralığında bir yalancı rastgele tamsayı döndürür.
MathRand
double MathRound(double value)
double MathRound(double value)
MathRound
Belirtilen sayısal değerin en yakın tamsayısına yuvarlanmış değeri döndürür.
MathRound
double MathSin(double value)
double MathSin(double value)
MathSin
Belirtilen açının sinüsünü döndürür.
MathSin
double MathSqrt(double x)
double MathSqrt(double value)
MathSqrt
MathSqrt işlevi, x'in karekökünü döndürür.
MathSqrt
void MathSrand(int seed)
void MathSrand(int seed)
MathSrand
MathSrand() işlevi, bir dizi yalancı rastgele tamsayı oluşturmak için başlangıç noktasını ayarlar.
MathSrand
double MathTan(double x)
double MathTan(double rad)
MathTan
MathTan, x'in tanjantını döndürür.
MathTan


15. Nesne İşlevleri

MQL4
 MQL5Açıklama
bool ObjectCreate(string name,
                  int type,
                  int window,
                  datetime time1,
                  double price1,
                  datetime time2=0,
                  double price2=0,
                  datetime time3=0,
                  double price3=0)
bool ObjectCreateMQL4(string name,
                      ENUM_OBJECT type,
                      int window,
                      datetime time1,
                      double price1,
                      datetime time2=0,
                      double price2=0,
                      datetime time3=0,
                      double price3=0)
  {
   return(ObjectCreate(0,name,type,window,
          time1,price1,time2,price2,time3,price3));
  }
ObjectCreate
Belirtilen pencerede belirtilen ad, tür ve başlangıç koordinatlarına sahip bir nesne oluşturur.
ObjectCreate
bool ObjectDelete(string name)
bool ObjectDeleteMQL4(string name)
  {
   return(ObjectDelete(0,name));
  }
ObjectDelete
Belirtilen ada sahip nesneyi siler.
ObjectDelete
string ObjectDescription(string name)
string ObjectDescriptionMQL4(string name)
  {
   return(ObjectGetString(0,name,OBJPROP_TEXT));
  }
ObjectDescription
Nesne açıklamasını döndür.
ObjectGetString
int ObjectFind(string name)
int ObjectFindMQL4(string name)
  {
   return(ObjectFind(0,name));
  }
ObjectFind
Belirtilen ada sahip bir nesne arar.
ObjectFind
double ObjectGet(string name,
                 int prop_id)
double ObjectGetMQL4(string name,
                     int index)
  {
   switch(index)
     {
      case OBJPROP_TIME1:
         return(ObjectGetInteger(0,name,OBJPROP_TIME));
      case OBJPROP_PRICE1:
         return(ObjectGetDouble(0,name,OBJPROP_PRICE));
      case OBJPROP_TIME2:
         return(ObjectGetInteger(0,name,OBJPROP_TIME,1));
      case OBJPROP_PRICE2:
         return(ObjectGetDouble(0,name,OBJPROP_PRICE,1));
      case OBJPROP_TIME3:
         return(ObjectGetInteger(0,name,OBJPROP_TIME,2));
      case OBJPROP_PRICE3:
         return(ObjectGetDouble(0,name,OBJPROP_PRICE,2));
      case OBJPROP_COLOR:
         return(ObjectGetInteger(0,name,OBJPROP_COLOR));
      case OBJPROP_STYLE:
         return(ObjectGetInteger(0,name,OBJPROP_STYLE));
      case OBJPROP_WIDTH:
         return(ObjectGetInteger(0,name,OBJPROP_WIDTH));
      case OBJPROP_BACK:
         return(ObjectGetInteger(0,name,OBJPROP_WIDTH));
      case OBJPROP_RAY:
         return(ObjectGetInteger(0,name,OBJPROP_RAY_RIGHT));
      case OBJPROP_ELLIPSE:
         return(ObjectGetInteger(0,name,OBJPROP_ELLIPSE));
      case OBJPROP_SCALE:
         return(ObjectGetDouble(0,name,OBJPROP_SCALE));
      case OBJPROP_ANGLE:
         return(ObjectGetDouble(0,name,OBJPROP_ANGLE));
      case OBJPROP_ARROWCODE:
         return(ObjectGetInteger(0,name,OBJPROP_ARROWCODE));
      case OBJPROP_TIMEFRAMES:
         return(ObjectGetInteger(0,name,OBJPROP_TIMEFRAMES));
      case OBJPROP_DEVIATION:
         return(ObjectGetDouble(0,name,OBJPROP_DEVIATION));
      case OBJPROP_FONTSIZE:
         return(ObjectGetInteger(0,name,OBJPROP_FONTSIZE));
      case OBJPROP_CORNER:
         return(ObjectGetInteger(0,name,OBJPROP_CORNER));
      case OBJPROP_XDISTANCE:
         return(ObjectGetInteger(0,name,OBJPROP_XDISTANCE));
      case OBJPROP_YDISTANCE:
         return(ObjectGetInteger(0,name,OBJPROP_YDISTANCE));
      case OBJPROP_FIBOLEVELS:
         return(ObjectGetInteger(0,name,OBJPROP_LEVELS));
      case OBJPROP_LEVELCOLOR:
         return(ObjectGetInteger(0,name,OBJPROP_LEVELCOLOR));
      case OBJPROP_LEVELSTYLE:
         return(ObjectGetInteger(0,name,OBJPROP_LEVELSTYLE));
      case OBJPROP_LEVELWIDTH:
         return(ObjectGetInteger(0,name,OBJPROP_LEVELWIDTH));
     }
  }
ObjectGet
İşlev, belirtilen nesne özelliğinin değerini döndürür.
ObjectGetInteger, ObjectGetDouble

string ObjectGetFiboDescription(string name,
                                int index)
string ObjectGetFiboDescriptionMQL4(string name,
                                    int index)
  {
   return(ObjectGetString(0,name,OBJPROP_LEVELTEXT,index));
  }
ObjectGetFiboDescription
İşlev, bir Fibonacci nesnesinin düzey açıklamasını döndürür.
ObjectGetString
int ObjectGetShiftByValue(string name,
                          double value)
int ObjectGetShiftByValueMQL4(string name,
                              double value)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(PERIOD_CURRENT);
   datetime Arr[];
   int shift;
   MqlRates mql4[];
   if(ObjectGetTimeByValue(0,name,value)<0) return(-1);
   CopyRates(NULL,timeframe,0,1,mql4);
   if(CopyTime(NULL,timeframe,mql4[0].time,
      ObjectGetTimeByValue(0,name,value),Arr)>0)
      return(ArraySize(Arr)-1);
   else return(-1);
  }
ObjectGetShiftByValue
İşlev, belirtilen fiyat için çubuk indeksini (geçerli çubukla ilgili kayma) hesaplar ve döndürür.
MqlRates, ObjectGetTimeByValue, CopyRates, CopyTime, ArraySize
double ObjectGetValueByShift(string name,
                             int shift)
double ObjectGetValueByShiftMQL4(string name,
                                 int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(PERIOD_CURRENT);
   MqlRates mql4[];
   CopyRates(NULL,timeframe,shift,1,mql4);
   return(ObjectGetValueByTime(0,name,mql4[0].time,0));
  }
ObjectGetValueByShift
İşlev, belirtilen çubuk için fiyat değerini (geçerli çubukla ilgili kayma) hesaplar ve döndürür.
MqlRates, CopyRates, ObjectGetValueByTime
bool ObjectMove(string name,
                int point,
                datetime time1,
                double price1)
bool ObjectMoveMQL4(string name,
                    int point,
                    datetime time1,
                    double price1)
  {
   return(ObjectMove(0,name,point,time1,price1));
  }
ObjectMove
İşlev, grafikteki bir nesne koordinatını taşır. Nesneler, türlerine bağlı olarak birden üçe kadar koordinatlara sahip olabilir.
ObjectMove
string ObjectName(int index)
string ObjectNameMQL4(int index)
  {
   return(ObjectName(0,index));
  }
ObjectName
İşlev, nesneler listesindeki indeksine göre nesne adını döndürür.
ObjectName
int ObjectsDeleteAll(int window=EMPTY,
                     int type=EMPTY)
int ObjectsDeleteAllMQL4(int window=EMPTY,
                         int type=EMPTY)
  {
   return(ObjectsDeleteAll(0,window,type));
  }
ObjectsDeleteAll
Belirtilen türdeki ve grafiğin belirtilen alt penceresindeki tüm nesneleri kaldırır.
ObjectsDeleteAll
bool ObjectSet(string name,
               int prop_id,
               double value)
bool ObjectSetMQL4(string name,
                   int index,
                   double value)
  {
   switch(index)
     {
      case OBJPROP_TIME1:
         ObjectSetInteger(0,name,OBJPROP_TIME,(int)value);return(true);
      case OBJPROP_PRICE1:
         ObjectSetDouble(0,name,OBJPROP_PRICE,value);return(true);
      case OBJPROP_TIME2:
         ObjectSetInteger(0,name,OBJPROP_TIME,1,(int)value);return(true);
      case OBJPROP_PRICE2:
         ObjectSetDouble(0,name,OBJPROP_PRICE,1,value);return(true);
      case OBJPROP_TIME3:
         ObjectSetInteger(0,name,OBJPROP_TIME,2,(int)value);return(true);
      case OBJPROP_PRICE3:
         ObjectSetDouble(0,name,OBJPROP_PRICE,2,value);return(true);
      case OBJPROP_COLOR:
         ObjectSetInteger(0,name,OBJPROP_COLOR,(int)value);return(true);
      case OBJPROP_STYLE:
         ObjectSetInteger(0,name,OBJPROP_STYLE,(int)value);return(true);
      case OBJPROP_WIDTH:
         ObjectSetInteger(0,name,OBJPROP_WIDTH,(int)value);return(true);
      case OBJPROP_BACK:
         ObjectSetInteger(0,name,OBJPROP_BACK,(int)value);return(true);
      case OBJPROP_RAY:
         ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,(int)value);return(true);
      case OBJPROP_ELLIPSE:
         ObjectSetInteger(0,name,OBJPROP_ELLIPSE,(int)value);return(true);
      case OBJPROP_SCALE:
         ObjectSetDouble(0,name,OBJPROP_SCALE,value);return(true);
      case OBJPROP_ANGLE:
         ObjectSetDouble(0,name,OBJPROP_ANGLE,value);return(true);
      case OBJPROP_ARROWCODE:
         ObjectSetInteger(0,name,OBJPROP_ARROWCODE,(int)value);return(true);
      case OBJPROP_TIMEFRAMES:
         ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,(int)value);return(true);
      case OBJPROP_DEVIATION:
         ObjectSetDouble(0,name,OBJPROP_DEVIATION,value);return(true);
      case OBJPROP_FONTSIZE:
         ObjectSetInteger(0,name,OBJPROP_FONTSIZE,(int)value);return(true);
      case OBJPROP_CORNER:
         ObjectSetInteger(0,name,OBJPROP_CORNER,(int)value);return(true);
      case OBJPROP_XDISTANCE:
         ObjectSetInteger(0,name,OBJPROP_XDISTANCE,(int)value);return(true);
      case OBJPROP_YDISTANCE:
         ObjectSetInteger(0,name,OBJPROP_YDISTANCE,(int)value);return(true);
      case OBJPROP_FIBOLEVELS:
         ObjectSetInteger(0,name,OBJPROP_LEVELS,(int)value);return(true);
      case OBJPROP_LEVELCOLOR:
         ObjectSetInteger(0,name,OBJPROP_LEVELCOLOR,(int)value);return(true);
      case OBJPROP_LEVELSTYLE:
         ObjectSetInteger(0,name,OBJPROP_LEVELSTYLE,(int)value);return(true);
      case OBJPROP_LEVELWIDTH:
         ObjectSetInteger(0,name,OBJPROP_LEVELWIDTH,(int)value);return(true);

      default: return(false);
     }
   return(false);
  }
ObjectSet
Belirtilen nesne özelliğinin değerini değiştirir.
ObjectSetInteger, ObjectSetDouble
bool ObjectSetFiboDescription(string name,
                              int index,
                              string text)
bool ObjectSetFiboDescriptionMQL4(string name,
                                  int index,
                                  string text)
  {
   return(ObjectSetString(0,name,OBJPROP_LEVELTEXT,index,text));
  }
ObjectSetFiboDescription
İşlev, bir Fibonacci nesnesinin düzeyine yeni bir açıklama atar.
ObjectSetString
bool ObjectSetText(string name,
                   string text,
                   int font_size,
                   string font_name=NULL,
                   color text_color=CLR_NONE)
bool ObjectSetTextMQL4(string name,
                       string text,
                       int font_size,
                       string font="",
                       color text_color=CLR_NONE)
  {
   int tmpObjType=(int)ObjectGetInteger(0,name,OBJPROP_TYPE);
   if(tmpObjType!=OBJ_LABEL && tmpObjType!=OBJ_TEXT) return(false);
   if(StringLen(text)>0 && font_size>0)
     {
      if(ObjectSetString(0,name,OBJPROP_TEXT,text)==true
         && ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size)==true)
        {
         if((StringLen(font)>0)
            && ObjectSetString(0,name,OBJPROP_FONT,font)==false)
            return(false);
         if(text_color>-1
            && ObjectSetInteger(0,name,OBJPROP_COLOR,text_color)==false)
            return(false);
         return(true);
        }
      return(false);
     }
   return(false);
  }
ObjectSetText
Nesne açıklamasını değiştirir.
ObjectGetInteger, ObjectSetString, ObjectSetInteger StringLen
int ObjectsTotal(int type=EMPTY)
int ObjectsTotalMQL4(int type=EMPTY,
                     int window=-1)
  {
   return(ObjectsTotal(0,window,type));
  }
ObjectsTotal
Grafikte belirtilen türdeki nesnelerin toplam miktarını döndürür.
ObjectsTotal
int ObjectType(string name)
int ObjectTypeMQL4(string name)
  {
   return((int)ObjectGetInteger(0,name,OBJPROP_TYPE));
  }
ObjectType
İşlev, nesne türü değerini döndürür.
ObjectGetInteger


16. Dize İşlevleri

MQL4
MQL5
 Açıklama
string StringConcatenate(...)
int StringConcatenate(string &string_var,
                      void argument1
                      void argument2
                      ...)
StringConcatenate
İletilen verilerin bir dizesini oluşturur ve onu döndürür.
StringConcatenate
int StringFind(string text,
               string matched_text,
               int start=0)
int StringFind(string string_value,
               string match_substring,
               int start_pos=0)
StringFind
Bir alt dize arar. Aranan alt dizenin başladığı dizedeki pozisyonu veya alt dize bulunamadıysa -1 değerini döndürür.
StringFind
int StringGetChar(string text,
                  int pos)
ushort StringGetCharacter(string string_value,
                          int pos)
StringGetChar
Dizede belirtilen pozisyondan karakter (kod) döndürür.
StringGetCharacter
int StringLen(string text)
int StringLen(string string_value)
StringLen
Bir dizedeki karakter sayısını döndürür.
StringLen
string StringSetChar(string text,
                     int pos,
                     int value)
bool StringSetCharacter(string &string_var,
                        int pos,
                        ushort character)
StringSetChar
Belirtilen pozisyonda değiştirilen karaktere sahip dize kopyasını döndürür.
StringSetCharacter
string StringSubstr(string text,
                    int start,
                    int length=0)
string StringSubstr(string string_value,
                    int start_pos,
                    int length=-1)
StringSubstr
Belirtilen pozisyondan başlayarak metin dizesinden bir alt dize ayıklar.
StringSubstr
string StringTrimLeft(string text)
int StringTrimLeft(string& string_var)
StringTrimLeft
İşlev, dizenin sol kısmındaki satır besleme karakterlerini, boşlukları ve sekmeleri keser.
StringTrimLeft
string StringTrimRight(string text)
int StringTrimRight(string& string_var)
StringTrimRight
İşlev, dizenin sağ kısmındaki satır besleme karakterlerini, boşlukları ve sekmeleri keser.
StringTrimRight


17. Teknik Göstergeler

Expert Advisor'larda teknik göstergelerin kullanım prensipleri, Yeni Başlayanlar için MQL5:Expert Advisor'larda Teknik Göstergeler için Kullanım Kılavuzu makalesinde ele alınmaktadır. Bu referansta kullanılan yöntem, belirtilen fiyat için gösterge hesaplama sonuçlarını almak için yeterlidir. Bu yöntemi kullanmak için yardımcı işleve ihtiyacımız var:

double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
Aşağıdaki sabitleri bildirelim:
ENUM_MA_METHOD MethodMigrate(int method)
  {
   switch(method)
     {
      case 0: return(MODE_SMA);
      case 1: return(MODE_EMA);
      case 2: return(MODE_SMMA);
      case 3: return(MODE_LWMA);
      default: return(MODE_SMA);
     }
  }
ENUM_APPLIED_PRICE PriceMigrate(int price)
  {
   switch(price)
     {
      case 1: return(PRICE_CLOSE);
      case 2: return(PRICE_OPEN);
      case 3: return(PRICE_HIGH);
      case 4: return(PRICE_LOW);
      case 5: return(PRICE_MEDIAN);
      case 6: return(PRICE_TYPICAL);
      case 7: return(PRICE_WEIGHTED);
      default: return(PRICE_CLOSE);
     }
  }
ENUM_STO_PRICE StoFieldMigrate(int field)
  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }
//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
MQL4
 MQL5 Açıklama
double iAC(string symbol,
           int timeframe,
           int shift)
double iACMQL4(string symbol,
               int tf,
               int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iAC(symbol,timeframe);
   if(handle<0)
     {
      Print("The iAC object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iAC
Bill Williams'ın Hızlandırıcı/Yavaşlatıcı osilatörünü hesaplar.
iAC
double iAD(string symbol,
           int timeframe,
           int shift)
double iADMQL4(string symbol,
               int tf,
               int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=(int)iAD(symbol,timeframe,VOLUME_TICK);
   if(handle<0)
     {
      Print("The iAD object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iAD
Alım/Dağıtım göstergesini hesaplar ve değerini döndürür.
iAD
double iAlligator(string symbol,
                  int timeframe,
                  int jaw_period,
                  int jaw_shift,
                  int teeth_period,
                  int teeth_shift,
                  int lips_period,
                  int lips_shift,
                  int ma_method,
                  int applied_price,
                  int mode,
                  int shift)
double iAlligatorMQL4(string symbol,
                      int tf,
                      int jaw_period,
                      int jaw_shift,
                      int teeth_period,
                      int teeth_shift,
                      int lips_period,
                      int lips_shift,
                      int method,
                      int price,
                      int mode,
                      int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iAlligator(symbol,timeframe,jaw_period,jaw_shift,
                         teeth_period,teeth_shift,
                         lips_period,lips_shift,
                         ma_method,applied_price);
   if(handle<0)
     {
      Print("The iAlligator object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode-1,shift));
  }
iAlligator
Bill Williams'ın Alligator'ını hesaplar ve değerini döndürür.
iAlligator
double iADX(string symbol,
            int timeframe,
            int period,
            int applied_price,
            int mode,
            int shift)
double iADXMQL4(string symbol,
                int tf,
                int period,
                int price,
                int mode,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iADX(symbol,timeframe,period);
   if(handle<0)
     {
      Print("The iADX object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode,shift));
  }
iADX
Yönlü Hareket indeksini hesaplar ve değerini döndürür.
iADX
double iATR(string symbol,
            int timeframe,
            int period,
            int shift)
double iATRMQL4(string symbol,
                int tf,
                int period,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iATR(symbol,timeframe,period);
   if(handle<0)
     {
      Print("The iATR object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iATR
Ortalama gerçek aralığın Göstergesini hesaplar ve değerini döndürür.
iATR
double iAO(string symbol,
           int timeframe,
           int shift)
double iAOMQL4(string symbol,
               int tf,
               int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iAO(symbol,timeframe);
   if(handle<0)
     {
      Print("The iAO object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iAO
Bill Williams'ın Awesome osilatörünü hesaplar ve değerini döndürür.
iAO
double iBearsPower(string symbol,
                   int timeframe,
                   int period,
                   int applied_price,
                   int shift)
double iBearsPowerMQL4(string symbol,
                       int tf,
                       int period,
                       int price,
                       int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iBearsPower(symbol,timeframe,period);
   if(handle<0)
     {
      Print("The iBearsPower object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iBearsPower
Ayıların Gücü göstergesini hesaplar ve değerini döndürür.
iBearsPower
double iBands(string symbol,
              int timeframe,
              int period,
              int deviation,
              int bands_shift,
              int applied_price,
              int mode,
              int shift)
double iBandsMQL4(string symbol,
                  int tf,
                  int period,
                  double deviation,
                  int bands_shift,
                  int method,
                  int mode,
                  int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   int handle=iBands(symbol,timeframe,period,
                     bands_shift,deviation,ma_method);
   if(handle<0)
     {
      Print("The iBands object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode,shift));
  }
iBands
Bollinger bantları göstergesini hesaplar ve değerini döndürür.
iBands
double iBandsOnArray(double array[],
                     int total,
                     int period,
                     int deviation,
                     int bands_shift,
                     int mode,
                     int shift)
-iBandsOnArray
Sayısal bir dizide depolanan verilerde Bollinger Bantları göstergesini hesaplar.
double iBullsPower(string symbol,
                   int timeframe,
                   int period,
                   int applied_price,
                   int shift)
double iBullsPowerMQL4(string symbol,
                       int tf,
                       int period,
                       int price,
                       int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iBullsPower(symbol,timeframe,period);
   if(handle<0)
     {
      Print("The iBullsPower object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iBullsPower
Boğaların Gücü göstergesini hesaplar ve değerini döndürür.
iBullsPower
double iCCI(string symbol,
            int timeframe,
            int period,
            int applied_price,
            int shift)
double iCCIMQL4(string symbol,
                int tf,
                int period,
                int price,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iCCI(symbol,timeframe,period,price);
   if(handle<0)
     {
      Print("The iCCI object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iCCI
Emtia kanal indeksini hesaplar ve değerini döndürür.
iCCI
double iCCIOnArray(double array[],
                   int total,
                   int period,
                   int shift)
-iCCIOnArray
Sayısal bir dizide depolanan verilerde Emtia Kanal İndeksini hesaplar.
double iCustom(string symbol,
               int timeframe,
               string name,
               ...,
               int mode,
               int shift)
int iCustom(string symbol,
            ENUM_TIMEFRAMES period,
            string name
            ...)
iCustom
Belirtilen özel göstergeyi hesaplar ve değerini döndürür.
iCustom
double iDeMarker(string symbol,
                 int timeframe,
                 int period,
                 int shift)
double iDeMarkerMQL4(string symbol,
                     int tf,
                     int period,
                     int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iDeMarker(symbol,timeframe,period);
   if(handle<0)
     {
      Print("The iDeMarker object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iDeMarker
DeMarker göstergesini hesaplar ve değerini döndürür.
iDeMarker
double iEnvelopes(string symbol,
                  int timeframe,
                  int ma_period,
                  int ma_method,
                  int ma_shift,
                  int applied_price,
                  double deviation,
                  int mode,
                  int shift)
double EnvelopesMQL4(string symbol,
                     int tf,
                     int ma_period,
                     int method,
                     int ma_shift,
                     int price,
                     double deviation,
                     int mode,
                     int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iEnvelopes(symbol,timeframe,
                         ma_period,ma_shift,ma_method,
                         applied_price,deviation);
   if(handle<0)
     {
      Print("The iEnvelopes object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode-1,shift));
  }
iEnvelopes
Zarflar göstergesini hesaplar ve değerini döndürür.
iEnvelopes
double iEnvelopesOnArray(double array[],
                         int total,
                         int ma_period,
                         int ma_method,
                         int ma_shift,
                         double deviation,
                         int mode,
                         int shift)
-iEnvelopesOnArray
Sayısal bir dizide depolanan verilerde Zarflar göstergesini hesaplar.
double iForce(string symbol,
              int timeframe,
              int period,
              int ma_method,
              int applied_price,
              int shift)
double iForceMQL4(string symbol,
                  int tf,
                  int period,
                  int method,
                  int price,
                  int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   int handle=iForce(symbol,timeframe,period,ma_method,VOLUME_TICK);
   if(handle<0)
     {
      Print("The iForce object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iForce
Kuvvet indeksini hesaplar ve değerini döndürür.
iForce
double iFractals(string symbol,
                 int timeframe,
                 int mode,
                 int shift)
double iFractalsMQL4(string symbol,
                     int tf,
                     int mode,
                     int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iFractals(symbol,timeframe);
   if(handle<0)
     {
      Print("The iFractals object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode-1,shift));
  }
iFractals
Fraktalları hesaplar ve değerini döndürür.
iFractals
double iGator(string symbol,
              int timeframe,
              int jaw_period,
              int jaw_shift,
              int teeth_period,
              int teeth_shift,
              int lips_period,
              int lips_shift,
              int ma_method,
              int applied_price,
              int mode,
              int shift)
double iGatorMQL4(string symbol,
                  int tf,
                  int jaw_period,
                  int jaw_shift,
                  int teeth_period,
                  int teeth_shift,
                  int lips_period,
                  int lips_shift,
                  int method,
                  int price,
                  int mode,
                  int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iGator(symbol,timeframe,jaw_period,jaw_shift,
                     teeth_period,teeth_shift,
                     lips_period,lips_shift,
                     ma_method,applied_price);
   if(handle<0)
     {
      Print("The iGator object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode-1,shift));
  }
iGator
Gator osilatörü hesabı.
iGator
double iIchimoku(string symbol,
                 int timeframe,
                 int tenkan_sen,
                 int kijun_sen,
                 int senkou_span_b,
                 int mode,
                 int shift)
double iIchimokuMQL4(string symbol,
                     int tf,
                     int tenkan_sen,
                     int kijun_sen,
                     int senkou_span_b,
                     int mode,
                     int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iIchimoku(symbol,timeframe,
                        tenkan_sen,kijun_sen,senkou_span_b);
   if(handle<0)
     {
      Print("The iIchimoku object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode-1,shift));
  }
iIchimoku
Ichimoku Kinko Hyo'yu hesaplar ve değerini döndürür.
iIchimoku
double iBWMFI(string symbol,
              int timeframe,
              int shift)
double iBWMFIMQL4(string symbol,
                  int tf,
                  int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=(int)iBWMFI(symbol,timeframe,VOLUME_TICK);
   if(handle<0)
     {
      Print("The iBWMFI object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iBWMFI
Bill Williams Piyasa Kolaylık indeksini hesaplar ve değerini döndürür.
iBWMFI
double iMomentum(string symbol,
                 int timeframe,
                 int period,
                 int applied_price,
                 int shift)
double iMomentumMQL4(string symbol,
                     int tf,
                     int period,
                     int price,
                     int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iMomentum(symbol,timeframe,period,applied_price);
   if(handle<0)
     {
      Print("The iMomentum object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iMomentum
Momentum göstergesini hesaplar ve değerini döndürür.
iMomentum
double iMomentumOnArray(double array[],
                        int total,
                        int period,
                        int shift)
-iMomentumOnArray
Sayısal bir dizide depolanan verilerde Momentum göstergesini hesaplar.
double iMFI(string symbol,
            int timeframe,
            int period,
            int shift)
double iMFIMQL4(string symbol,
                int tf,
                int period,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=(int)iMFI(symbol,timeframe,period,VOLUME_TICK);
   if(handle<0)
     {
      Print("The iMFI object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iMFI
Para akışı endeksini hesaplar ve değerini döndürür.
iMFI
double iMA(string symbol,
           int timeframe,
           int period,
           int ma_shift,
           int ma_method,
           int applied_price,
           int shift)
double iMAMQL4(string symbol,
               int tf,
               int period,
               int ma_shift,
               int method,
               int price,
               int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iMA(symbol,timeframe,period,ma_shift,
                  ma_method,applied_price);
   if(handle<0)
     {
      Print("The iMA object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iMA
Hareketli ortalama göstergesini hesaplar ve değerini döndürür.
iMA
double iMAOnArray(double array[],
                  int total,
                  int period,
                  int ma_shift,
                  int ma_method,
                  int shift)
double iMAOnArrayMQL4(double &array[],
                      int total,
                      int period,
                      int ma_shift,
                      int ma_method,
                      int shift)
  {
   double buf[],arr[];
   if(total==0) total=ArraySize(array);
   if(total>0 && total<=period) return(0);
   if(shift>total-period-ma_shift) return(0);
   switch(ma_method)
     {
      case MODE_SMA :
        {
         total=ArrayCopy(arr,array,0,shift+ma_shift,period);
         if(ArrayResize(buf,total)<0) return(0);
         double sum=0;
         int    i,pos=total-1;
         for(i=1;i<period;i++,pos--)
            sum+=arr[pos];
         while(pos>=0)
           {
            sum+=arr[pos];
            buf[pos]=sum/period;
            sum-=arr[pos+period-1];
            pos--;
           }
         return(buf[0]);
        }
      case MODE_EMA :
        {
         if(ArrayResize(buf,total)<0) return(0);
         double pr=2.0/(period+1);
         int    pos=total-2;
         while(pos>=0)
           {
            if(pos==total-2) buf[pos+1]=array[pos+1];
            buf[pos]=array[pos]*pr+buf[pos+1]*(1-pr);
            pos--;
           }
         return(buf[shift+ma_shift]);
        }
      case MODE_SMMA :
        {
         if(ArrayResize(buf,total)<0) return(0);
         double sum=0;
         int    i,k,pos;
         pos=total-period;
         while(pos>=0)
           {
            if(pos==total-period)
              {
               for(i=0,k=pos;i<period;i++,k++)
                 {
                  sum+=array[k];
                  buf[k]=0;
                 }
              }
            else sum=buf[pos+1]*(period-1)+array[pos];
            buf[pos]=sum/period;
            pos--;
           }
         return(buf[shift+ma_shift]);
        }
      case MODE_LWMA :
        {
         if(ArrayResize(buf,total)<0) return(0);
         double sum=0.0,lsum=0.0;
         double price;
         int    i,weight=0,pos=total-1;
         for(i=1;i<=period;i++,pos--)
           {
            price=array[pos];
            sum+=price*i;
            lsum+=price;
            weight+=i;
           }
         pos++;
         i=pos+period;
         while(pos>=0)
           {
            buf[pos]=sum/weight;
            if(pos==0) break;
            pos--;
            i--;
            price=array[pos];
            sum=sum-lsum+price*period;
            lsum-=array[i];
            lsum+=price;
           }
         return(buf[shift+ma_shift]);
        }
      default: return(0);
     }
   return(0);
  }

double iOsMA(string symbol,
             int timeframe,
             int fast_ema_period,
             int slow_ema_period,
             int signal_period,
             int applied_price,
             int shift)
double iOsMAMQL4(string symbol,
                 int tf,
                 int fast_ema_period,
                 int slow_ema_period,
                 int signal_period,
                 int price,
                 int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iOsMA(symbol,timeframe,
                    fast_ema_period,slow_ema_period,
                    signal_period,applied_price);
   if(handle<0)
     {
      Print("The iOsMA object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iOsMA
Osilatörün Hareketli Ortalamasını hesaplar ve değerini döndürür.
iOsMA
double iMACD(string symbol,
             int timeframe,
             int fast_ema_period,
             int slow_ema_period,
             int signal_period,
             int applied_price,
             int mode,
             int shift)
double iMACDMQL4(string symbol,
                 int tf,
                 int fast_ema_period,
                 int slow_ema_period,
                 int signal_period,
                 int price,
                 int mode,
                 int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iMACD(symbol,timeframe,
                    fast_ema_period,slow_ema_period,
                    signal_period,applied_price);
   if(handle<0)
     {
      Print("The iMACD object is not created: Error ",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode,shift));
  }
iMACD
Hareketli ortalamalar yakınsama/ıraksamayı hesaplar ve değerini döndürür.
iMACD
double iOBV(string symbol,
            int timeframe,
            int applied_price,
            int shift)
double iOBVMQL4(string symbol,
                int tf,
                int price,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iOBV(symbol,timeframe,VOLUME_TICK);
   if(handle<0)
     {
      Print("The iOBV object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iOBV
Denge İşlem Hacmi göstergesini hesaplar ve değerini döndürür.
iOBV
double iSAR(string symbol,
            int timeframe,
            double step,
            double maximum,
            int shift)
double iSARMQL4(string symbol,
                int tf,
                double step,
                double maximum,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iSAR(symbol,timeframe,step,maximum);
   if(handle<0)
     {
      Print("The iSAR object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iSAR
Parabolik Dur ve Ters Pozisyon Al sistemini hesaplar ve değerini döndürür.
iSAR
double iRSI(string symbol,
            int timeframe,
            int period,
            int applied_price,
            int shift)
double iRSIMQL4(string symbol,
                int tf,
                int period,
                int price,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iRSI(symbol,timeframe,period,applied_price);
   if(handle<0)
     {
      Print("The iRSI object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iRSI
Göreceli güç indeksini hesaplar ve değerini döndürür.
iRSI
double iRSIOnArray(double array[],
                   int total,
                   int period,
                   int shift)
-iRSIOnArray
Sayısal bir dizide depolanan verilerde Göreceli Güç İndeksini hesaplar.
double iRVI(string symbol,
            int timeframe,
            int period,
            int mode,
            int shift)
double iRVIMQL4(string symbol,
                int tf,
                int period,
                int mode,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iRVI(symbol,timeframe,period);
   if(handle<0)
     {
      Print("The iRVI object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode,shift));
  }
iRVI
Göreceli Vigor indeksini hesaplar ve değerini döndürür.
iRVI
double iStdDev(string symbol,
               int timeframe,
               int ma_period,
               int ma_shift,
               int ma_method,
               int applied_price,
               int shift)
double iStdDevMQL4(string symbol,
                   int tf,
                   int ma_period,
                   int ma_shift,
                   int method,
                   int price,
                   int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
   int handle=iStdDev(symbol,timeframe,ma_period,ma_shift,
                      ma_method,applied_price);
   if(handle<0)
     {
      Print("The iStdDev object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iStdDev
Standart Sapma göstergesini hesaplar ve değerini döndürür.
iStdDev
double iStdDevOnArray(double array[],
                      int total,
                      int ma_period,
                      int ma_shift,
                      int ma_method,
                      int shift)
-iStdDevOnArray
Sayısal bir dizide depolanan verilerde Standart Sapma göstergesinin hesaplanması.
double iStochastic(string symbol,
                   int timeframe,
                   int%Kperiod,
                   int%Dperiod,
                   int slowing,
                   int method,
                   int price_field,
                   int mode,
                   int shift)
double iStochasticMQL4(string symbol,
                       int tf,
                       int Kperiod,
                       int Dperiod,
                       int slowing,
                       int method,
                       int field,
                       int mode,
                       int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   ENUM_MA_METHOD ma_method=MethodMigrate(method);
   ENUM_STO_PRICE price_field=StoFieldMigrate(field);
   int handle=iStochastic(symbol,timeframe,Kperiod,Dperiod,
                          slowing,ma_method,price_field);
   if(handle<0)
     {
      Print("The iStochastic object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,mode,shift));
  }
iStochastic
Stokastik osilatörü hesaplar ve değerini döndürür.
iStochastic
double iWPR(string symbol,
            int timeframe,
            int period,
            int shift)
double iWPRMQL4(string symbol,
                int tf,
                int period,
                int shift)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   int handle=iWPR(symbol,timeframe,period);
   if(handle<0)
     {
      Print("The iWPR object is not created: Error",GetLastError());
      return(-1);
     }
   else
      return(CopyBufferMQL4(handle,0,shift));
  }
iWPR
Larry William'ın yüzde aralığı göstergesini hesaplar ve değerini döndürür.
iWPR


18. Zaman Serisi Erişimi

MQL4
 MQL5 Açıklama
int iBars(string symbol,
          int timeframe)
int iBarsMQL4(string symbol,int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   return(Bars(symbol,timeframe));
  }
int iBarsMQL4(string symbol,int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   return(Bars(symbol,timeframe));
  }
Çubuklar

Belirtilen grafikteki çubuk sayısını döndürür.
Çubuklar
int iBarShift(string symbol,
              int timeframe,
              datetime time,
              bool exact=false
int iBarShiftMQL4(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
iBarShift
Çubuğu açılış saatine göre arar.
CopyTime, ArraySize
double iClose(string symbol,
              int timeframe,
              int shift)
double iCloseMQL4(string symbol,int tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyClose(symbol,timeframe, index, 1, Arr)>0) 
        return(Arr[0]);
   else return(-1);
}
Kapanış
Belirtilen sembolün çubuğu için zaman dilimi ve kayma ile Kapanış değerini döndürür. Yerel geçmiş boşsa (yüklenmemişse), işlev 0 değerini döndürür.
CopyRates, MqlRates
double iHigh(string symbol,
             int timeframe,
             int shift)
double iHighMQL4(string symbol,int tf,int index)

{
   if(index < 0) return(-1);
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyHigh(symbol,timeframe, index, 1, Arr)>0) 
        return(Arr[0]);
   else return(-1);
}
Yüksek
Belirtilen sembolün çubuğu için zaman dilimi ve kayma ile Yüksek değerini döndürür. Yerel geçmiş boşsa (yüklenmemişse), işlev 0 değerini döndürür.
CopyRates, MqlRates
int iHighest(string symbol,
             int timeframe,
             int type,
             int count=WHOLE_ARRAY,
             int start=0)
int iHighestMQL4(string symbol,
                 int tf,
                 int type,
                 int count=WHOLE_ARRAY,
                 int start=0)
  {
   if(start<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(count<=0) count=Bars(symbol,timeframe);
   if(type<=MODE_OPEN)
     {
      double Open[];
      ArraySetAsSeries(Open,true);
      CopyOpen(symbol,timeframe,start,count,Open);
      return(ArrayMaximum(Open,0,count)+start);
     }
   if(type==MODE_LOW)
     {
      double Low[];
      ArraySetAsSeries(Low,true);
      CopyLow(symbol,timeframe,start,count,Low);
      return(ArrayMaximum(Low,0,count)+start);
     }
   if(type==MODE_HIGH)
     {
      double High[];
      ArraySetAsSeries(High,true);
      CopyHigh(symbol,timeframe,start,count,High);
      return(ArrayMaximum(High,0,count)+start);
     }
   if(type==MODE_CLOSE)
     {
      double Close[];
      ArraySetAsSeries(Close,true);
      CopyClose(symbol,timeframe,start,count,Close);
      return(ArrayMaximum(Close,0,count)+start);
     }
   if(type==MODE_VOLUME)
     {
      long Volume[];
      ArraySetAsSeries(Volume,true);
      CopyTickVolume(symbol,timeframe,start,count,Volume);
      return(ArrayMaximum(Volume,0,count)+start);
     }
   if(type>=MODE_TIME)
     {
      datetime Time[];
      ArraySetAsSeries(Time,true);
      CopyTime(symbol,timeframe,start,count,Time);
      return(ArrayMaximum(Time,0,count)+start);
      //---
     }
   return(0);
  }

iHighest
Türe bağlı olarak belirli bir sayıda dönem boyunca maksimum değerin kaymasını döndürür.
CopyOpen, CopyLow, CopyHigh, CopyClose, CopyTickVolume, CopyTime, ArrayMaximum
double iLow(string symbol,
            int timeframe,
            int shift)
double iLowMQL4(string symbol,int tf,int index)

{
   if(index < 0) return(-1);
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyLow(symbol,timeframe, index, 1, Arr)>0)
        return(Arr[0]);
   else return(-1);
}
iLow
Belirtilen sembolün çubuğu için zaman dilimi ve kayma ile Düşük değerini döndürür. Yerel geçmiş boşsa (yüklenmemişse), işlev 0 değerini döndürür.
CopyRates, MqlRates
int iLowest(string symbol,
            int timeframe,
            int type,
            int count=WHOLE_ARRAY,
            int start=0)
int iLowestMQL4(string symbol,
                int tf,
                int type,
                int count=WHOLE_ARRAY,
                int start=0)
  {
   if(start<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(count<=0) count=Bars(symbol,timeframe);
   if(type<=MODE_OPEN)
     {
      double Open[];
      ArraySetAsSeries(Open,true);
      CopyOpen(symbol,timeframe,start,count,Open);
      return(ArrayMinimum(Open,0,count)+start);
     }
   if(type==MODE_LOW)
     {
      double Low[];
      ArraySetAsSeries(Low,true);
      CopyLow(symbol,timeframe,start,count,Low);
      return(ArrayMinimum(Low,0,count)+start);
     }
   if(type==MODE_HIGH)
     {
      double High[];
      ArraySetAsSeries(High,true);
      CopyHigh(symbol,timeframe,start,count,High);
      return(ArrayMinimum(High,0,count)+start);
     }
   if(type==MODE_CLOSE)
     {
      double Close[];
      ArraySetAsSeries(Close,true);
      CopyClose(symbol,timeframe,start,count,Close);
      return(ArrayMinimum(Close,0,count)+start);
     }
   if(type==MODE_VOLUME)
     {
      long Volume[];
      ArraySetAsSeries(Volume,true);
      CopyTickVolume(symbol,timeframe,start,count,Volume);
      return(ArrayMinimum(Volume,0,count)+start);
     }
   if(type>=MODE_TIME)
     {
      datetime Time[];
      ArraySetAsSeries(Time,true);
      CopyTime(symbol,timeframe,start,count,Time);
      return(ArrayMinimum(Time,0,count)+start);
     }
//---
   return(0);
  }

iLowest
Türe bağlı olarak belirli bir sayıda dönem boyunca en düşük değerin kaymasını döndürür.
CopyOpen, CopyLow, CopyHigh, CopyClose, CopyTickVolume, CopyTimeArrayMinimum
double iOpen(string symbol,
             int timeframe,
             int shift)
double iOpenMQL4(string symbol,int tf,int index)

{   
   if(index < 0) return(-1);
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyOpen(symbol,timeframe, index, 1, Arr)>0) 
        return(Arr[0]);
   else return(-1);
}
iOpen
Belirtilen sembolün çubuğu için zaman dilimi ve kayma ile Açılış değerini döndürür. Yerel geçmiş boşsa (yüklenmemişse), işlev 0 değerini döndürür.
CopyRates, MqlRates
datetime iTime(string symbol,
               int timeframe,
               int shift)
datetime iTimeMQL4(string symbol,int tf,int index)

{
   if(index < 0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[];
   if(CopyTime(symbol, timeframe, index, 1, Arr)>0)
        return(Arr[0]);
   else return(-1);
}
iTime
Belirtilen sembolün çubuğu için zaman dilimi ve kayma ile Zaman değerini döndürür. Yerel geçmiş boşsa (yüklenmemişse), işlev 0 değerini döndürür.
CopyRates, MqlRates
double iVolume(string symbol,
               int timeframe,
               int shift)
int iVolumeMQL4(string symbol,int tf,int index)

{
   if(index < 0) return(-1);
   long Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyTickVolume(symbol, timeframe, index, 1, Arr)>0)
        return(Arr[0]);
   else return(-1);
}
iVolume
Belirtilen sembolün çubuğu için zaman dilimi ve kayma ile Tick Hacmi değerini döndürür. Yerel geçmiş boşsa (yüklenmemişse), işlev 0 değerini döndürür.
CopyRates, MqlRates


19. Grafik İşlemleri

MQL4
 MQL5Açıklama
void HideTestIndicators(bool hide)
-HideTestIndicators
İşlev, Expert Advisor tarafından çağrılan bir bayrak gizleme göstergesi ayarlar.
int Period()
ENUM_TIMEFRAMES  Period()
Dönem
Kullanılan dönemi (grafik zaman dilimi) belirleyen dakika miktarını döndürür.
Dönem
bool RefreshRates()
-RefreshRates
Önceden tanımlanmış değişkenlerde ve seri dizilerinde verilerin yenilenmesi.
string Symbol()
string Symbol()
Symbol
Geçerli finansal enstrümanın adını içeren bir metin dizesi döndürür.
Sembol
int WindowBarsPerChart()
int ChartGetInteger(0,CHART_VISIBLE_BARS,0)
WindowBarsPerChart
İşlev, grafikte görünen çubuk miktarını döndürür.
ChartGetInteger
string WindowExpertName()
string MQLInfoString(MQL5_PROGRAM_NAME)
WindowExpertName
Bu işlevin çağrıldığı MQL4 programına bağlı olarak yürütülen expert'in, script dosyasının, özel göstergenin veya kitaplığın adını döndürür.
MQLInfoString

int WindowFind(string name)
int WindowFindMQL4(string name)
  {
   int window=-1;
   if((ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR)
     {
      window=ChartWindowFind();
     }
   else
     {
      window=ChartWindowFind(0,name);
      if(window==-1) Print(__FUNCTION__+"(): Error = ",GetLastError());
     }
   return(window);
  }
WindowFind
Ada sahip bir gösterge bulunursa, işlev bu belirtilen göstergeyi içeren pencere indeksini döndürür, aksi takdirde -1 değerini döndürür.
ChartWindowFind, MQLInfoInteger
int WindowFirstVisibleBar()
int ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0)
WindowFirstVisibleBar
İşlev, mevcut grafik penceresindeki ilk görünür çubuk numarasını döndürür.
ChartGetInteger
int WindowHandle(string symbol,
                 int timeframe)
int WindowHandleMQL4(string symbol,
                     int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   while(i<limit)
     {
      currChart=ChartNext(prevChart);
      if(currChart<0) break;
      if(ChartSymbol(currChart)==symbol
         && ChartPeriod(currChart)==timeframe)
         return((int)currChart);
      prevChart=currChart;
      i++;
     }
   return(0);
  }
WindowHandle
Belirtilen grafiğin sistem penceresi tanıtıcısını döndürür.
ChartFirst, ChartNext, ChartSymbol, ChartPeriod
bool WindowIsVisible(int index)
bool ChartGetInteger(0,CHART_WINDOW_IS_VISIBLE,index)
WindowIsVisible
Grafik alt penceresi görünüyorsa TRUE, aksi takdirde FALSE değerini döndürür.
ChartGetInteger
int WindowOnDropped()
int ChartWindowOnDropped()
WindowOnDropped
Expert, özel gösterge veya script dosyasının bırakıldığı pencere indeksini döndürür.
ChartWindowOnDropped
double WindowPriceMax(int index=0)
double ChartGetDouble(0,CHART_PRICE_MAX,index)
WindowPriceMax
Mevcut grafiğin belirtilen alt penceresinin dikey ölçeğinin maksimum değerini döndürür (0-ana grafik penceresi, göstergelerin alt pencereleri 1'den başlayarak numaralandırılır).
ChartGetDouble
double WindowPriceMin(int index=0)
double ChartGetDouble(0,CHART_PRICE_MIN,index)
WindowPriceMin
Mevcut grafiğin belirtilen alt penceresinin dikey ölçeğinin minimum değerini döndürür (0-ana grafik penceresi, göstergelerin alt pencereleri 1'den başlayarak numaralandırılır).
ChartGetDouble
double WindowPriceOnDropped()
double ChartPriceOnDropped()
WindowPriceOnDropped
Expert veya script dosyasının bırakıldığı grafik noktasının fiyat bölümünü döndürür.
ChartPriceOnDropped
void WindowRedraw()
void ChartRedraw(0)
WindowRedraw
Mevcut grafiği zorla yeniden çizer.
ChartRedraw
bool WindowScreenShot(string filename,
                      int size_x,
                      int size_y,
                      int start_bar=-1,
                      int chart_scale=-1,
                      int chart_mode=-1)
bool WindowScreenShotMQL4(string filename,
                          int size_x,
                          int size_y,
                          int start_bar=-1,
                          int chart_scale=-1,
                          int chart_mode=-1)
  {
   if(chart_scale>0 && chart_scale<=5)
      ChartSetInteger(0,CHART_SCALE,chart_scale);
   switch(chart_mode)
     {
      case 0: ChartSetInteger(0,CHART_MODE,CHART_BARS);
      case 1: ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
      case 2: ChartSetInteger(0,CHART_MODE,CHART_LINE);
     }
   if(start_bar<0)
      return(ChartScreenShot(0,filename,size_x,size_y,ALIGN_RIGHT));
   else
      return(ChartScreenShot(0,filename,size_x,size_y,ALIGN_LEFT));
  }
WindowScreenShot
Mevcut grafiğin ekran görüntüsünü bir GIF dosyası olarak kaydeder.
ChartSetInteger, ChartScreenShot
datetime WindowTimeOnDropped()
datetime ChartTimeOnDropped()
WindowTimeOnDropped
Expert veya script dosyasının bırakıldığı grafik noktasının zaman bölümünü döndürür.
ChartTimeOnDropped
int WindowsTotal()
int ChartGetInteger(0,CHART_WINDOWS_TOTAL)
WindowsTotal
Grafikteki gösterge pencerelerinin sayısını döndürür (ana grafik dahil).
ChartGetInteger
int WindowXOnDropped()
int ChartXOnDropped()
WindowXOnDropped
Expert'in veya script dosyasının bırakıldığı grafik penceresi istemci alanı noktası için X eksenindeki değeri piksel cinsinden döndürür.
ChartXOnDropped
int WindowYOnDropped()
int ChartYOnDropped()
WindowYOnDropped
Expert'in veya script dosyasının bırakıldığı grafik penceresi istemci alanı noktası için Y eksenindeki değeri piksel cinsinden döndürür.
ChartYOnDropped

Sonuç

  1. Alım satım işlevlerini dikkate almadık; zira MQL5'te kavram farklıdır ve orijinal olan kullanılmalıdır! Bunları dönüştürmek mümkündür, ancak alım satım mantığı değiştirilmelidir. Başka bir deyişle, onları dönüştürmenin herhangi bir anlamı yoktur.
  2. Programların bir dilden diğerine dönüştürülmesi her zaman işlevsellik ve performans kaybıyla ilişkilidir. Bu nedenle, işlevlerin benzerlerini hızlı aramak için bu kılavuzu kullanın.
  3. MQL4 programlarınızı yeni MetaTrader 5 istemci terminalinde çalıştırmanıza olanak tanıyacak MQL4 öykünücüsünü geliştirme planlarım var.

Teşekkür: keiji, A. Williams.

MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal makale: https://www.mql5.com/ru/articles/81

Ekli dosyalar |
initmql4.mqh (7.5 KB)
Birkaç Ara Gösterge Arabelleği Kullanarak Çok Para Birimli Gösterge Oluşturma Birkaç Ara Gösterge Arabelleği Kullanarak Çok Para Birimli Gösterge Oluşturma
FOREX piyasasının küme analizlerine ilgi son zamanlarda arttı. MQL5, döviz çiftlerinin hareket trendlerini araştırmak için yeni olanaklar sunar. MQL5'i MQL4'ten ayıran en önemli özelliği, sınırsız miktarda gösterge arabelleği kullanma olasılığıdır. Bu makalede, çok para birimli göstergesi oluşturma örneği açıklanmaktadır.
MetaTrader 5: Bloglarda, sosyal ağlarda ve özel web sitelerinde e-posta yoluyla alım satım tahminleri ve canlı alım satım beyanları yayınlamak MetaTrader 5: Bloglarda, sosyal ağlarda ve özel web sitelerinde e-posta yoluyla alım satım tahminleri ve canlı alım satım beyanları yayınlamak
Bu makale, MetaTrader 5 kullanarak tahmin yayınlamak için hazır çözümler sunulmasına yöneliktir. Bu, MetaTrader beyanlarını yayınlamak için özel web siteleri kullanmaktan, kişinin neredeyse hiç web programlama deneyimi gerektirmeden kendi web sitesini kurmasına ve son olarak birçok okuyucunun katılmasına ve tahminleri takip etmesine izin veren bir sosyal ağ mikroblog hizmeti ile entegrasyona kadar bir dizi fikri içerir. Burada sunulan tüm çözümler %100 ücretsizdir ve temel e-posta ve ftp hizmetleri bilgisi olan herkes tarafından kurulabilir. Profesyonel barındırma ve ticari alım satım tahmini hizmetleri için aynı tekniklerin kullanılması konusunda hiçbir engel yoktur.
Pozisyon odaklı MetaTrader 5 ortamındaki talimatları takip etmek için Sanal Talimat Yöneticisi Pozisyon odaklı MetaTrader 5 ortamındaki talimatları takip etmek için Sanal Talimat Yöneticisi
Bu sınıf kitaplığı, MetaTrader 5'in pozisyon tabanlı yaklaşımına kıyasla, MetaTrader 4'e genel olarak benzer talimat odaklı bir yaklaşımla yazılmasını sağlamak için bir MetaTrader 5 Expert Advisor'ına eklenebilir. Bunu, MetaTrader 5 istemci terminalinde sanal talimatları takip ederken, olağanüstü durum koruması için her pozisyon için koruyucu bir aracı durdurması sağlayarak yapar.
Örnek olarak MQL5'te OOP: Uyarı ve Hata Kodlarını İşleme Örnek olarak MQL5'te OOP: Uyarı ve Hata Kodlarını İşleme
Makalede, alım satım sunucusu dönüş kodlarıyla çalışmak için bir sınıf oluşturma örneği ve MQL programının çalıştırılması sırasında meydana gelen tüm hatalar açıklanmaktadır. Makaleyi okuduktan sonra MQL5'te sınıflar ve nesnelerle nasıl çalışacağınızı öğreneceksiniz. Aynı zamanda bu, hataları işlemek için uygun bir araçtır ve bu aracı özel ihtiyaçlarınıza göre daha da değiştirebilirsiniz.