Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın

MQL5 Sihirbazı - MFI Göstergesiyle Onaylı Olarak Kara Bulut Örtüsü / Delici Hat Mum Modellerine Dayalı Ticaret Sinyalleri - MetaTrader 5 için Uzman Danışman
- Görüntülemeler:
- 347
- Derecelendirme:
- Yayınlandı:
- 2022.03.09 15:28
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
MQL5 Sihirbazı, müşteri terminali ile birlikte sağlanan Standart Kütüphane sınıflarına dayanan hazır Uzman Danışmanlar oluşturmaya olanak sağlar (ayrıntılar için bkz. MQL5 Sihirbazında Hazır Uzman Danışmanlar Oluşturma). Ticaret fikirlerinizi hızlı bir şekilde test etmenize olanak tanır, tek ihtiyacınız olan kendi ticaret sinyalleri sınıfınızı oluşturmaktır. Bu sınıfın yapısı ve örneği, MQL5 Sihirbazı: Ticaret Sinyali Modülü Nasıl Oluşturulur? makalesinde bulunur.
Ana fikir şudur: ticaret sinyalleri sınıfı CExpertSignal'dan türer, sizin LongCondition() ve ShortCondition() sanal metotlarına kendi yöntemlerinizi uygulamanız gerekir.
"Стратегии Лучших Трейдеров Мира" (Dünyanın En İyi Yatırımcılarının Stratejileri) adlı kitapta (Rusça), incelenen birçok ticaret stratejisi vardır ve çoğunluklu olarak Stochastic, CCI, MFI ve RSI osilatörleriyle onaylı terse dönüş mum modellerine odaklanır.
En iyi yol, mum modellerinin oluşumunu kontrol etmek için CExpertSignal'dan türeyen ayrı bir sınıf oluşturmaktır. Mum modelleri tarafından oluşturulan ticaret sinyallerinin onayı için CCandlePattern'dan türeyen sınıf yazmak ve gerekli özellikleri (örneğin, osilatörler tarafından onay) oraya eklemek yeterlidir.
Bu bölümde MFI göstergesiyle onaylı olarak kara bulut örtüsü / delici hat terse dönüş mum modellerini temel alan strateji ele alınacak. Ticaret sinyali modülü CCandlePattern sınıfına dayanır, mum modelleriyle ticaret sinyalleri oluşturmak için kullanımının basit bir örneğidir.
1. Kara bulut örtüsü / delici hat terse dönüş mum modelleri
1.1. Kara bulut örtüsü
Yükseliş trendinin terse dönüşünü gösteren ayı tipinde bir mum modelidir. İlk gün boğa tipinde mum oluşur, ertesi gün ise önceki günün yüksek seviyesinden daha yüksekte gaple açılır ve ilk günün ortasının aşağısında kapanır.
Şekil 1. Kara bulut örtüsü mum modeli
Kara bulut örtüsü modelinin tanınması, CCandlePattern sınıfının CheckPatternDarkCloudCover() metodunda yer alır:
//+------------------------------------------------------------------+ //| kara bulut örtüsü mum modelinin oluşumunu kontrol et | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- kara bulut örtüsü if((Close(2)-Open(2)>AvgBody(1)) && // boğa tipinde uzun gövdeli mum (Close(1)<Close(2)) && // (Close(1)>Open(2)) && // önceki gövde içinde kapanış (MidOpenClose(2)>CloseAvg(1)) && // yükseliş trendi (Open(1)>High(2))) // yeni yüksekte açılış return(true); //--- return(false); }
CCandlePattern sınıfının CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) metodu, kara bulut örtüsü mum modeli oluşumunu kontrol etmek için kullanılır.
1.2. Delici hat
Düşüş trendinin terse dönüşünü gösteren boğa tipinde bir mum modelidir. İlk gün ayı tipinde mum oluşur, ertesi gün ise önceki günün düşük seviyesinden daha düşükte gaple açılır ve ilk günün ortasının yukarısında kapanır. Bu fiyat hareketi, çubuk grafikler kullanılarak değerlendirilirken mum grafiklerde olduğu kadar fark edilebilir değildir. Ertesi günün kapanışı ilk günün gövdesinin orta noktasından yukarı doğru ne kadar nüfuz ederse, geri dönüş sinyalinin başarılı olma olasılığı da o kadar yüksek olur.
Şekil 2. Delici hat mum modeli
Delici hat modelinin tanınması, CCandlePattern sınıfının CheckPatternPiercingLine() metodunda yer alır:
//+------------------------------------------------------------------+ //| delici hat mum modelinin oluşumunu kontrol et | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- delici hat if((Close(1)-Open(1)>AvgBody(1)) && // boğa tipinde uzun gövdeli mum (Open(2)-Close(2)>AvgBody(1)) && // ayı tipinde uzun gövdeli mum (Close(1)>Close(2)) && // (Close(1)<Open(2)) && // önceki gövde içinde kapanış (MidOpenClose(2)<CloseAvg(2)) && // düşüş trendi (Open(1)<Low(2))) // önceki düşükten daha düşükte açılış return(true); //--- return(false); }
CCandlePattern sınıfının CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) metodu, delici hat mum modeli oluşumunu kontrol etmek için kullanılır.
2. MFI göstergesi tarafından onaylanan ticaret sinyalleri
Alış veya satış pozisyonu açma için ticaret sinyalleri MFI göstergesi tarafından onaylanmalıdır. Bunun için MFI'ın değeri alış pozisyonu için 40'dan düşük ve satış pozisyonu için 60'dan yüksek olmalıdır.
Pozisyonun kapanması da MFI değerlerine bağlıdır. 2 durumda gerçekleşir:
- MFI karşı kritik seviyeye (alış pozisyonu için 70 ve satış pozisyonu için 30) ulaştığında
- terse dönüş sinyali onaylanmazsa (MFI şu seviyelere ulaştığında: alış pozisyonu için 30 ve satış pozisyonu için 70)
Şekil 3. MFI göstergesiyle onaylanan kara bulut örtüsü mum modeli
- int CDC_PL_MFI::LongCondition() - alış pozisyonu açma (80 geri döndürür) ve satış pozisyonunu kapatma (40 geri döndürür) için koşulları kontrol eder;
- int CDC_PL_MFI::ShortCondition() - satış pozisyonu açma (80 geri döndürür) ve alış pozisyonunu kapatma (40 geri döndürür) için koşulları kontrol eder.
2.1. Alış pozisyonu açma/Satış pozisyonunu kapatma
Alış pozisyonu açma sinyali, delici hat mum modelinin oluşması ve oluşan modelin MFI göstergesiyle onaylanmasıyla (MFI(1)<40 (son tamamlanmış çubuğun MFI değeri 40'dan daha düşük olmalıdır)) oluşur.
Satış pozisyonunu kapatma sinyali, MFI'ın 70 veya 30 seviyesini yukarı doğru çaprazlamasıyla oluşur.
//+------------------------------------------------------------------+ //| piyasaya giriş ve çıkış koşullarını kontrol et | //| 1) piyasaya giriş (alış pozisyonu açma, result=80) | //| 2) piyasadan çıkış (satış pozisyonunu kapatma, result=40) | //+------------------------------------------------------------------+ int CDC_PL_MFI::LongCondition() { int result=0; //--- idx, Uzman Danışmanın çalışma modunu belirlemek için kullanılabilir //--- idx=0 - bu durumda Uzman Danışman, ticaret koşullarını her tikte kontrol eder //--- idx=1 - bu durumda Uzman Danışman, ticaret koşullarını yalnızca yeni mumlarda kontrol eder int idx =StartIndex(); //--- alış pozisyonu açma için koşulların kontrolü //--- delici hat modeli ve MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (MFI(1)<40)) result=80; //--- satış pozisyonunu kapatma için koşulların kontrolü //--- sinyal çizgisinin aşırı alış / aşırı satış seviyelerini çaprazlaması (70 veya 30'u yukarı doğru) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- sonucu geri döndür return(result); }
2.2. Satış pozisyonu açma/Alış pozisyonunu kapatma
Satış pozisyonu açma sinyali, kara bulut örtüsü mum modelinin oluşması ve oluşan modelin MFI göstergesiyle onaylanmasıyla (MFI(1)>60 (son tamamlanmış çubuğun CCI değeri 60'dan daha yüksek olmalıdır)) oluşur.
Alış pozisyonunu kapatma sinyali, MFI'ın 70 veya 30 seviyesini aşağı doğru çaprazlamasıyla oluşur.
//+------------------------------------------------------------------+ //| piyasaya giriş ve çıkış koşullarını kontrol et | //| 1) piyasaya giriş (satış pozisyonu açma, result=80) | //| 2) piyasadan çıkış (alış pozisyonunu kapatma, result=40) | //+------------------------------------------------------------------+ int CDC_PL_MFI::ShortCondition() { int result=0; //--- idx, Uzman Danışmanın çalışma modunu belirlemek için kullanılabilir //--- idx=0 - bu durumda Uzman Danışman, ticaret koşullarını her tikte kontrol eder //--- idx=1 - bu durumda Uzman Danışman, ticaret koşullarını yalnızca yeni mumlarda kontrol eder int idx =StartIndex(); //--- satış pozisyonu açma için koşulların kontrolü //--- kara bulut örtüsü modeli ve MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (MFI(1)>60)) result=80; //--- alış pozisyonunu kapatma için koşulların kontrolü //--- sinyal çizgisinin aşırı alış / aşırı satış seviyelerini çaprazlaması (70 veya 30'u aşağı doğru) if(((MFI(1)<70) && (MFI(2)>70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- sonucu geri döndür return(result); }
2.3. MQL5 Sihirbazını kullanarak Uzman Danışman oluşturma
CDC_PL_MFI sınıfı, Standart Kütüphane sınıflarına dahil değildir, bu nedenle onu kullanmak için adc_pl_mfi.mqh dosyasını indirmeniz (eklere bakın) ve terminal_veri_klasörü\MQL5\Include\Expert\Signal\MySignals klasörüne yerleştirmeniz gerekir. Aynısı acandlepatterns.mqh dosyası için de yapılmalıdır. Sonrasında, MetaEditor'ı yeniden başlattıktan sonra MQL5 Sihirbazında kullanabilirsiniz.
Uzman Danışman oluşturmak için MQL5 Sihirbazını başlatın:
Şekil 4. MQL5 Sihirbazını kullanarak Uzman Danışman oluşturma
Uzman Danışmanın adını belirtin:
Şekil 5. Uzman Danışmanın genel özellikleri
Ardından, kullanılan ticaret sinyali modüllerini seçmeniz gerekir.
Şekil 6. Uzman Danışmanın sinyal özellikleri
Bizim durumumuzda yalnızca bir ticaret sinyali modülü kullanılacağız.
"Signals based on Dark Cloud Cover/Piercing Line confirmed by MFI" ticaret sinyali modülünün eklenmesi:
Şekil 7. Uzman Danışmanın sinyal özellikleri
Ticaret sinyali modülü eklendi:
Şekil 8. Uzman Danışmanın sinyal özellikleri
Ardından, takip eden durdurucu modülünü seçebilirsiniz, biz onu kullanmayacağız, bu yüzden "Trailing Stop not used" seçeneğini seçtik:
Şekil 9. Uzman Danışmanın takip eden durdurucu özelliği
Şimdi ise bir para yönetimi modülü seçilmesi gerekiyor, biz burada "Trading with fixed trade volume" (Sabit işlem hacmi ile ticaret) kullanacağız:
Şekil 10. Uzman Danışmanın para yönetimi özelliği
"Tamam" düğmesine basarak, oluşturulan Uzman Danışman kodunu elde edeceğiz - kod, expert_ADC_PL_MFI.mq5 dosyasına kaydedilir ve bu dosya da terminal_veri_klasörü\MQL5\Experts\ klasörüne yerleştirilir.
Oluşturulan Uzman Danışmanın varsayılan girdi parametreleri:
//--- ana sinyal için girdiler input int Signal_ThresholdOpen =10; // pozisyon açma için sinyal eşik değeri [0...100] input int Signal_ThresholdClose =10; // pozisyonu kapatma için sinyal eşik değeri [0...100] input double Signal_PriceLevel =0.0; // işlemi gerçekleştirmek için fiyat seviyesi input double Signal_StopLevel =50.0; // Zararı Durdur seviyesi (puan cinsinden) input double Signal_TakeLevel =50.0; // Kârı Al seviyesi (puan cinsinden)
şu şekilde değiştirilmelidir:
//--- inputs for main signal input int Signal_ThresholdOpen =40; // pozisyon açma için sinyal eşik değeri [0...100] input int Signal_ThresholdClose =20; // pozisyonu kapatma için sinyal eşik değeri [0...100] input double Signal_PriceLevel =0.0; // işlemi gerçekleştirmek için fiyat seviyesi input double Signal_StopLevel =0.0; // Zararı Durdur seviyesi (puan cinsinden) input double Signal_TakeLevel =0.0; // Kârı Al seviyesi (puan cinsinden)
Signal_ThresholdOpen/Signal_ThresholdClose girdi parametreleri, pozisyonların açılması ve kapanması için eşik seviyelerin belirlenmesine olanak tanır.
Ticaret sinyali modülünün LongCondition() ve ShortCondition() metotlarının kodunda, sabit eşik değerleri şu şekildedir:
- Alış pozisyonu: 80;
- Satış pozisyonu: 40.
MQL5 Sihirbazı tarafından oluşturulan Uzman Danışman, ticaret sinyali modüllerinden gelen "oyları" kullanarak pozisyon açar ve pozisyonu kapatır. Ana modül de (eklenen tüm modülleri içerir) oylamada yer alır,
ancak LongCondition() ve ShortCondition() metotları her zaman 0 geri döndürür. Oylar, mevcut modül sayısı (ana modül + eklenen modüller) üzerinden ortalama alınarak hesaplandığından, eşik değerleri bu durum dikkate alınarak belirtilmelidir. Bu nedenle ThresholdOpen ve ThresholdClose sırasıyla 40=(0+80)/2 ve 20=(0+40)/2 olarak ayarlanmalıdır.
Signal_StopLevel ve Signal_TakeLevel girdi parametrelerinin değerleri 0 olarak ayarlanmıştır, bu, pozisyonların yalnızca kapanış koşulları mevcut olduğunda kapatılacağı anlamına gelir.
2.4. Geçmiş verileri üzerinde test sonuçları
Uzman Danışmanın geçmiş verileri üzerinde geriye dönük testini ele alalım (EURUSD H1, test aralığı: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11).
Uzman Danışman oluşturulurken 0.1 lotluk sabit işlem hacmi kullanıldı (Trading Fixed Lot), Takip Eden Durdurucu algoritması kullanılmadı (Trailing not used).
Şekil 11. MFI göstergesiyle onaylı olarak kara bulut örtüsü / delici hat mum modellerine dayalı Uzman Danışmanın geçmişe dönük test sonuçları
En iyi girdi parametreleri kümesi, MetaTrader 5 müşteri terminalinin Strateji Sınayıcısı kullanılarak bulunabilir.
MQL5 Sihirbazı tarafından oluşturulan Uzman Danışman kodu, expert_adc_pl_mfi.mq5 dosyasına eklenir.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/299

Bu bölümde Commodity Channel Index (CCI) göstergesiyle onaylı olarak kara bulut örtüsü / delici hat mum modellerine dayalı ticaret sinyalleri açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.

Bu bölümde Stochastic Oscillator göstergesiyle onaylı olarak kara bulut örtüsü / delici hat mum modellerine dayalı ticaret sinyalleri açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.

Bu bölümde Relative Strength Index (RSI) göstergesiyle onaylı olarak kara bulut örtüsü / delici hat mum modellerine dayalı ticaret sinyalleri açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.

Bu bölümde Stochastic Oscillator göstergesiyle onaylı olarak sabah yıldızı / akşam yıldızı mum modellerine dayalı ticaret sinyalleri açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.