Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 29
- Derecelendirme:
- Yayınlandı:
-
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östergeler ve Uzman Danışmanlar için gerçek çoklu para birimi modunda çalışacak araçlar oluşturabilmenizdir. Code Base 'de yayınladığım "Multicurrency tick handler OnTickMarketWatch" betiği bunu doğruluyor.
Kodda önerilen varyantın doğrudan kullanılması birtakım sakıncalar yaratır. Örneğin, OnChartEvent() işlevine gelen çok sayıda tik, olay kuyruğunun "karmaşıklaşmasına" yol açabilir. İşte yardımdan bir uyarı:
Все возникающие события клиентский терминал складывает в общую очередь. Таким образом события обрабатываются одно за другим в порядке поступления. Исключение составляет событие NewTick. Если в очереди уже есть такое событие либо это событие находится в состоянии обработки, то новое событие NewTick в очередь не ставится.
Очередь событий имеет ограниченный размер. При переполнении очереди старые события удаляются без обработки для того, чтобы освободить место для вновь поступающих событий. Поэтому крайне рекомендуется писать эффективные обработчики событий и не рекомендуется использовать бесконечные циклы.
Buna ek olarak, bazen göstergeleri yalnızca yeni bir çubuk göründüğünde takas etmek veya hesaplamak gerekir. Ya da bazı enstrümanlardaki çoklu para birimi ticaretini, çalışmasını kesintiye uğratmadan acilen kapatmak, yani "anında" demek. Ya da örneğin, çoklu para birimi ticaretini kesintiye uğratmadan herhangi bir sembolün periyodunu değiştirmek. Ya da diğer birçok şey... Ve bu "diğer birçok şey" genellikle göstergenin veya Uzman Danışmanın çalıştığı dış ortamdan gelen verilerdir.
Çoklu para birimi göstergesinin veya Uzman Danışmanın çalıştığı dış ortamı ayarlamak için çoklu para birimi modunun kontrol paneli "Kontrol paneli MCM" (Çoklu Para Birimi Modu Kontrol paneli) tasarlanmıştır.
Bu arada, bu panel tek para birimi ticareti için kolayca kullanılabilir.
Yarışma için sunulan "Kontrol paneli MCM" versiyonunun avantajları
İşlevsellik
Sunulan versiyonda tüm minimum Göstergelerin ve Uzman Danışmanların çoklu para birimi modunu ayarlamak için gerekli işlevler kümesi, yani:
- Alım satım veya analiz için "Piyasa İzleme" penceresinden sembolleri bağlayın/bağlantısını kesin.
- "Piyasa İzleme "de seçilen herhangi bir dönem ve sembol için işlem modunu tiklere veya "yeni çubuk" olayına göre ayarlayın.
- Bir Uzman Danışman veya göstergenin özellikler penceresini boşaltmadan, durdurmadan veya erişmeden yukarıdaki tüm ayarları "anında" değiştirin.
- Panel, bir grafik üzerine bağımsız bir birim olarak kurulabilir ve ardından panelle uyumlu Uzman Danışmanlar ve göstergeler grafik üzerine "atılabilir".
- Panel, bileşik bir gösterge veya Uzman Danışman birimi olarak dahil edilebilir. Onlarla birlikte yüklenecektir.
- Tüm bunlar, çoklu para birimi göstergeleri ve Uzman Danışmanlar oluşturma konusundaki yaratıcılığınızı sınırlamaz. Dahası, "Kontrol paneli MCM" sayesinde bu geliştirmenin size verdiklerini kodunuza "dikmek" zorunda kalmayacaksınız.
"Kontrol paneli MCM" menüsünü inceleyerek, mümkün olan ancak rekabetçi sürüme dahil olmayan ek hizmeti görebileceksiniz.
"Kontrol paneli MCM" işlevselliğinin daha ayrıntılı açıklaması aşağıda "Çoklu para birimi modu kontrol paneli ile çalışma" bölümünde verilmiştir.
İşlevsellik sınırlaması: Bu sürüm, panel yeniden yüklenirken ayarları kaydetmez ve temel işlevselliği genişleten ek modüller içermez.
"Kontrol paneli MCM "yi kurmak kolaydır. Bu üç şekilde yapılabilir:
- Panelin "motoru" olan "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 olarak yapılmıştır, "iControl panel MCM" göstergesini çalıştırır.
- Panelin göstergenizden veya EA'nızdan yüklenmesini etkinleştirin. Uzman Danışman örneği "exControl panel MCM" dosyasındadır.
Son varyantta panel, göstergeniz veya Uzman Danışmanınız ile birlikte tek bir pencerede yüklenecektir. İlk ikisinde panelin kendisi yüklenecektir. Daha sonra Uzman Danışmanınız veya göstergeniz, "Kontrol paneli MCM" ile uyumlu olması gereken bu pencereye yüklenebilir. MQL programlarınız için tek uyumluluk gereksinimi, içlerinde standart OnChartEvent() olay işleyicisinin bulunmasıdır.
Arayüz tasarımı
Basittir. Geleneksel bir menü şeklinde yapılır. Renklerin ve boyutun ayarlanması göstergenin özellikleri aracılığıyla yapılır. Panel ve panel düğmeleri aşağıdaki gibi görünür:
Günlük faaliyetlerde iş ergonomisi
Burada da her şey çok basittir. Panelin kendisi yalnızca işin en başında çoklu para birimi sistemi için gerekli olayları ayarlamak için gereklidir. Pencere boyutları mümkünse grafik penceresinin boyutuna göre ayarlanır. Menü yeterince uzunsa, menü listesinin dikey bir kaydırma çizgisi görünür. Ayarlamadan sonra panel simge durumuna küçültülebilir ve uyandırılana kadar pencerenin sol alt köşesinde "uyur". Grafiği karıştırmaz ve fazla müdahale etmez.
Panelin boyutu, göstergenin "Özellikler" bölümündeki yazı tipi boyutu değiştirilerek değiştirilebilir. Varsayılan yazı tipi boyutu 10'dur:
Örneğin, kör cazibe blaaaandinks için panel şu şekilde görünebilir:
Ve her şeyi gören gizemli EMO'lar için panel örneğin şöyle görünebilir:
Öğrenmesi ve ezberlemesi kolay eylemler
Panel menüsü sezgiseldir. Menünün yalnızca birkaç düğmeden oluştuğu göz önüne alındığında, kafanızın karışması zordur ve ezberlemesi kolaydır.
"Kontrol paneli MCM" menü düğmesi, panel özelliklerini genişleten ek araçlar içerir (bu sürümde bağlı değildir):
"Grafik" menü düğmesi, geçerli grafiğin sembolü ve periyodu için ayarları içerir. Farklı bir sembol veya periyot seçerek mevcut grafiğin parametrelerini değiştirebilirsiniz:
"Olaylar" menü düğmesi, ticaret veya analiz için sembolleri anında (Uzman Danışmanı veya göstergeyi devre dışı bırakmadan) etkinleştirme / devre dışı bırakma ve seçilen semboller tarafından gerekli olayları ayarlama yeteneğini içerir. Bu olaylar, bir Uzman Danışman veya göstergedeki OnChartEvent() işlevi tarafından izlenebilir.
Menüde yalnızca "Piyasa İzleme" penceresinde seçilen semboller görüntülenir. Herhangi bir "tadına bakılacak" tek olayı seçebilir veya birkaç olayı bir araya getirebilirsiniz. Hepsi çoklu para birimi monitörüne beslenecektir. Artık göstergelerinizde veya Uzman Danışmanlarınızda, örneğin herhangi bir zaman diliminde yeni bir çubuğun ortaya çıkmasıyla ilgilenmenize gerek yok, bu panel bununla ilgilenecek ve OnChartEvent () olay işleyicisi aracılığıyla sizi bu olay hakkında bilgilendirecektir:
"Yardım" menü düğmesi tamamen kendi çıkarım için yapılmıştır - yazarlığımı kanıtlamak ve sizi bu foruma "yönlendirmek" anlamında göndermek için:
Know-How Çözümleri veya İlginç Yaklaşım
Aslında, "OnTickMarketWatch multi-currency tick handler" yayınlarken Know-How çözümümü açıklamıştım. Ancak bu panel ek çözümler içermekte ve daha önce önerilen senaryonun tüm dezavantajlarını hariç tutmaktadır:
- "Kontrol paneli MCM" terminalde standart olarak uygulanmayan bir hizmet sağlar. Yani, OnChartEvent() olay işleyicisi aracılığıyla gerçek çoklu para birimi modu imkanı sağlar ve bazı ayarları Uzman Danışmanların dışına taşımanıza ve bunları "anında" hızlı bir şekilde değiştirmenize olanak tanır.
- Standart OnChartEvent() olay işleyicisi için olaylar oluşturmak üzere panel, çoklu para birimi Uzman Danışmanı için ilgili olayları sağlayan kendi "aracılarını" kullanır. Bu, veri işleme terlerini paralelleştirerek çok para birimli Uzman Danışmanı "boşaltmanıza" olanak tanır. Aracılar derken, seçilen sembol üzerinde "Kontrol paneli MCM" tarafından başlatılan göstergeleri kastediyorum.
- Panel bağımsız bir araç olarak kullanılabilir veya Uzman Danışmanlara veya göstergelere gömülebilir. Bu, onu oldukça esnek bir şekilde kullanmanıza olanak tanır.
- "Kontrol paneli MCM", çoklu para birimi göstergeleri ve Uzman Danışmanlar oluştururken programcıların yaratıcı potansiyelini sınırlamaz. Dahası, "Kontrol paneli MCM" sayesinde artık bu geliştirmenin sağladığı şeyi koda "dikmek" zorunda kalmayacaksınız.
- Uzman Danışmanlar ve göstergeler için yeni, daha basit bir mimari standart yaratır (veya en azından yarattığını iddia eder). Elbette IMHO. Zamanım olursa birkaç örnek yayınlayacağım.
Etkinliklerin ve tüccar uyarılarının bilgi desteği
Bu amaçla, panelde operatörün tüm olaylarının ve eylemlerinin görüntülendiği bir durum çubuğu vardır. Aslında, olay günlüğü için bir eklenti modülü var, ancak inadına bu sürüme dahil etmedim.
"Kontrol paneli MCM" ile çalışmanın bazı özellikleri.
Panel kurulumu.
Paneli kurmak için "Kontrol paneli MCM.rar" arşiv dosyasını mql5 dizinine açmak gerekir. Paketi açarken birkaç dosya alacaksınız :
- /mql5/experts/exControl panel MCM.mq5 - şablonu kullanan bir Uzman Danışman örneği;
- /mql5/scripts/scControl panel MCM.mq5 - kontrol panelini yükleyen komut dosyası;
- /mql5/indicators/iControl panel MCM.mq5 - gösterge - "Kontrol paneli MCM" motoru;
- /mql5/indicators/Spy Kontrol paneli MCM.mq5 - gösterge - "Kontrol paneli MCM" aracı;
- /mql5/include/Control panel MCM.mqh - "Kontrol paneli MCM" fonksiyonları ve sınıfları koleksiyonu.
Uzman Danışmanı, komut dosyasını ve her iki göstergeyi derleyin.
Panelin yüklenmesi
Panelin yüklenmesi basittir: "iControl panel MCM.mq5" göstergesini herhangi bir sembol ve zaman diliminde çalıştırın. İşte bu kadar. Sonra panel ile oynayabilirsiniz. Grafiğe "Kontrol paneli MCM" ile uyumlu Uzman Danışmanlar ve göstergeler ekleyebilirsiniz.
Benim için paneli Uzman Danışmandan yüklemek daha pratik bir anlam ifade ediyor. "exControl panel MCM" Uzman Danışmanını başlatın ve alın:
Ek olarak, örneğin, çoklu para birimi modu kontrol paneli ile kullanılmak üzere özel olarak tasarlanmış kendi MultiTrend çoklu para birimi göstergemi ekledim. Gösterge, dört para biriminin hareketinin analizine dayalı olarak doların hareketini (pembe çizgi) gösterir.
Uzman Danışmanın kodu aşağıda verilmiştir:
//+------------------------------------------------------------------+ //|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 modu kontrol panelinin çalışmasını 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; // Seçim rengi input int font_size=10; // Yazı tipi boyutu #include <Control panel MCM.mqh> //<--- Kontrol paneli MCM eklenti dosyası //+------------------------------------------------------------------+ //| Uzman başlatma işlevi| //+------------------------------------------------------------------+ int OnInit() { //--- Kontrol paneli MCA başlatılıyor. //--- Renk parametrelerini belirtmek gerekli değildir (varsayılan menü renklendirmesi ayarlanacaktır). InitControlPanelMCM(bg_color,font_color,select_color,font_size); //--- return(0); } //+------------------------------------------------------------------+ //| Uzman başlangıçtan kaldırma işlevi| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { DeinitControlPanelMCM(); //<--- Kontrol paneli MCA'nın devre dışı bırakılması: } //+------------------------------------------------------------------+ //| Standart bir olay işleme işlevi. Kullanılabilir | //| dokümantasyonda açıklandığı gibi amaçlanan kullanım için. //|| //| Kontrol paneli ile birlikte MCM, aşağıdakiler için kullanışlı bir araçtır //|| çoklu para birimi ticareti.| //+------------------------------------------------------------------+ void OnChartEvent(const int id, // olay tanımlayıcısı: // if id-CHARTEVENT_CUSTOM==0 - başlatma, prev_calculated==0 anına karşılık gelir // if id-CHARTEVENT_CUSTOM!=0 - "Market Watch" penceresindeki sembol konumu const long& lparam, // grafik dönemi 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); } } //+------------------------------------------------------------------+
Giriş parametrelerinin açıklaması OnChartEvent()
Kontrol paneli, kullanıcı olayları oluşturur ve bu olayları OnChartEvent() işlevini kullanarak Uzman Danışman veya göstergede daha fazla işlemek için bunları kurulu grafikte çevirir Bu işlevin giriş parametreleri (bizim durumumuzda) aşağıdaki gibi yorumlanmalıdır:
- id - olay tanımlayıcısı:
if id-CHARTEVENT_CUSTOM !=0 - "Piyasa İzleme" penceresindeki sembol konumu; - lparam; - panel aracısından alınan olayın bayrağı. Bayraklar, Kontrol paneli MCM.mqh dosyasının başında bulunabilen ENUM_CHART_EVENT_SYMBOL numaralandırmasına karşılık gelir ve açıklama metnin biraz daha aşağısındadır.
- dparam - tik fiyatı veya belirli bir zaman diliminde yeni bir çubuk açma fiyatı.
- sparam - olayın gerçekleştiği alım satım aracının adı
Sağlanan olayların listesi Kontrol paneli MCM
Kontrol paneli, lparam aracılığıyla, ayarlara bağlı olarak, sembol başına 64 adede kadar farklı özel olay iletebilir. Kontrol panelinin bu versiyonunda MCM aşağıdaki olayları iletebilir:
- Başlatma olayı (Initialisation);
- Bir "yeni tik" olayı;
- 1 dakikalık grafikte "yeni çubuk" olayı (M1);
- 2 dakikalık grafikte "yeni çubuk" olayı (M2);
- 3 dakikalık grafikte "yeni çubuk" olayı (M3);
- Olay "yeni çubuk" 4 dakikalık grafikte (M4);
- 5 dakikalık grafikte Yeni Çubuk olayı (M5);
- 6 dakikalık grafikte Yeni Çubuk olayı (M6);
- 10 dakikalık grafikte Yeni Çubuk olayı (M10);
- 12 dakikalık grafikte bir "yeni çubuk" olayı (M12);
- 15 dakikalık grafikte Yeni Çubuk olayı (M15);
- 20 dakikalık grafikte Yeni Çubuk olayı (M20);
- 30 dakikalık grafikte Yeni Çubuk olayı (M30);
- 1 saatlik grafikte Yeni Çubuk olayı (H1);
- 2 saatlik grafikte Yeni Çubuk olayı (H2);
- 3 saatlik grafikte yeni çubuk olayı (H3);
- 4 saatlik grafikte yeni çubuk olayı (H4);
- 6 saatlik grafikte yeni çubuk olayı (H6);
- 8 saatlik grafikte yeni çubuk olayı (H8);
- 12 saatlik grafikte Yeni Çubuk olayı (H12);
- Günlük grafikte Yeni Çubuk olayı (D1);
- Haftalık grafikte Yeni Çubuk olayı (W1);
- Aylık grafikte yeni Çubuk olayı (MN1);
EventDescription() fonksiyonu tarafından döndürülen olayın açıklaması parantez içinde verilmiştir. Fonksiyonun kendisi de Kontrol paneli MCM.mqh dosyasının başında ENUM_CHART_EVENT_SYMBOL numaralandırmasından sonra bulunabilir.
"Başlatma" olayının, göstergenin prev_calculated giriş parametresinin olayın geldiği sembol üzerinde sıfırlandığı ana karşılık geldiğini unutmayın. Bu nedenle, çoklu para birimi göstergemizde veya Uzman Danışmanımızda uygun önlemleri almak gerekir. Örneğin, göstergeyi bu sembolle yeniden hesaplayın.
Etkinliklerin ayarlanması
Kontrol paneli aracılarından alınacak olayların ayarlanması "Olaylar" menü düğmesi aracılığıyla yapılır. "Piyasa İzleme" penceresinde o anda seçili olan tüm sembollerin bir listesi, düğmeye basıldığında görünecektir. Olayları sembole göre açmak için üzerine farenizle çift tıklamanız gerekir. Eylemin tüm zevkini hissetmek için bunu yavaşça yapmak daha iyidir.
Olayları bir sembolle zaten etkinleştirdiyseniz (bu sembol parlak bir renkle vurgulanır), üzerine bir kez tıklamanız yeterlidir. Olayların bir listesi görünecektir. Bir veya daha fazla olay seçebilirsiniz, hepsi çoklu para biriminiz tarafından alınacaktır. Değişikliklerin etkili olması için "Olayları Etkinleştir/Devre Dışı Bırak" düğmesine basmalısınız. Ve gerekli tüm semboller için böyle devam eder.
İşte Demo Uzman Danışmanının panel ile birlikte çalışmasının bir sonucu olarak sahip olduğumuz şey:
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/215

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

Tüm göstergelerin yeniden hesaplanmasıyla bir grafiğin düğmeyle yeniden başlatılmasının yanı sıra, bir Uzman Danışmandan tüm grafiklerin işlenmesine yönelik basit ve şeffaf bir nesne yönelimli örnek.

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.

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