Alım-satım robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Twitter üzerinde bulun!
Fan sayfamıza katılın
Kodu ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Kodu beğendiniz mi? MetaTrader 5 terminalinde deneyin
Uzmanlar

"Control panel MCM" çoklu para birimi modu kontrol paneli - MetaTrader 5 için uzman

Konstantin Gruzdev
Konstantin Gruzdev
Research Engineer. Been programming since 1982. Since 2001, I write software for companies operating in the stock and currency markets. With MetaTrader been working since 2006. Since 2010 an active participant MQL5.Community.
My main creative contribution to the MQL5-coding and the community:
| Turkish English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
Görüntülemeler:
285
Derecelendirme:
(45)
Yayınlandı:
Güncellendi:
MQL5 Freelance Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git

Giriş

MQL5 programlama dilinin avantajlarından biri, göstergelerin ve danışmanların gerçek çoklu para birimi modunda çalışması için araçlar oluşturabilmesidir. Bunun kanıtı, Code Base'de paylaştığım “OnTickMarketWatch Çoklu Para Birimi Tik İşleyicisi” adlı komut dosyasıdır .

Komut dosyasında önerilen seçeneğin olduğu gibi kullanılması bir dizi sıkıntıya yol açar. Örneğin, OnChartEvent() işlevine gelen çok sayıda tik, olay kuyruğunun “tıkanmasına” neden olabilir. İşte yardım bölümünden bir uyarı:

Все возникающие события клиентский терминал складывает в общую очередь. Таким образом события обрабатываются одно за другим в порядке поступления. Исключение составляет событие NewTick. Если в очереди уже есть такое событие либо это событие находится в состоянии обработки, то новое событие NewTick в очередь не ставится.
Очередь событий имеет ограниченный размер. При переполнении очереди старые события удаляются без обработки для того, чтобы освободить место для вновь поступающих событий. Поэтому крайне рекомендуется писать эффективные обработчики событий и не рекомендуется использовать бесконечные циклы.

Buna ek olarak, bazen sadece yeni bir çubuk ortaya çıktığında işlem yapmak veya göstergeleri hesaplamak gerekebilir. Ya da çoklu para birimi işlemcisinin çalışmasını kesintiye uğratmadan, bir enstrüman için işlemi acilen devre dışı bırakmak, tabiri caizse “anında” yapmak gerekebilir. Ya da örneğin, çoklu para birimi sisteminin çalışmasını kesintiye uğratmadan belirli bir sembolün periyodunu değiştirmek gerekebilir. Ya da daha pek çok şey… Üstelik bu “daha pek çok şey”, genellikle göstergenin veya otomatik işlem sisteminin çalıştığı dış ortamdan gelen verilerdir.

İşte çoklu para birimi göstergesinin veya danışmanının çalıştığı dış ortamı ayarlamak için "Control panel MCM" (Control panel the MultiCurrency Mode) çoklu para birimi modu kontrol paneli tasarlandı.

Bu arada, bu paneli tek para birimli işlemler için de kolaylıkla kullanabilirsiniz.


Yarışmaya sunulan “Control panel MCM” sürümünün avantajları

İşlevsellik
Sunulan sürümde tüm asgari işlev seti mevcuttur; bunlar, göstergelerin ve otomatik işlem sistemlerinin çoklu para birimi modunu ayarlamak için gereklidir, yani:

  • "Piyasa Görünümü" penceresinden sembolleri işlem veya analiz amacıyla etkinleştirme/devre dışı bırakma.
  • Herhangi bir zaman diliminde ve "Piyasa Görünümü"nde seçilen sembol için tik bazında veya "yeni çubuk" olayı bazında işlem modunu ayarlama.
  • Yukarıda sayılan tüm ayarları, danışman veya göstergenin özellikler penceresini kapatmadan, durdurmadan veya bu pencereye girmeden "anında" değiştirebilme.
  • Paneli grafiğe bağımsız bir birim olarak yerleştirebilir ve ardından panel ile uyumlu uzman danışmanları ve göstergeleri grafiğe "ekleyebilirsiniz".
  • Panel, göstergelerin veya uzmanların bir bileşeni olarak etkinleştirilebilir. Panel, bunlarla birlikte yüklenecektir.
  • Bu, çoklu para birimli göstergeler ve uzman danışmanlar oluştururken yaratıcı potansiyelinizi hiçbir şekilde kısıtlamaz. Dahası, “Control panel MCM” sayesinde artık bu geliştirmenin size sunduğu özellikleri kodunuza “eklemek” zorunda kalmayacaksınız.

"Control panel MCM" menüsünü inceledikten sonra, mevcut olmasına rağmen yarışma sürümüne dahil edilmemiş ek bir hizmet görebilirsiniz.

"Control panel MCM" işlevselliğinin daha ayrıntılı açıklaması, aşağıdaki "Çoklu para birimi modu kontrol paneli ile çalışma" bölümünde yer almaktadır.

İşlevsellik kısıtlaması: Bu sürümde, panel yeniden başlatıldığında ayarlar kaydedilmez ve temel işlevselliği genişleten ek modüller de etkinleştirilmemiştir.


Panelin kurulum ve bakım kolaylığı

"Control panel MCM"i kurmak kolaydır. Bunu üç farklı yolla yapabilirsiniz:

  • Panelin “motorunu” oluşturan “iControl panel MCM” göstergesini istediğiniz grafiğe yükleyin.
  • "scControl panel MCM" komut dosyasını çalıştırın. Bu komut dosyası sadece örnek amaçlıdır ve "iControl panel MCM" göstergesini başlatır.
  • Kendi göstergenizden veya uzman danışmanınızdan panelin yüklenmesini etkinleştirin. Uzman danışman örneği "exControl panel MCM" dosyasında bulunur.

Son seçenekte, panel göstergeniz veya danışmanınızla birlikte tek bir pencerede yüklenecektir. İlk iki seçenekte ise sadece panel kurulacaktır. Daha sonra bu pencereye, "Control panel MCM" ile uyumlu olması gereken danışmanınız veya göstergeniz eklenebilir. MQL programlarınızın uyumluluğu için tek şart, programlarda standart OnChartEvent() olay işleyicisinin bulunmasıdır.


Arayüz tasarımı

Basittir. Geleneksel menü şeklinde tasarlanmıştır. Renk ve boyut ayarları, göstergenin özellikleri üzerinden yapılır. Panel ve panel düğmeleri görsel olarak şu şekildedir:

iControl panel MCM göstergesinin renk ve boyut ayarları


Günlük faaliyetlerdeki kullanım ergonomisi

Burada da her şey çok basit. Panel, yalnızca çalışmaya başlarken çoklu para birimi modülü için gerekli olayları ayarlamak amacıyla kullanılır. Pencerelerin boyutları, mümkün olduğunca grafik penceresinin boyutlarına göre ayarlanır. Menü yeterince uzunsa, menü listesinde dikey bir kaydırma çubuğu belirir. Ayarlamalar tamamlandıktan sonra panel kükleştirilebilir ve uyandırılana kadar pencerenin sol alt köşesinde "uykuda" kalır. Grafiği fazla kaplamaz ve pek rahatsızlık vermez.

Katlanmış iControl panel MCM gösterge paneli

Panelin boyutu, göstergenin "Özellikler" bölümünden yazı tipi boyutunu değiştirerek ayarlanabilir. Varsayılan olarak yazı tipi boyutu 10 olarak ayarlanmıştır:

iControl panel MCM göstergesinin yazı tipi ayarları

Örneğin, gözü kapalı glamour kızlar için panel şöyle görünebilir:

iControl panel MCM gösterge panelinin renk ayarları

Ve gizemli, her şeyi gören EMO'lar için panel, örneğin şöyle görünebilir:

iControl panel MCM gösterge panelinin renk ayarları


İşlemlerin öğrenilmesi ve ezberlenmesi kolaylığı

Panelin menüsü sezgisel olarak anlaşılır. Menü sadece birkaç düğmeden oluştuğu için, bunlarda kaybolmak zor, ezberlemek ise kolaydır.

"Control panel MCM" menü düğmesi, panelin yeteneklerini genişleten ek araçlar içerir (bu sürümde etkinleştirilmemiştir):

iControl panel MCM gösterge panelinin ek araçları

"Grafik" menü düğmesi, mevcut grafiğin sembol ve dönem ayarlarını içerir. Başka bir sembol veya dönem seçerek mevcut grafiğin parametrelerini değiştirebilirsiniz:

iControl panel MCM’deki mevcut grafiğin parametrelerini değiştirme

"Olaylar" menü düğmesi, ticaret veya analiz için sembolleri "anında" (ekspert veya göstergeyi kapatmadan) etkinleştirme/devre dışı bırakma olanağı ve seçilen sembollere göre gerekli olayların ayarlanmasını içerir. Bu olaylar, danışman veya göstergedeki OnChartEvent() işleviyle izlenebilir.

Menüde yalnızca "Piyasa Görünümü" penceresinde seçilen semboller görüntülenir. İsteğinize göre tek bir olay seçebilir veya birkaç olayı bir araya getirebilirsiniz. Bunların tümü çoklu para birimi penceresine aktarılacaktır. Artık göstergelerinizde veya uzman danışmanlarınızda, örneğin belirli zaman dilimlerinde yeni bir çubuğun ortaya çıkması gibi durumlarla ilgilenmenize gerek yoktur; bu panel bu konuyla ilgilenecek ve OnChartEvent() olay işleyicisi aracılığıyla bu olayı size bildirecektir:

MCM iControl Panel’in yeni bar paneli tanıtımı

"Yardım" menü düğmesi tamamen kişisel çıkarlar için yapılmıştır — yazarlığımı kanıtlamak ve sizi bu foruma "yönlendirmek" amacıyla:

iControl panel MCM hakkında bilgi


Çözümlerin püf noktaları ya da ilginç bir yaklaşım

Aslında, kendi "Know-How" çözümümü "OnTickMarketWatch Çoklu Para Birimli Tik İşleyicisi" başlıklı yayınımda daha önce açıklamıştım . Ancak bu panel, ek çözümler içeriyor ve daha önce önerilen komut dosyasının tüm eksikliklerini ortadan kaldırıyor:

  • "Control panel MCM", terminalde standart olarak bulunmayan bir hizmet sunar. Yani, OnChartEvent() olay işleyicisi aracılığıyla gerçek çoklu para birimi moduna olanak tanır ve bazı ayarları uzman danışmanların sınırları dışına taşıyarak, bunları “anında” hızlı bir şekilde değiştirme imkanı sunar.
  • Standart OnChartEvent() olay işleyicisi için olaylar üretmek üzere panel, çoklu para birimi uzmanı için ilgili olayları sağlayan kendi “ajanlarını” kullanır. Bu, veri işleme akışlarını paralel hale getirerek çoklu para birimi uzmanının yükünü hafifletir. Ajanlar derken, seçilen sembol üzerinde “Control panel MCM” tarafından çalıştırılan göstergeleri kastediyorum.
  • Panel, hem bağımsız bir araç olarak hem de danışmanlara veya göstergelere entegre edilerek kullanılabilir. Bu, panelin oldukça esnek bir şekilde kullanılmasını sağlar.
  • "Control panel MCM", programcıların çoklu para birimli göstergeler ve uzmanlar oluştururken yaratıcı potansiyellerini hiçbir şekilde kısıtlamaz. Dahası, "Control panel MCM" sayesinde artık bu geliştirmenin sağladığı özellikleri koda "dişeklemek" zorunda kalmayacaksınız.
  • Ekspert danışmanlar ve göstergeler için yeni ve daha basit bir mimari standardı oluşturuyor (ya da en azından bunu iddia ediyor). Tabii ki bu benim kişisel görüşüm. Vaktim olursa birkaç örnek paylaşacağım.


Etkinliklere ilişkin bilgilendirme ve yatırımcıya yönelik uyarılar

Bunun için panelde, tüm olayların ve operatörün eylemlerinin görüntülendiği bir durum çubuğu bulunmaktadır. Aslında takılabilir bir olay günlüğü modülü de mevcut, ancak sırf şaka olsun diye bu sürüme dahil etmedim.


"Control panel MCM" ile çalışmanın bazı özellikleri.

Panelin kurulumu.

Paneli kurmak için "Control panel MCM.rar" adlı arşiv dosyasını mql5 dizinine açmanız gerekir. Dosyayı açtığınızda birkaç dosya elde edeceksiniz:

  • /mql5/experts/exControl panel MCM.mq5 - şablonu kullanan bir uzman örneği;
  • /mql5/scripts/scControl panel MCM.mq5 - kontrol panelini yükleyen komut dosyası;
  • /mql5/indicators/iControl panel MCM.mq5 - "Control panel MCM" motorunu içeren gösterge;
  • /mql5/indicators/Spy Control panel MCM.mq5 - "Control panel MCM" ajanı göstergesi;
  • /mql5/include/Control panel MCM.mqh - "Control panel MCM" fonksiyon ve sınıflarının derlemesi.

Uzman, komut dosyası ve her iki göstergeyi derleyin.

Panelin yüklenmesi

Kontrol panelinin yüklenmesi çok basittir: "iControl panel MCM.mq5" göstergesini herhangi bir sembol ve zaman diliminde çalıştırın. Hepsi bu kadar. Artık panelle dilediğiniz gibi oynayabilirsiniz. "Control panel MCM" ile uyumlu danışmanları ve göstergeleri grafiğe ekleyebilirsiniz.

Benim için panelin bir uzman danışmanından yüklenmesi daha pratik bir anlam taşıyor. "exControl panel MCM" uzman danışmanını çalıştırdığımızda şunu elde ederiz:

iControl panel MCM'nin kullanım örneği

Ayrıca, örnek olarak, çoklu para birimi modunu kontrol etmek için özel olarak geliştirilmiş kendi çoklu para birimi göstergem olan MultiTrend'i ekledim. Gösterge, dört para biriminin hareketinin analizine dayalı olarak doların (pembe çizgi) hareketini gösterir.

Uzman kodunu aşağıda veriyorum:

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                            Telif Hakkı 2010, Lizar | 
//|                            https://www.mql5.com/tr/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/tr/users/Lizar"
#property version     VERSION
#property description "Uzman, çoklu para birimi modunun kontrol panelinin işleyişini gösteriyor"
#property description "\Control panel MCM\" (Control panel the MultiCurrency Mode)."
input color bg_color=Gray;        // Menü rengi 
input color font_color=Gainsboro; // Yazı tipi rengi 
input color select_color=Yellow;  // Vurgulama rengi 
input int font_size=10;         // Yazı tipi boyutu 
#include <Control panel MCM.mqh> //<--- Kontrol paneli MCM’si için çağrılan dosya 
//+------------------------------------------------------------------+ 
//| Uzman başlatma işlevi                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- MCA Kontrol Paneli'nin başlatılması.    
//--- Renk ayarlarını belirtmek zorunlu değildir (menü için varsayılan renk şeması uygulanacaktır).     
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---   
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Uzman devre dışı bırakma işlevi                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- MCA Kontrol Paneli'nin başlatılmasının kaldırılması: 
  }
//+------------------------------------------------------------------+ 
//| Standart olay işleme işlevi. Bu işlev kullanılabilir  | 
//| belgelerde açıklandığı gibi, asıl amacına uygun olarak.        | 
//|                                                                  | 
//| Kontrol Paneli ile birlikte MCM, kullanımı kolay bir araçtır        | 
//| çoklu para birimli ticaret.                                         | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // olay kimliği:                                     
                  // id-CHARTEVENT_CUSTOM==0 ise - başlatma, prev_calculated==0 anına karşılık gelir
                  // id-CHARTEVENT_CUSTOM!=0 ise - "Piyasa Görünümü" penceresindeki sembolün konumu                
                  const long&   lparam, // grafiğin süresi                
                  const double& dparam, // fiyat                
                  const string& sparam  // araç                
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                         ":  ",sparam," ",EventDescription(lparam)," price=",dparam);
     }
  }
//+------------------------------------------------------------------+ 


OnChartEvent() işlevinin giriş parametrelerinin açıklaması

Kontrol paneli, kullanıcı olaylarını oluşturur ve bunları, OnChartEvent() işlevi aracılığıyla uzman veya göstergede daha sonra işlenmek üzere kurulu grafiğe aktarır. Bu işlevin giriş parametreleri (bizim örneğimizde) şu şekilde yorumlanmalıdır:

  • id - olay kimliği:
    id-CHARTEVENT_CUSTOM !=0 ise - "Piyasa Görünümü" penceresindeki sembolün konumu;
  • lparam; - kontrol paneli ajanı tarafından gönderilen olay bayrağı. Bayraklar, Control panel MCM.mqh dosyasının başında bulunan ENUM_CHART_EVENT_SYMBOL listesine karşılık gelir; açıklamaları ise metnin biraz aşağısında yer almaktadır.
  • dparam - belirli bir zaman diliminde tik fiyatı veya yeni çubuğun açılış fiyatı.
  • sparam - olayın geldiği işlem aracının adı


Control panel MCM tarafından sağlanan olayların listesi

Kontrol paneli, ayarlara bağlı olarak lparam aracılığıyla bir sembol başına en fazla 64 farklı kullanıcı olayı iletebilir. Bu sürümde Control panel MCM aşağıdaki olayları iletebilir:

  • "Başlatma" (Initialization) olayı;
  • "Yeni tik" (tick) olayı;
  • 1 dakikalık grafikte (M1) "yeni çubuk" olayı;
  • 2 dakikalık grafikte (M2) "yeni çubuk" olayı;
  • 3 dakikalık grafikte (M3) "yeni çubuk" olayı;
  • 4 dakikalık grafikte (M4) "yeni çubuk" olayı;
  • 5 dakikalık grafikte (M5) "yeni çubuk" olayı;
  • 6 dakikalık grafikte (M6) "yeni çubuk" olayı;
  • 10 dakikalık grafikte (M10) "yeni çubuk" olayı;
  • 12 dakikalık grafikte (M12) "yeni çubuk" olayı;
  • 15 dakikalık grafikte (M15) "yeni çubuk" olayı;
  • 20 dakikalık grafikte (M20) "yeni çubuk" olayı;
  • 30 dakikalık grafikte (M30) "yeni çubuk" olayı;
  • 1 saatlik grafikte (H1) "yeni çubuk" olayı;
  • 2 saatlik grafikte (H2) "yeni çubuk" olayı;
  • 3 saatlik grafikte (H3) "yeni çubuk" olayı;
  • 4 saatlik grafikte (H4) "yeni çubuk" olayı;
  • 6 saatlik grafikte (H6) "yeni çubuk" olayı;
  • 8 saatlik grafikte (H8) "yeni çubuk" olayı;
  • 12 saatlik grafikte (H12) "yeni çubuk" olayı;
  • Günlük grafikte (D1) "yeni çubuk" olayı;
  • Haftalık grafikte (W1) "yeni çubuk" olayı;
  • Aylık grafikte (MN1) "yeni çubuk" olayı;

Parantez içinde, EventDescription() işlevi tarafından döndürülen olayın açıklaması yer almaktadır. Bu işlevin kendisi de, ENUM_CHART_EVENT_SYMBOL listesinin ardından, dahil edilen Control panel MCM.mqh dosyasının başında bulunabilir.

"Başlatma" olayının, olayın geldiği sembol üzerindeki göstergenin prev_calculated giriş parametresinin sıfırlandığı ana karşılık geldiğine dikkat edin. Dolayısıyla, çoklu para birimli göstergemizde veya uzman danışmanımızda gerekli önlemlerin alınması gerekir. Örneğin, söz konusu sembol için göstergenin yeniden hesaplanması gibi.


Olayların ayarlanması

Kontrol panelindeki ajanlardan gelecek olayların ayarlaması, "Olaylar" menü düğmesi aracılığıyla yapılır. Düğmeye tıkladığınızda, "Piyasa Görünümü" penceresinde o anda seçili olan tüm sembollerin listesi görünür. Bir sembol için olayları etkinleştirmek için, fareyle o sembolün üzerine iki kez tıklamanız gerekir. Bu işlemin keyfini tam olarak çıkarmak için yavaşça tıklamanız daha iyidir.

Eğer daha önce o simgeye ait olaylar etkinleştirilmişse (bu simge parlak bir renkle vurgulanır), simgeye bir kez tıklamanız yeterlidir. Olay listesi görüntülenir. Bir veya birkaç olay seçebilirsiniz; bunların tümü çoklu para birimi pencerenize aktarılacaktır. Değişikliklerin yürürlüğe girmesi için "Olayları Etkinleştir/Devre Dışı Bırak" düğmesine tıklamanız gerekir. Gerekli tüm semboller için bu işlemi tekrarlayın.

iControl panel MCM'deki olayların seçimi

İşte demo uzmanı ile panelin birlikte çalışması sonucunda elde ettiğimiz sonuç:

iControl panel MCM göstergesinin çalışma örneği

MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/215

YURAZ_MT5'ten_MT4_için_CSV_Geçmiş_Dosyası_Oluşturma YURAZ_MT5'ten_MT4_için_CSV_Geçmiş_Dosyası_Oluşturma

Bu komut dosyası, MetaTrader 5 veritabanından MetaTrader 4 için eksiklik içermeyen eksiksiz bir geçmiş verisini elde etmenize yardımcı olacaktır.

ChartReinit ChartReinit

Tüm göstergelerin yeniden hesaplanmasını içeren, bir düğmeyle grafiğin yeniden başlatılması ve tek bir uzman danışman aracılığıyla tüm grafikleri işleyen basit ve anlaşılır bir nesne yönelimli örnek.

Trend Denge Göstergesi TrendEQ Trend Denge Göstergesi TrendEQ

Trend Denge Göstergesi TrendEQ, momentum ve volatiliteyi birleştirerek piyasa trendlerini dinamik olarak analiz eder. TrendEQ, piyasa trendlerine karşı momentumu ölçerek trendin gücü ve yönü hakkında güvenilir bir ölçüm sağlar.

Calendar-Based Backtesting: an Event-Driven Trading EA Calendar-Based Backtesting: an Event-Driven Trading EA

Bu Komut Dosyası ve EA, kodlayıcıların MQL5 Takvimini kullanan haber tabanlı stratejilerini geriye dönük test etmelerini sağlar.