MQL5 Sihirbazı: Yeni Sürüm
MetaTrader 5 terminali gelişmeye ve yeni özellikler kazanmaya devam ediyor. Yeni MetaTrader 5 build 439, daha esnek alım satım kurallarına dayalı Uzman Danışmanlar oluşturabilmenizi sağlayan güncellenmiş MQL5 Sihirbazını içerir. Bu makalede, MQL5 Sihirbazının sunduğu yeni imkanları anlatıyoruz ve bu uygulama kullanılarak oluşturulan Uzman Danışman mimarisindeki değişiklikleri açıklıyoruz.
Arka plan
MQL5 Sihirbazı, asıl olarak yatırımcıların MQL5'te kolayca programlar oluşturmasına yardımcı olmaya yarayan kullanışlı bir araç olarak tasarlanmıştır. Daha MQL5 Sihirbazı'nın ilk sürümünde kaynak kodunu MQL5'te alarak, bir dizi basit modül şeklinde hızlıca kullanıma hazır bir Uzman Danışman oluşturabiliyordunuz. Önemli bir nokta da, MQL5 dilini bilmenize gerek olmamasıdır. Tek ihtiyacınız olan şey MQL5 Sihirbazında Kendi Uzman Danışmanınızı Oluşturun makalesini okumaktır.
Sihirbaz tarafından oluşturulan bir Uzman Danışman üç modül içerir:
Her Uzman Danışman modülü belirli bir sınıfa dayalıdır ve Uzman Danışmanınızın davranışını değiştirmeye yönelik birçok fırsat sunar.
Standart Kitaplık, çeşitli para yönetimi mekanizmalarını, açık pozisyon bakımını ve alım satım sinyallerinin oluşturulmasını uygulamak için işlevsel olarak eksiksiz, kullanıma hazır bir dizi sınıf içerir.
Bu yaklaşım, kanıtlanmış ve iyi işleyen modüllere dayalı alım satım robotları oluşturmaya olanak tanır. Sadece birkaç adımdan geçmeniz ve gerekli parametreleri belirtmeniz yeterlidir. Ancak deneyimlerimiz, özel sınıflar yazma ilkelerini açıklayan iyi örneklerin bile acemi MQL5 programcılarına her zaman yardımcı olamayacağını göstermektedir.
MQL5 Sihirbazı'nın önceki sürümünün bir başka dezavantajı, biraz değiştirilmiş yeni bir alım satım algoritması uygulamak için yeni bir sınıf yazmanızı gerektirmesidir.
Bu deneyim ve kullanıcılardan alınan yorumlar üzerine MetaQuotes, MQL5 Sihirbazı'nın daha da fazla işleve sahip gelişmiş bir sürümünü oluşturmaya karar verdi.
Alım Satım Sinyalleri Oluşturmada Yeni Bir Konsept
MQL5 Sihirbazı'nın önceki sürümündeki temel engel, kişinin kendi alım sinyallerini oluştururken ortaya çıkabilecek sorunlarla ilgiliydi. Bu nedenle, Sihirbazın yeni sürümü geliştirilirken, basit ilkelere dayalı olarak, birleştirilmiş alım satım sinyallerinin oluşturulmasının basitleştirilmesine odaklanılmıştır.
Bu amaçla, alım satım sinyali oluşturucunun (bundan böyle Sinyal olarak anılacaktır) temel sınıfında aşağıdaki değişiklikler yapılmıştır:
- Herhangi bir Sinyal (CExpertSignal sınıfından türetilmiştir), olası fiyat hareketi hakkında görüşlerini bildiren "danışmanların" tahminlerine dayanır. Bu danışmanlar da CExpertSignal sınıfından türetilmiştir ve bu nedenle kendi danışmanlarına sahip olabilirler. Her Sinyaldeki danışman sayısı 64'e kadar çıkabilir.
- Fiyat hareketi yönü üzerinde "oylama" uygulayan CExpertSignal sınıfına yeni yöntemler eklenmiştir. Ek olarak, böyle bir "oylamaya" katılım için yeni bir mekanizma da bulunur.
- Karar verme esnekliğini artırmak için, karar verme sürecine dahil olan her bir Sinyal ("danışmanların" da birer sinyal olduğunu unutmayın), artık kendi (mevcut olandan farklı) piyasa araçlarından ve/veya kendi zaman diliminden bilgi alabilir.
Böylece, şu veya bu yönde piyasaya girme kararı artık "toplu olarak", yani her danışmanın "düşünülmüş görüşü" dikkate alınarak verilebilir.
Sinyal, (bu Sinyale özel) gömülü piyasa modeli algılama algoritmalarına bağlı olarak fiyat hareketinin yönünü "oylar". Örneğin stokastik tabanlı bir Sinyal, fiyattaki bir geri dönüşü, sapmayı vs. belirleyebilir.
Standart Kitaplık halihazırda çeşitli göstergelere dayalı olarak kullanıma hazır yirmi adet Sinyal içermektedir.
Alım Satım Kararları Vermek İçin Yeni Bir Mekanizma
Sinyal tarafından alım satım kararları alma mekanizması aşağıdaki temel hükümler şeklinde sunulabilir:
- Her Sinyalin kendi piyasa kalıpları vardır (bazı fiyat ve gösterge değerleri kombinasyonu).
- Her piyasa modelinin 1 ile 100 arasında bir ağırlık değeri vardır. Değer ne kadar yüksek olursa, model o kadar güçlü olur.
- Her model, belirli bir yönde bir fiyat hareketi tahmini oluşturur.
- Uygulanan modellerden alınan tahminlerin karşılaştırılması sonucunda, en güçlü olanı seçilir ve işaretin tahmin edilen hareketin yönünü belirlediği, -100 ila +100 aralığında bir tahmin verilir (negatif - fiyat düşecek, pozitif - fiyat yükselecek). Mutlak bir değer, elde edilen en iyi modelin gücüne karşılık gelir. Bu sonuç genel oylamaya gönderilir.
- Modül içindeki her danışmanın tahmini, ayarlarında ("Ağırlık") belirtilen ve 0'dan 1.0'a kadar olan ağırlık faktörü ile oylamaya gider.
- Oylamanın sunucu, -100 ile 100 arasında değişen bir sayıdır. Bu sayının işareti tahmini hareketin yönünü belirtirken, mutlak değeri ise sinyal gücünü temsil eder. Modülün tüm danışmanlarının ağırlıklı tahminlerinin aritmetik ortalaması olarak hesaplanır. Bu sonuç, Sinyalin bir tahminidir ve mutlak değer, Sinyalin ne kadar güçlü olduğunun bir göstergesidir.
Oluşturulan her bir Uzman Danışmanın ayarları, bir pozisyonu açma veya kapatma kararı verme eşiği (ThresholdOpen ve ThresholdClose) olmak üzere 0 ile 100 arasında bir değere sahip olabilen iki parametre içerir. Bir Sinyalin gücü eşik değerini aşarsa, bir alım satım operasyonu yürütmeye karar verilir.
MQL5 Sihirbazı kullanılarak oluşturulan Uzman Danışman, üç bölümden oluşur; bunlardan en önemlisi alım satım sinyalleri üretme modülünü içeren baş öğesidir. Sinyal modülündeki süreçler aşağıdaki gibi gösterilebilir:
Şekil, Sinyal modülünün bir piyasa modeli bloğu ve bir danışman bloğu olmak üzere iki blok içerebileceğini göstermektedir. Model bloğu, her modelden tahminler üretir, ardından bunlardan en güçlüsü seçilir. Danışmanların tahminleri (diğer Sinyaller) karşılık gelen ağırlıkla çarpılır ve aritmetik ortalama tahminini üretmek için oylama sırasında elde edilen değerler toplanır. Bu durumda Sinyal modülü mevcut durum için -36.6 = (-100+60-54)/3 üretmiştir. Bu, 36,6 mutlak gücüne sahip Satış tahmini anlamına gelir.
İki basit örnek üzerinden karar verme mekanizmasını düşünün.
ThresholdOpen=20 ve ThresholdClose=90 ile bir Uzman Danışman olduğunu varsayalım. 0.4 ağırlıklı MA ve 0.8 ağırlıklı Stokastik tabanlı sinyal modülleri bir alım satım kararının alınmasında rol oynar. Elde edilen alım satım sinyallerinin iki seçeneğini göz önünde bulundurun:
- Seçenek 1.
Fiyat, yükselen bir MA göstergesini yukarı yönde kesmiştir. Bu, MA modülünde yerleşik olan fiyat artışını işaret eden piyasa modellerinden birine karşılık gelir. Anlamlılık değeri 100'dür. Bu sırada Stochastic osilatör de aşağı dönmüş olsun ve fiyat serisi ile bir ayrışma göstersin. Bu, Stokastik modülde uygulanan fiyat düşüşüne işaret eden bir modeldir. Bu modelin anlamlılık değeri 80'dir.
Nihai oylamanın sonucunu hesaplayalım. MA modülünden elde edilen ağırlıklı tahmin, 0.4 * 100 = 40 şeklinde hesaplanır. Stokastik modülün ağırlıklı tahmini 0,8 * (-80) = -64 olarak hesaplanmıştır. Nihai tahmin, iki ağırlıklı tahminin aritmetik ortalaması olarak hesaplanır: (40 - 64)/2 = -12. Bu, 12 koşullu gücüyle satış yapmak için bir sinyaldir. 20 eşik değerine ulaşılamadı. Buna göre alım satım işlemi yapılmayacaktır.
- Seçenek 2.
Fiyat, yükselen bir MA göstergesini aşağı yönde kesmiştir. Bu, MA modülünde yerleşik olan fiyat artışını işaret eden piyasa modellerinden birine karşılık gelir. Anlamlılık değeri 10'dur. Bu sırada Stochastic osilatör de aşağı dönmüş olsun ve fiyat serisi ile bir ayrışma göstersin. Bu, Stokastik modülde uygulanan fiyat düşüşüne işaret eden bir modeldir. Bu modelin anlamlılık değeri 80'dir.
Nihai oylamanın sonucunu hesaplayalım. MA modülünden elde edilen ağırlıklı tahmin 0,4 * 10 = 4 olarak hesaplanır. Stokastik modülün ağırlıklı tahmini 0,8 * (-80) = -64 olarak hesaplanmıştır. Nihai tahmin, iki ağırlıklı tahminin aritmetik ortalaması olarak hesaplanır: (4 - 64)/2 = -30. Bu, 30 koşullu gücüyle satış yapmak için bir sinyaldir. 20 eşik değerine ulaşılmıştır. Buna göre sonuç, bir kısa pozisyon açma sinyalidir.
Şekil 1. Grafikteki piyasa modellerine bir örnek
Şekil, örneklerde açıklanan piyasa modellerini göstermektedir:
a) Fiyatın sapması ve Stokastik osilatör 1. ve 2. seçeneklerde kullanılır.
b) Fiyat MA göstergesini aşağıdan yukarıya doğru kesmiştir - Seçenek 1'de kullanılır.
c) Fiyat MA'yı yukarıdan aşağıya doğru kesmiştir - Seçenek 2'de kullanılır.
Uzman Danışmanda Sinyalleri Birleştirme
Kendi Uzman Danışmanımızı oluşturmak için öncelikle hangi enstrümanda ve hangi zaman diliminde alım satım yapacağımıza karar vermemiz gerekiyor. İkinci olarak, alım satım için kullanacağımız göstergelere göre Sinyalleri seçmeliyiz.
Örneğimiz için aşağıdaki koşullara sahip olacağız:
- İşlem gören sembol EURUSD'dir. Zaman dilimimiz ise M10.
- Kullanılan Sinyaller:
- EMA('EURUSD',M10,31) - üstel hareketli ortalamaya dayalı sinyaller;
- Stokastik('EURUSD',M10,8,3,3) - stokastik osilatöre dayalı sinyaller;
- EMA('EURUSD',H1,24) - farklı bir zaman diliminden alınan üstel hareketli ortalamaya dayalı sinyaller;
- Stokastik('EURJPY',H4,8,3,3) - farklı bir sembol ve zaman diliminden alınan stokastik osilatöre dayalı sinyaller;
IntradayTimeFilter - Günün saatine ve haftanın gününe göre çalışan bir filtre.
Yeni MQL5 Sihirbazında Bir Alım Satım Robotu Oluşturma
Uzman Danışmanın kaynak kodu, MetaEditor'da MQL5 Sihirbazı kullanılarak oluşturulur.
Ticaret stratejilerinin temel sınıfları, terminal_data_folder\MQL5\Include\Expert\ içinde bulunur. Alım satım sinyalleri sınıfları, açık pozisyon takip etme sınıfları ve para ve risk yönetimi sınıflarının kullanıma hazır algoritmaları Sinyal, Takip ve Para alt klasörlerinde yer almaktadır. MQL5 Sihirbazı bu klasörlerdeki dosyaları ayrıştırır ve bunları Uzman Danışman kodunu oluşturmak için kullanır.
Şekil 2. MQL5 Sihirbazı için Temel Sınıflar
MQL5 Sihirbazını başlatmak için araç çubuğunda "Yeni"ye tıklamanız veya "Dosya" menüsünden "Yeni"yi seçmeniz (veya Ctrl+N tuşlarına basmanız) gerekir:
Şekil 3. MQL5 Sihirbazını Başlatma
Ardından oluşturmak istediğiniz programın türünü seçin. Biz "Uzman Danışman (oluştur)" seçeneğini seçeceğiz:
Şekil 4. Program türünün seçilmesi
Adım 1. Uzman Danışmanın Genel Özellikleri
Ardından, Uzman Danışmanın genel özelliklerini ayarlayabileceğiniz iletişim kutusu açılır:
Şekil 5. Bir Uzman Danışmanın genel özellikleri
"Ad", "Yazar" ve "Bağlantı" alanlarında (sırasıyla) Uzman Danışmanınızın adını, yazarın adını ve web sitenizin bağlantısını belirtin.
Uzman Danışman ayrıca aşağıdaki girdi parametrelerine sahiptir:
- Sembol (dizgi tipi) - Uzman Danışmanın üzerinde çalıştığı sembol;
- TimeFrame (ENUM_TIMEFRAMES tipi) - Uzman Danışmanın üzerinde çalıştığı zaman çerçevesidir.
Varsayılan olarak, her iki seçenek de "geçerli" olarak ayarlanmıştır (yani, Uzman Danışman herhangi bir sembolde/zaman diliminde sınanacak ve alım satım yapacaktır).
Ama her zaman bu kadar iyi mi? Örneğin, yanlışlıkla EURUSD'de (ayrıca, bir çapraz çiftin onayını kullanır) gün içi alım satım için ayarlanmış bir Uzman Danışmanı haftalık AUDNZD tablosunda çalıştırdınız diyelim. İyi bir şey değil gibi duruyor.
Bu nedenle, gerekli parametreleri ayarlamak daha iyi olacaktır. Bir sonraki adımda, Uzman Danışmanın alım satım yapacağı alım satım sinyallerinin türünü seçin. Sembol seçimine gitmek için "İleri" ye tıklayın.
Adım 2. Alım Satım Sinyallerinin Modüllerini Seçmek
Açılış ve kapanış pozisyonlarının algoritması, alım satım sinyallerinin modülleri tarafından belirlenir. Alım satım sinyalleri modülleri, pozisyon açma/kapama/ters çevirme kurallarını içerir.
Bir Uzman Danışman, aynı anda 64'e kadar farklı (veya aynı, ancak farklı ayarlara sahip) alım satım sinyali modülünü kullanabilir.
Şekil 6. Uzman Danışman sinyallerinin parametreleri (başlangıç).
Standart Kitaplık, kullanıma hazır alım satım sinyalleri Modüllerine sahiptir:
- 'Accelerator Oscillator' göstergesinin sinyalleri;
- 'Adaptive Moving Average' göstergesinin sinyalleri;
- 'Awesome Oscillator' göstergesinin sinyalleri;
- 'Bears Power' osilatörünün sinyalleri;
- 'Bulls Power' osilatörünün sinyalleri;
- 'Commodity Channel Index' osilatörünün sinyalleri;
- 'DeMarker' osilatörünün sinyalleri;
- 'Double Exponential Moving Average' göstergesinin sinyalleri;
- 'Envelopes' göstergesinin sinyalleri;
- 'Fractal Adaptive Moving Average' göstergesinin sinyalleri;
- Gün içi zaman filtresinin sinyalleri;
- 'Moving Average Convergence/Divergence' osilatörünün sinyalleri;
- 'Moving Average' göstergesinin sinyalleri;
- 'Parabolic SAR' göstergesinin sinyalleri;
- 'Relative Strength Index' osilatörünün sinyalleri;
- 'Relative Vigor Index' osilatörünün sinyalleri;
- 'Stochastic' osilatörünün sinyalleri;
- 'Triple Exponential Average' osilatörünün sinyalleri;
- 'Triple Exponential Moving Average' göstergesinin sinyalleri;
- 'Williams Percent Range' osilatörünün sinyalleri.
Şekil 7. Sinyallerin seçilmesi
"Referans Şartlarımıza" göre, önce 'Moving Average' göstergesinin sinyallerini seçiyoruz.
Gerekli parametreleri yapılandıralım (PeriodMA ve Method). Ağırlık hariç tüm parametreleri optimizasyondan çıkarmak için (varsayılan olarak sinyalin tüm parametreleri girdi parametreleri olarak işaretlenir) "Ad" alanına çift tıklayın.
Burada "Symbol" ve "TimeFrame" alanlarından bahsetmemiz gerekiyor. Sinyalin uygun ayarları mevcut parametrelerden farklıysa bu alanlar doldurulmalıdır. Bir sinyal için, mevcut ayarlar "üstün zeka"nın ayarlarıdır (bu durumda bu, Uzman Danışmandır).
Şekil 8. Sinyal parametrelerinin yapılandırılması
Kalan sinyalleri ekleyin ve gerekli parametreleri yapılandırın. Optimizasyon için, tüm sinyaller için yalnızca Ağırlık parametresini bırakın.
Sinyallerin yapılandırılması tamamlanmıştır. Devam etmek için "İleri" ye tıklayın.
Şekil 9. Uzman Danışman sinyallerinin parametreleri (bitiş)
Adım 3. Açık Pozisyonları Takip Etme Modülünü Seçmek
Bir sonraki adım, açık pozisyonları takip etme algoritmasını seçmektir (Trailing Stop). Takibi kullanmak, kazanılan kârdan tasarruf etmenizi sağlar.
Bu modülün yapılandırması MQL5 Sihirbazı makalesinde ayrıntılı olarak açıklanmıştır: Programlama Olmadan Uzman Danışmanlar Oluşturma. Biz takip kullanmayacağız.
Şekil 10. Pozisyon takip algoritmasını seçin
Adım 4. Para ve Risk Yönetimi Modülünü Seçin
Son adımda, Uzman Danışmanda kullanacağınız para ve risk yönetimi sistemini seçmeniz gerekiyor. Bu modülün yapılandırması MQL5 Sihirbazı makalesinde ayrıntılı olarak açıklanmıştır: Programlama Olmadan Uzman Danışmanlar Oluşturma. Biz sabit bir lot kullanacağız.
Şekil 11. Para yönetimi algoritmasını seçme
İşte bu. "Bitir"e tıklayın.
MetaTrader 5 Strateji Sınama Aracında Oluşturulan Uzman Danışmanı Kontrol Etme
Standart Kitaplığın tüm bileşenleri mevcutsa, oluşturulan Uzman Danışmanın kodu başarıyla derlenir. En iyi Uzman Danışman parametreleri seti, optimizasyondan sonra MetaTrader 5 Strateji Sınama Aracında bulunabilir.
Uzman Danışmanın optimizasyonu için 01.01.10 ile 01.01.11 arasındaki periyodu seçin ve iki aşamada çalıştırın.
İlk aşama: "Sinyal ağırlıklarının seçimi, giriş/çıkış koşullarının tetiklenmesi için eşikler ve alım satım seviyeleri."
Şekil 12. Uzman Danışman optimizasyonunun parametreleri
İşte en iyi optimizasyon çalıştırmasının sonucu.
Şekil 13. Uzman Danışman optimizasyonunun sonuçları
Şimdiden iyi sonuçlar aldık (kâr ve maksimum düşüş açısından). Sabit bir lotla "alım satım yaptığımızı" unutmamalıyız.
Ama sonuçları daha da iyileştirmeye çalışalım. Bu amaçla başka bir sinyalimiz var (henüz bunun ayarlarını kullanmadık). Parametreleri optimize etme sonucunda bulunan değerler, Uzman Danışman tarafından tanınan bir piyasa modelini açıklar.
Ancak ortaya çıkan piyasa modelinin her zaman eşit derecede iyi çalışmadığını varsayalım. Zaman filtresini optimizasyon sonuçlarına uygulamaya çalışalım.
Bunun için Uzman Danışmanı "IntradayTimeFilter" Sinyallerinin "Kötü saatler" parametresine göre optimize edelim. "Kötü saatler" parametresi, 24 bitlik (günlük saat sayısı) bir bit eşlemdir. Bit maskesinin her biti, saatlerden biriyle benzersiz bir şekilde eşleşir (maskedeki bit sayısı ve bir gündeki saat sayısı eşleşir). Mevcut saatin sayısı bu bitin sayısına eşitse (yani saat alım satım için kötü olarak kabul edilirse), 1'e eşit herhangi bir bitin değeri herhangi bir oylama sonucunu geçersiz kılar.
"İyi" ve "kötü" saatlerin tüm olası kombinasyonlarını gözden geçirmek için, parametreyi 1'e eşit bir adımda 0'dan 2^24-1'e (doğal biçimde 16 777 215) optimize edeceğiz.
Şekil 14. Uzman Danışman optimizasyonunun parametreleri
Optimizasyon sonucunda 11 665 415 değerini elde ediyoruz. Bunun ne demek olduğunu anlamak için ikili biçimde ifade edelim:
- 101100100000000000000111 - yani "kötü" saatlerin sayıları 0, 1, 2, 17, 20, 21 ve 23'tür.
İşte tüm optimizasyonlardan sonra Uzman Danışmanın parametreleri.
Şekil 15. Uzman Danışmanın Özellikleri
En iyi parametrelere sahip tek bir sınamanın raporu ektedir. Kâr daha yüksek ve düşüş daha azdır. Zaman filtrelemesinden sonra, geçmiş dönemde alım satım sisteminin sonuçlarının iyileştiği sonucuna varılabilir.
Sonuç
Alım satım stratejileri sınıflarının kullanımı, MQL5 Sihirbazını kullanarak alım satım fikirlerini doğrudan MetaEditor'da sınamak üzere robotların oluşturulmasını önemli ölçüde kolaylaştırır. Artık Uzman Danışmanın tüm kaynak kodu, Standart Kitaplığın kullanıma hazır modüllerinin kombinasyonuna dayalı olarak veya kendi modülleriniz kullanılarak oluşturulabilir.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal makale: https://www.mql5.com/ru/articles/275
- Ü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