İşte Karışınızda Yeni MetaTrader 5 ve MQL5
Bazı özelliklerin sadece kısa bir açıklamasını yapacağım.
Şekil 1. Bu Photoshop değil, bu MQL5.
Beni ve başkalarını ilgilendiren neredeyse her şey MQL5 ve MT5’te çok üst düzeyde uygulanmış.
MQL5’teki temel değişiklik, nesne odaklı programlamanın görünümü. OOP konusuna derinlemesine girmeyeceğim, sadece deneyimli programcıların daha fazla imkana sahip olduğunu söylemek yeterli. MQL4’ü seven ve OOP’yi bilmeyen kişiler için geliştiriciler, OOP olmadan MQL4 tarzını kullanarak MQL5’te yazma imkanını tanıdılar. Aradaki fark, tekrar öğrenilmesi gereken işlevselliktir.
Basit bir örnek vereyim: Satış Fiyatı ve Alış Fiyatı değişkenleri artık yok. Alış fiyatı değerlerini almak için aşağıdaki fonksiyon çağrılmalıdır:
SymbolInfoDouble(Symbol(),SYMBOL_BID);
Sık kullanılan Low[0] veya iLow ( Symbol(), PERIOD_D1, 0 ) öğesi yoktur ama bunları kolayca yeniden yapılandırabilirsiniz. Geçmiş verilerle birlikte çalışan yeni fonksiyonlar bir noktadan diğerine, belirli bir çubuktan diğerine veya seçilen zamandan başka bir seçilen zamana kadar olan geçmiş veriyi bellekten okuma imkanı tanır. Önceden veri serisi okunduğunda görünen tüm aralık belleğe yükleniyordu. İhtiyacınız olsa da olmasa da bunlar okunuyordu ve M1’i okumanız gerekiyorsa 1999’dan (mevcut geçmiş varsa) geçerli tarihe, saate ve dakikaya kadar okunuyordu.
Şimdi sadece gereken aralık okunabilir ve bu sayede ciddi zaman ve bellek tasarrufu yapılabilir.
MqlRates rates_arrayG[]; Int Bar=30; // read only 30 bars stating from the zero one iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);
Bu özellik hem zaman hem de bellek tasarrufu sağlıyor.
İşlevsellikte böyle bir değişiklik, korkutucu değil. Sadece yeni fonksiyonları ve analogları öğrenmek için zamana ihtiyacımız var.
MQL’den beklediğim bazı işlevsel yenilikler şunlar:
- OnTimer() - Zamanlayıcı olaylarını işleme fonksiyonu (artık gelen tiklerden bağımsız olarak belirli bir dönemde çalışmasını sağlamak için Uzman Danışman döngüsü gerekmez);
- OnTrade() - Alım satım etkinliklerini işleme fonksiyonudur: Pozisyon açma, kapatma veya hacim değişikliği;
- OnChartEvent() - Fare veya klavye ile olayların işlenmesi
Biraz bunların üzerinde duralım.
Zamanlayıcı OnInit ön ayar fonksiyonunda önceden başlatılırsa (EA başlatma olaylarının işlemcisi) OnTimer() fonksiyonu çağrılır.
Örnek:
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { EventSetTimer(1); //each second we'll refer to OnTimer() } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit() { EventKillTimer(); // canceling of timer reference must be called at exit } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTimer() { MqlDateTime str1; TimeGMT(str1); // new function to get GMT time Comment(str1.hour ,str1.min ,str1.sec ,str1.day ,str1.mon ,str1.year ,str1.day_of_year ,OrdersTotal() ,PositionsTotal() ); }
Bu yüzden kontrol, yalnızca daha önce olduğu için tik alınmasında değil, ayrıca gerçek zamanlı olarak yönetilebilir programların yazılmasını mümkün kılan zamanlayıcıdan da elde edilebilir. Bu imkan sayesinde daha ayrıntılı sistemler oluşturulabilir.
OnTrade() fonksiyonunu sevdim. Bu fonksiyon, şu alım satım olaylarından herhangi biri tetiklendiğinde çağrılır: emir verme, StopLoss veya TakeProfit etkinleştirilmesi, StopLoss veya TakeProfit seviyelerinde değişme, beklemede olan bir emrin verilmesi/silinmesi.
Artık alım satım operasyonlarıyla bağlantılı olayları izlemek çok daha kolay. Şimdi tiklerde veya çubuklarda emirlerin durumunu kontrol eden döngülere ihtiyaç kalmadı. Bu tür döngüler MQL4’te kullanılır ve optimizasyonda çok önemli olan programın performansını ciddi oranda düşürür.
OnChartEvent() fonksiyonuna bakalım. Çeşitli etkinlikler için fonksiyon çağrısı yapılır. Her birini test etmedim ama liste etkileyici:
- CHARTEVENT_KEYDOWN - tuşa basma olayı;
- CHARTEVENT_OBJECT_CLICK - çizelge üzerindeki grafiksel nesnenin fare ile tıklanması olayı;
- CHARTEVENT_OBJECT_DRAG - fare ile yapılan grafiksel nesnenin taşınması olayı;
- CHARTEVENT_OBJECT_ENDEDIT - metin düzenlemesinin bitişi olayı
- CHARTEVENT_CUSTOM+n - özel bir olayın tanımlayıcısı
- CHARTEVENT_CUSTOM_LAST - son olay.
Geliştiricilerin söz vermiş olduğu gibi alım satımı ve grafikleri yeni bir fonksiyon düzeyinde yönetme imkanı.
Yeni grafik nesneleri, düğmeler, giriş alanı eklendi. Grafik yönetimi harika olmuş, dosyalardan resimler bile yerleştirilebilir, bu seçenek özel tasarımı sevenler için pek çok imkan tanıyor. Bu Photoshop değil, MQL5 ve MetaTrader 5’in imkanlarının sonucudur. Yeni özellikler arasında kendi düğmelerinizi oluşturmak ve giriş alanları eklemek yer alıyor, bu örneğin tüm açık emirleri kapatma düğmesi veya ön ayarlı durdurma ve alış parametreleri ile hızlı Alış ve Satış düğmesi olabilir.
Şekil 2. Grafik nesneleri, bilgi paneli oluşturulmasını sağlar.
Hoş olmayan tek bir şey var: Nesneler, göstergelerden oluşturulamıyor. Bu, göstergelerin performansını hızlandırmak için özellikle yapılmıştı. İyi haber ise bunu anlıyorlar ve muhtemelen tek grafikte birden fazla Uzman Danışmanı başlatma imkanını uygulayacaklar. Böylece EA göstergelerini nesneler ve alım satım olmadan oluşturabileceğiz. Bu tür göstergeler şimdi oluşturulabilir ve göstergeler gibi çalışacaklardır. Şimdi görev, bir grafikte bir alım satım EA’sının başlatılması, ikinci grafikte EA’nın, nesneleri oluşturması ve bunların arasındaki değişimin uygulanması ile çözülmekte.
Örneğin MQL4’ten MQL5’e birkaç saat içinde çığır açan göstergemi dönüştürmeyi başardım. Zamanımı en çok fonksiyonu öğrenme ve hata ayıklama aldı. MQL5’te kod, daha kısa oldu.
Terminalin kendisi için ise zaman dilimlerinin sayısı beni etkiledi. Bana göre fazlası bile var. Yine de dakikalık zaman dilimlerinin çokluğu bazı yatırımcılar için faydalı olabilir. Şimdi, serbestçe ayarlanan zaman diliminin oluşturulması için tek bir adım var. Artık tüm veriler sadece dakikalık zaman dilimi olarak saklanıyor, bu yüzden farklı zaman dilimlerinin senkronizasyonu konusunda hiç sıkıntı yaşanmıyor. Bu, önemli bir teknolojik çözümdür.
Şimdi GEÇMİŞ kataloğunda farklı zaman dilimleri için dosyalar yok
Şekil 3. Tüm geçmiş, tek bir dosyada saklanıyor.
Başka bir memnun edici yenilik de artık günlükleri temizleyebiliyor olmamızdır.
Şekil 4. EA Günlüğünü temizlemek için tek düğme kullanın ve gereksiz mesajların hepsini silin
Bu MetaTrader 5 ile ilgili sadece kısa bir inceleme. Sistemin yeni özelliklerini bu kadar kısa sürede açıklayamam, test süreci 09.09.2009’da başladı. Bu sembolik bir tarihtir ve şanslı sayı olacağına eminim. MetaTrader 5 terminalinin ve MQL5’in beta sürümünü beş gün önce aldım. Tüm özelliklerini deneme şansım olmadı ama şimdiden etkilendim.
MetaQuotes’un sihirbazları inanılmaz bir ürün oluşturmuşlar. Ben 25 yıllık tecrübeye sahip bir geliştiriciyim, çoğu projenin başlangıcını gördüm ve elbette bunu rahatça söyleyebilirim!
Saygılarımla,
Yuriy Zaytsev
Skype: yurazyuraz
yzh@mail.ru
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal makale: https://www.mql5.com/ru/articles/1
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz