English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
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

MetaTrader 5Ticaret | 15 Aralık 2021, 09:57
112 0
Paul
Paul


1. Giriş

MetaTrader 4'ten MetaTrader 5'e geçişteki muhtemelen en büyük değişiklik, pozisyonlar olarak açık alım satım işlemlerinin yönetimidir. Herhangi bir zamanda, her sembol için yalnızca bir pozisyon açık olabilir ve bu pozisyonun boyutu, aracı tarafından talimatlar her işlendiğinde yukarı ve aşağı ayarlanır. Bu, ABD'de tanıtılan NFA 2-43(b) FIFO kuralı ve aynı zamanda vadeli işlemler, emtialar ve CFD'ler gibi diğer birçok varlıktaki alım satım moduna da uygundur.

Farkın net bir örneği, aynı sembole karşı çalışan iki EA'nın zıt yönlerde talimat vermesi olabilir.  Bu, scalper ve trend takipçisi gibi farklı zaman dilimlerinde çalışan iki EA ile yaygın bir durum olabilir.  MetaTrader 4'te açık alım satım listesi, sıfır marj kullanılan açık alım ve satım talimatlarını gösterecektir. MetaTrader 5'te hiçbir pozisyon açık olmazdı.

EA kodunun kendisine bakıldığında, aşağıda yaygın olarak kullanılan MQL4 OpenOrders() veya benzer varyant gibi işlevler MQL5'e geçirildiğinde beklendiği gibi çalışmayacaktır.

int OpenOrders()  // MetaTrader 4 code to count total open orders for this EA
{
  int nOpenOrders=0;
  for (int i=OrdersTotal()-1; i>=0; i--)
  {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber()==magic)
      if (OrderType()==OP_BUY || OrderType()==OP_SELL)
        if (OrderSymbol()==Symbol())
          nOpenOrders++;
  }
  return(nOpenOrders);
}

Bu nedenle, MetaTrader 5 pozisyon odaklı ortamı, MetaTrader 4'te kullanılan talimat işleme yaklaşımına alışkın olan programcı için alışılmadık zorluklar sunar. MetaTrader 4'teki basit talimat yönetimi işlevleri, birden fazla talimat tek bir pozisyonda birleştirilebildiğinde, (örneğin bir sembolde birden fazla EA alım satım işlemi veya bir sembolde tek bir EA'dan gelen birden fazla talimat gibi) MetaTrader 5'te daha karmaşık hale gelir.


2. MetaTrader 5 'te pozisyonlarla çalışma yolları

Alım satım stratejilerinin karmaşıklığına bağlı olarak, MetaTrader 5'te bu pozisyon odaklı ortamı yönetmenin birkaç yolu vardır.

İlk olarak, MetaTrader 5'in bekleyen talimatları işlemesinin MetaTrader 4'e benzer olduğunu, dolayısıyla yalnızca bekleyen talimatlar için yazılan MQL5 kodunun MQL4 kodundan nispeten basit bir geçiş olabileceğini unutmayın.

2.1 Basit EA; hesap başına her bir sembol için bir EA

En basit yaklaşım, bir hesapta alım satımı sembol başına basit bir EA ile sınırlamaktır.  Bu durumda "Basit EA", tek seferde yalnızca tek bir talimat veren, yaygın bir yöntem olan ancak piramit ve grid alım satımı gibi stratejileri hariç tutan EA anlamına gelir.  Basit EA'lar MQL5'te MQL4'e benzer şekilde yazılabilir; belki de include\trade\trade.mqh içinde sağlanan CTrade kitaplık uyarlaması kullanılarak.

2.2 Karmaşık EA; hesap başına her bir sembol için bir EA

Bir sembol için birden fazla açık talimat gerektirebilecek piramit veya grid alım satımı gibi bir stratejisi olan karmaşık EA'lar için, EA'ya eklenen bazı nispeten basit talimat izleme kodu, stratejiyi yönetmek için gerekli olan tek şey olabilir.   Bu, yalnızca EA, aynı sembolün alım satımını yapan başka bir EA ile pozisyonları asla paylaşmayacaksa mümkün olacaktır.

2.3 Hesap başına her sembol için herhangi bir türden birden fazla EA

Bu, en karmaşık alım satım ve kodlama gerekliliğini sunar ve Sanal Talimat Yöneticisi (VOM) kitaplığının geliştirilme nedenidir.  Bu kitaplık, diğer EA'larla tamamen iletişim halinde olan sağlam EA kodunun geliştirilmesini büyük ölçüde basitleştirmek üzere tasarlanmıştır.

Bu makalenin geri kalanında Sanal Talimat Yöneticisi kitaplığı ayrıntılı olarak açıklanmaktadır.


3. Sanal Talimat Yöneticisi'nin tasarım hedefleri, avantajları ve dezavantajları 

VOM'nin dört ana tasarım hedefi vardır:

  1. Sosyallik: VOM alım satım işlevleri kullanılarak doğru şekilde yazılan EA'ların davranışı, diğer EA etkinliklerinden izole edilecektir.
  2. Sağlamlık: Hatalar, istemci-sunucu iletişimindeki kesintiler ve eksik talimat doldurma gibi anormal olayların iyi bir şekilde ele alınması.
  3. Kullanım kolaylığı: Detaylı olarak belgelenmiş ve basit alım satım işlevlerinin sağlanması
  4. Strateji Test Cihazında kullanılabilirlik

Bu hedefler şu şekilde uygulanmaktadır:

  • Sanal açık talimatların, bekleyen talimatların, zararı durdurma ve kar alma işlemlerinin kullanımı.  Bu bağlamda "Sanal", durumlarının sunucudaki pozisyonlardan bağımsız olarak istemci terminalinde muhafaza edildiği anlamına gelir.  Bu talimatlar, terminalde pozisyonlara benzer şekilde çizilen yatay çizgiler içerir.
  • Koruyucu bir sunucu tabanlı durdurma, bilgisayar veya internet bağlantısı arızası durumunda olağanüstü durum koruması için sanal durdurmalardan uzak bir mesafede tutulur

VOM yaklaşımı, bir MQL5 EA programcısının:

  • EA'ları "talimat odaklı" bir şekilde kodlamasına (yani MetaTrader 4 yaklaşımına benzer)
  • Metatrader topluluğundaki birçok kişinin "hedge işlemi" veya daha doğrusu, tek bir sembole karşı zıt yönde eşzamanlı alım satım işlemleri olarak adlandırdığı şeyi uygulamasına
  • Grid alım satımı, piramit ve para yönetimi yaklaşımları gibi diğer gelişmiş alım satım stratejilerini nispeten kolay kodlamasına
  • Durdurmaları ve bekleyen talimatları minimum durdurma düzeyinden daha tutarlı bir şekilde vermesine olanak tanır.

Ayrıca, VOM yaklaşımının bir yan etkisinin, sanal zararı durdurma ve kar alma işlemlerinin ve bekleyen talimatlarının özü itibariyle "gizli" davranışlara sahip olması, yani aracı sunucusunda görülememeleri olduğuna dikkat edilmelidir.  Bazıları tarafından stoploss düzeylerinin gizlenmesi, brokerin stop-avcılığına girmesini önlemek için gerekli görülüyor.

VOM'un dezavantajları da vardır.  Genişletilmiş bir bilgisayar veya internet bağlantısı arızası sırasında daha uzak koruyucu sunucu durdurmasına güvenme olasılığı nedeniyle hisse senedi riski artar.  Ayrıca, bekleyen sanal bir talimat, stoploss veya takeprofit sırasındaki kayma, haber olayları gibi yüksek volatilite zamanlarında sunucu tabanlı eşdeğerinden çok daha yüksek olabilir.  VOM EA'lar, kısa bir ping süresine sahip yüksek güvenilirlikli bir sanal masaüstünden aracının sunucusuna takas edilirse, bu dezavantajların etkisi minimize edilebilir.


4. Pratikte VOM – basit bir EA

Daha ileri gitmeden önce, bir VOM EA'nın nasıl yazılabileceğini göstermenin zamanı geldi.  Dağıtım paketinde sağlanan EA şablonundan başlayarak basit bir MA çapraz EA yazacağız.  MA çapraz stratejilerinde kötü şöhretli bir sorun olan, yatay piyasalarda anlamsız alım satım işlemlerini azaltma potansiyeline sahip Fraktal Hareketli Ortalama'yı kullanacağız. Bu EA'nın basit bir örnek olarak sağlandığı ve canlı alım satım işlemleri için tavsiye edilmediği vurgulanmalıdır - Griye dönük test karlıdır ancak alım satım işlemleri sayısının düşük olması sonucun istatistiksel olarak anlamlı olmadığı anlamına gelir.

EA, experts\Virtual Order Manager\VOM EA'larında saklanır.

//+------------------------------------------------------------------+
//|                                           FraMA Cross EA VOM.mq5 |
//+------------------------------------------------------------------+
#property copyright "Paul Hampton-Smith"
#property link      "http://paulsfxrandomwalk.blogspot.com"
#property version   "1.00"

// this is the only include required.  It points to the parent folder
#include "..\VirtualOrderManager.mqh"

input double   Lots=0.1;
input int      Fast_MA_Period=2;
input int      Slow_MA_Period=58;
/* 
Because the broker is 3/5 digit, stoplosses and takeprofits should be x10.  
It seems likely that all brokers offering MetaTrader 5 will be 3/5 digit brokers, 
but if this turns out to be incorrect it will not be a major task to add 
digit size detection. */
input int      Stop_Loss=5000;
input int      Take_Profit=0;
/*
We can also change the level of logging.  LOG_VERBOSE is the most prolific 
log level.  Once an EA has been fully debugged the level can be reduced to 
LOG_MAJOR.  Log files are written under the files\EAlogs folder and are 
automatically deleted after 30 days.  */
input ENUM_LOG_LEVEL Log_Level=LOG_VERBOSE;

// The following global variables will store the handles and values for the MAs 
double g_FastFrAMA[];
double g_SlowFrAMA[];
int g_hFastFrAMA;
int g_hSlowFrAMA;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   LogFile.LogLevel(Log_Level);

// Need to include this line in all EAs using CVirtualOrderManager  
   VOM.Initialise();
   Comment(VOM.m_OpenOrders.SummaryList());

   g_hFastFrAMA = iFrAMA(_Symbol,_Period,Fast_MA_Period,0,PRICE_CLOSE);
   g_hSlowFrAMA = iFrAMA(_Symbol,_Period,Slow_MA_Period,0,PRICE_CLOSE);
   ArraySetAsSeries(g_FastFrAMA,true);
   ArraySetAsSeries(g_SlowFrAMA,true);

   return(0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// Need to include this line in all EAs using CVirtualOrderManager  
   VOM.OnTick();
   Comment(VOM.m_OpenOrders.SummaryList());

// We now obtain copies of the most recent two FrAMA values in the 
// g_FastFrAMA and  g_SlowFrAMA arrays.  
   if(CopyBuffer(g_hFastFrAMA,0,Shift,2,g_FastFrAMA)!=2) || 
      CopyBuffer(g_hSlowFrAMA,0,Shift,2,g_SlowFrAMA)!=2)
     {
      Print("Not enough history loaded");
      return;
     }

// And now we detect a cross of the fast FrAMA over the slow FrAMA,
// close any opposite orders and Buy a single new one
   if(g_FastFrAMA[0]>g_SlowFrAMA[0] && g_FastFrAMA[1]<=g_SlowFrAMA[1])
     {
      VOM.CloseAllOrders(_Symbol,VIRTUAL_ORDER_TYPE_SELL);
      if(VOM.OpenedOrdersInSameBar()<1 && VOM.OpenOrders()==0)
        {
         VOM.Buy(_Symbol,Lots,Stop_Loss,Take_Profit);
        }
     }

// Opposite for Sell
   if(g_FastFrAMA[0]<g_SlowFrAMA[0] && g_FastFrAMA[1]>=g_SlowFrAMA[1])
     {
      VOM.CloseAllOrders(_Symbol,VIRTUAL_ORDER_TYPE_BUY);
      if(VOM.OpenedOrdersInSameBar()<1 && VOM.OpenOrders()==0)
        {
         VOM.Sell(_Symbol,Lots,Stop_Loss,Take_Profit);
        }
     }
  }
//+------------------------------------------------------------------+

Ve şimdi Strateji Test Cihazının piyasaya sürülmesiyle bu, geriye dönük test edilebilir; aşağıdaki Şekil 1'e bakınız:

 Şekil 1. FrAMA Çapraz EA geriye dönük testi

Şekil 1. FrAMA Çapraz EA geriye dönük testi

Günlüğe kaydetme bölümü Şekil 2'de gösterilmiştir:

 Şekil 2. Strateji testi günlüğü

Şekil 2. Strateji testi günlüğü

 

5. VOM yapısı

Aşağıdaki Şekil 4'te, çoklu VOM EA'ların nasıl yapılandırıldığı gösterilmiştir:

Şekil 3. Çoklu VOM EA'ları

Şekil 3. Çoklu VOM EA'ları

VOM'un içine bakıldığında, ana bileşenler aşağıdaki Şekil 4'te gösterilmiştir:

Şekil 4. VOM'nin iç yapısı

Şekil 4. VOM'nin iç yapısı

 Şekil 4'teki öğeler açıklanmıştır:

  • Yapılandırma - VOM, tüm ana yapılandırma öğelerini bir genel nesne Yapılandırmasında tek bir yerde saklamak için CConfig'i kullanır. Erişimi kolaylaştırmak için üye değişkenler geneldir ve hiçbir get/set işlevi sağlanmaz.
  • Genel değişkenler - Bunlar, GlobalVariableGet() gibi işlevler tarafından MQL5'te erişilen değişkenlerdir. VOM, CGlobalVariable kullanarak son Sanal  
    • Talimat bileti numarasını kaydetmek ve artırmak için genel değişkenleri kullanır.
    • Olağanüstü durum koruma sunucusu durdurmalarının sürdürülebilmesi için tüm sanal stoploss'ların bir listesini tutun
  • Açık alım satım işlemleri ve geçmiş dosyaları - Bunlar, yeniden başlatma sırasında talimat durumunun yeniden oluşturulabilmesini sağlamak için CVirtualOrderArrays tarafından depolanan kalıcı disk dosyalarıdır.  VOM'yi kullanan her EA için bu dosyalardan bir çift oluşturulur ve Files\\VOM içinde saklanır.  CVirtualOrder, VOM.m_OpenOrders dizisinde hayata başlar ve kapatıldığında veya silindiğinde VOM.m_OrderHistory dizisine aktarılır.
  • Etkinlik ve hata ayıklama günlüğü - Herhangi bir karmaşıklığın çoğu kodu, etkinliğin günlüğe kaydedilebilmesini gerektirir ve bu işlev CLog sınıfı tarafından kapsüllenir. Bu, günlük kaydının dört farklı ayrıntı ve önem düzeyinde kaydedilmesine olanak tanır ve disk alanının yönetilmesini sağlamak için eski günlük dosyalarının otomatik olarak temizlenmesini içerir.

VOM'u kullanan Expert Advisor'lar, aşağıdaki Şekil 5'te gösterildiği gibi kitaplıkla etkileşime girer:

 Şekil 5. EA'nın VOM kitaplığı ile etkileşimi

Şekil 5. EA'nın VOM kitaplığı ile etkileşimi


6. Olağanüstü durum koruması stoploss hakkında daha fazla bilgi

Sanal durdurmalar, MetaTrader 4 EA'ları arasında oldukça yaygındır.  Yalnızca istemci tarafında bir stoploss korunursa, bir alım satım işleminin çıkış düzeyi aracı için görünmezdir, strateji genellikle bazı brokerlerin stop avcılığına girdiği inancıyla uygulanır.  Durdurmanın uygulanabilmesi için bir aracı-istemci bağlantısının her zaman yerinde olması gerektiği için, sanal durdurmalar alım satım riskini büyük ölçüde artırır.

VOM, en dar sanal durdurmadan yapılandırılabilir bir mesafede sunucu tabanlı bir durdurma sağlayarak bu riski kontrol eder.  Buna, olağanüstü durum koruması stoploss (DPSL) adı verilir; zira normalde yalnızca aracı-istemci bağlantısı bir internet bağlantısının kesilmesi veya bir bilgisayar arızası durumunda olduğu gibi bir süreliğine kesintiye uğrarsa eyleme geçecektir.  Sanal talimatlar açılıp kapatıldığı ve sunucuda bir pozisyona dönüştürüldüğü için DPSL'nin doğru düzeyde bakımı, aşağıdaki sırada gösterildiği gibi biraz karmaşık olabilir.

Sanal talimat
eylemi
Açılış
fiyatı
Sunucuda Sanal SL
pozisyonu
Sunucuda
pozisyonu
Açıklama
0,1 lot AL #1 2.00000 1.99000 0,1 lot AL 1.98500 DPSL, sanal SL #1'in 50 pip altındadır
0,1 lot AL #2 2.00000 1.99500 0,2 lot AL 1.99000 Sanal talimat #2, daha sıkı bir SL'ye sahiptir; bu nedenle DPSL
sanal SL #2
'nin 50 pip altına sıkıştırılır
Kapanış #2     0,1 lot AL 1.98500 Daha gevşek DPSL'ye dön
0,1 lot SAT #3 2.00000 2.00500 hiçbiri hiçbiri Sanal talimat #1 ve #3 sunucuda
her birini iptal etti
Kapanış #1     0,1 lot SAT 2.01000 Sanal Talimat #3 açık kalır - DPSL,
şimdi sanal SL #3'ün 50 pip üzerindedir

7. Sanal Talimat Yöneticisini Test Etme

Bu boyuttaki bir projenin kapsamlı bir şekilde test edilmesi zaman alır; bu nedenle sanal talimatların grafik üzerindeki komut düğmeleriyle kolayca oluşturulmasını, değiştirilmesini, silinmesini ve kapatılmasını sağlamak için EA VirtualOrderManaerTester.mq5'i yazdım.  

Aşağıdaki Şekil 6'da, satın alınan 0,2 lotluk bir pozisyonu doğru bir şekilde gösteren sunucu durumu ile M5 penceresinde 0,1 lotluk bir sanal satın alma talimatı ve H4 penceresinde EURUSD karşısında açık olan başka bir 0,1 lotluk sanal satın alma talimatı gösterilmiştir (açıklama satırlarına bakınız). Genel pozisyon uzun olduğu için, Olağanüstü Durum Koruması Stoploss, daha sıkı 20,0 pip'lik durdurmanın altında görülebilir.

Şekil 6. Aynı yönlü iki EA

Şekil 6. Aynı yönlü iki EA

Şekil 7'de aracıda karşıt sanal talimatları olan ve hiçbir pozisyonu açık olmayan iki EA gösterilmiştir:

Şekil 7. Aracıda karşıt sanal talimatları olan ve hiçbir pozisyonu açık olmayan iki EA

Şekil 7. Aracıda karşıt sanal talimatları olan ve hiçbir pozisyonu açık olmayan iki EA


8. Tüm VOM açık talimatlarının çok basit bir görüntüsü

Her VOM EA yalnızca kendi talimatlarını görebilir; bu nedenle tüm VOM'lardan gelen açık talimatları harmanlayan çok basit bir EA yazdım.  Görüntü çok basittir; zamanla çok daha iyi bir sürüm yazılabilir; belki de her talimatta gerektiği gibi değiştirme, silme veya kapatma işlemlerini gerçekleştirmek için komut düğmeleri kullanılarak...  EA, dağıtım paketine VOM_OrderDisplay.mq5 olarak dahil edilmiştir.


9. Sonuç

Bu makaleyi yazarken, VOM kodu, MetaTrader 5'in kendisi gibi Beta'da idi; VOM kavramının popüler hale gelip gelmeyeceğini veya yalnızca MQL5 programlamasının ilginç bir parçası olarak kabul edilip edilmeyeceğini zaman gösterecek.

Bölüm 3'teki tasarım hedeflerine geri dönelim ve hangi noktaya geldiğimizi görelim.

  1. Sosyallik: VOM alım satım işlevleri kullanılarak doğru şekilde yazılan EA'ların davranışı, diğer EA etkinliklerinden izole edilecektir.
    • Sonuç - Evet, VOM yaklaşımı bu hedefe ulaştı
  2. Sağlamlık: Hatalar, istemci-sunucu iletişimindeki kesintiler ve eksik talimat doldurma gibi anormal olayların iyi bir şekilde ele alınması.
    • Sonuç - Bir miktar sağlamlık olduğu aşikar ancak gerçek alım satım durumları meydana geldiği ve analiz edilebildiği için iyileşme olabilir 
  3. Kullanım kolaylığı: Detaylı olarak belgelenmiş ve basit alım satım işlevlerinin sağlanması
    • Sonuç - Dosyaların dağıtım paketinde görüleceği gibi, bir .chm yardım dosyası dahil edilmiştir
  4. Strateji Test Cihazında kullanılabilirlik
    • Sonuç - Yakın zamanda yayınlanan strateji test cihazındaki ilk testler, VOM yaklaşımı testi önemli ölçüde yavaşlatsa da, VOM'nin geriye dönük testi doğru şekilde gerçekleştirdiğini göstermektedir.  Verimliliği artırmak için muhtemelen bazı çalışmalar yapılması gerekir.  

Gelecekte bir dizi değişiklik istenebilir

  • Herhangi bir karmaşık yazılım geliştirmede olduğu gibi, kodda kalan hatalar olması muhtemeldir.
  • Her MetaTrader 5 Beta derleme sürümü ile uyumluluğu korumak için gerekli VOM değişiklikleri olabilir.
  • VomGetLastError() ve VomErrorDescription() işlevleri
  • Bir dosyadan yapılandırma okuma yeteneği
  • Çeşitli türlerde takip eden zarar durdurucular


10. Sıkıştırılmış dağıtım paketindeki dosyalar

VOM paketi, Experts\\Virtual Order Manager klasörüne yüklenmesi gereken bir dizi .mqh dosyası olarak gelir.

  • ChartObjectsTradeLines.mqh - CEntryPriceLine, CStopLossLine, CTakeProfitLine
  • StringUtilities.mqh - ErrorDescription() gibi genel numaralandırma tanımlayıcıları
  • Log.mqh - CLog
  • GlobalVirtualStopList.mqh - CGlobalVirtualStopList
  • SimpleChartObject.mqh - CButton, CLabel ve CEdit
  • VirtualOrder.mqh - CVirtualOrder
  • GlobalVariable.mqh - CGlobalVariable
  • VirtualOrderArray.mqh - CVirtualOrderArray
  • VirtualOrderManager.mqh - CVirtualOrderManager
  • VirtualOrderManagerConfig.mqh - CConfig
  • VirtualOrderManagerEnums.mqh - VOM için tanımlanan çeşitli numaralandırmalar
  • VOM_manual.mqh - Kılavuza ait bu sayfa
  • VOM_doc.chm***

Ayrıca Experts\Virtual Order Manager\VOM EAs altında beş EA mq5 dosyası bulunur:

  • VOM_template_EA.mq5 - Kendi EA'larınızı yapmak için bunu kopyalayın ve bunları Experts\Virtual Order Manage\VOM EAs içinde saklayın
  • VirtualOrderManagerTester.mq5
  • Support_Resistance_EA_VOM.mq5
  • FrAMA_Cross_EA_VOM.mq5
  • VOM_OrderDisplay.mq5 

***VOM_doc.chm dosyasının kilidinin açılması gerekebileceğini unutmayın:


MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/88

Ekli dosyalar |
vom-doc.zip (727.63 KB)
vom2_0.zip (608.43 KB)
vom-sources.zip (40.33 KB)

Bu yazarın diğer makaleleri

Heiken-Ashi Göstergesine Dayalı Bir Alım Satım Sistemi Örneği Heiken-Ashi Göstergesine Dayalı Bir Alım Satım Sistemi Örneği
Bu makalede, alım satım işleminde bir Heiken-Ashi göstergesi kullanma sorusunu inceleyeceğiz. Bu göstergeye dayalı olarak basit bir alım satım sistemi göz önünde bulundurulur ve bir MQL5 Expert Advisor yazılır. Alım satım işlemleri, Standart sınıf kitaplığının sınıfları temel alınarak gerçekleştirilir. Bu makalede sunulan incelenen alım satım stratejisinin test sonuçları, geçmişe dayanmaktadır ve yerleşik MetaTrader 5 strateji test cihazı kullanılarak elde edilmiştir.
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.
Delphi'de MQL5 için DLL yazma kılavuzu Delphi'de MQL5 için DLL yazma kılavuzu
Makalede, Delphi programlama ortamında popüler ObjectPascal programlama dili kullanılarak bir DLL modülü oluşturma mekanizması incelenmektedir. Bu makalede sağlanan materyallerin, öncelikli olarak, dış DLL modüllerini bağlayarak MQL5'in gömülü programlama dilinin sınırlarını aşan problemleri çözmeye çalışan yeni başlayan programcıları hedeflemesi amaçlanmıştır.
MQL4'ten MQL5'e geçiş MQL4'ten MQL5'e geçiş
Bu makale MQL4 dil işlevleri için hızlı bir rehber olup programlarınızı MQL4'ten MQL5'e geçirmeniz konusunda size yardımcı olacaktır. Her MQL4 işlevi için (alım satım işlevleri hariç) açıklama ve MQL5 uygulaması sunulur, dönüştürme süresini önemli ölçüde azaltmanıza olanak tanır. Kolaylık sağlamak için MQL4 işlevleri, MQL4 Referansı'na benzer şekilde gruplara ayrılmıştır.