English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
İşte Karışınızda Yeni MetaTrader 5 ve MQL5

İşte Karışınızda Yeni MetaTrader 5 ve MQL5

MetaTrader 5Örnekler | 9 Aralık 2021, 10:01
262 0
Yuriy Zaytsev
Yuriy Zaytsev

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.

Ş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

Yeni Raylara Adım Atın: MQL5'te Özel Göstergeler Yeni Raylara Adım Atın: MQL5'te Özel Göstergeler
Yeni terminalin ve dilin tüm yeni olanaklarını ve özelliklerini listelemeyeceğim. Bunlar sayısızdır ve bazı yenilikler ayrı bir makalede tartışılmaya değerdir. Ayrıca burada nesne yönelimli programlama ile yazılmış bir kod yoktur, geliştiriciler için ek avantajlar olarak bir bağlamda basitçe bahsedilemeyecek kadar ciddi bir konudur. Bu makalede, MQL4'e kıyasla göstergeleri, yapılarını, çizimlerini, türlerini ve programlama ayrıntılarını ele alacağız. Umarım bu makale hem yeni başlayanlar hem de deneyimli geliştiriciler için faydalı olacaktır, belki bazıları yeni bir şeyler bulacaktır.
Ticaret için kombinatorik ve olasılık teorisi (Bölüm II): Evrensel fraktal Ticaret için kombinatorik ve olasılık teorisi (Bölüm II): Evrensel fraktal
Bu makalede fraktalları incelemeye devam edeceğiz ve tüm materyali özetlemeye özellikle dikkat edeceğiz. Bunu yapmak için, daha önceki tüm gelişmeleri, ticarette pratik uygulama için uygun ve anlaşılabilir olacak kompakt bir forma getirmeye çalışacağım.
MQL5: Kendi Göstergenizi Oluşturma MQL5: Kendi Göstergenizi Oluşturma
Bir gösterge nedir? Ekranda uygun bir şekilde görüntülenmesini istediğimiz bir dizi hesaplanmış değerdir. Değer setleri programlarda bir dizi olarak gösterilir. Böylelikle, bir göstergenin oluşturulması, bazı dizileri (fiyat dizileri) idare eden ve diğer dizilere (gösterge değerleri) devretmenin sonuçlarını kaydeden bir algoritmanın yazılması anlamına gelir. Yazar, Doğru Güç Endeksinin oluşturulmasını açıklarken MQL5’te göstergelerin nasıl yazılacağını gösterir.
Ticaret için kombinatorik ve olasılık teorisi (Bölüm III): İlk matematiksel model Ticaret için kombinatorik ve olasılık teorisi (Bölüm III): İlk matematiksel model
Daha önce tartışılan konunun mantıksal bir devamı, ticaret görevleri için çok işlevli matematiksel modellerin geliştirilmesi olacaktır. Bu makalede, fraktalları tanımlayan ilk matematiksel modelin geliştirilmesiyle ilgili tüm süreci sıfırdan anlatacağım. Bu model önemli bir yapı taşı haline gelmeli, çok işlevli ve evrensel olmalıdır. Bu fikrin daha da geliştirilmesi için teorik temelimizi oluşturacaktır.