Fan sayfamıza katılın
- Görüntülemeler:
- 285
- Derecelendirme:
- Yayınlandı:
- Güncellendi:
-
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.
"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:

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.

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:

Örneğin, gözü kapalı glamour kızlar için panel şöyle görünebilir:
Ve gizemli, her şeyi gören EMO'lar için panel, örneğin şöyle görünebilir:

İş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):

"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:

"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:

"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:

Çö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:

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.

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

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
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
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, 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
Bu Komut Dosyası ve EA, kodlayıcıların MQL5 Takvimini kullanan haber tabanlı stratejilerini geriye dönük test etmelerini sağlar.
