Ticaret robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Telegram üzerinde bulun!
Fan sayfamıza katılın
Komut dosyasını ilginç mi buldunuz?
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
Komut dosyasını beğendiniz mi? MetaTrader 5 terminalinde deneyin
Uzman Danışmanlar

MQL5 Sihirbazı - RSI Göstergesiyle Onaylı Olarak Sabah Yıldızı / Akşam Yıldızı Mum Modellerine Dayalı Ticaret Sinyalleri - MetaTrader 5 için Uzman Danışman

Görüntülemeler:
270
Derecelendirme:
(82)
Yayınlandı:
2022.03.21 09:20
\MQL5\Include\Expert\Signal\MySignals\
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 RSI göstergesiyle onaylı olarak sabah yıldızı / akşam yıldızı 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. Sabah yıldızı ve akşam yıldızı terse dönüş mum modelleri

1.1. Sabah yıldızı

Bu model düşüş trendinin terse dönüşünü gösterir ve üç mumdan oluşur (Şekil 1). Ayı tipinde uzun gövdeli mumu, bu mumun gövdesiyle kesişmeyen kısa gövdeli (tipi önemli değil) mum takip eder. İkinci mumun küçük gövdesi, boğaların ve ayıların güçlerinin eşit olduğu ve trendin değişmeye hazır olduğu anlamına gelir.

Bu modelin üçüncü mumu, gövdesi genellikle ikinci mumun gövdesiyle kesişmeyen ve kapanış seviyesi birinci mumun (ayı tipinde olan) gövdesinin içinde bulunan boğa tipinde mumdur. Kolaylık sağlamak adına, model, Şekil 1'de gösterilmiştir.

Sabah yıldızının ikinci mumu bir doji ise, bu modele sabah doji yıldızı denir.

Şekil 1. Sabah yıldızı ve sabah doji yıldızı terse dönüş mum modelleri

Şekil 1. Sabah yıldızı ve sabah doji yıldızı terse dönüş mum modelleri

Sabah yıldızı modelinin tanınması, CCandlePattern sınıfının CheckPatternMorningStar() ve CheckPatternMorningDoji() metodunda yer alır:

//+------------------------------------------------------------------+
//| sabah yıldızı mum modelinin oluşumunu kontrol et                 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- sabah yıldızı
   if((Open(3)-Close(3)>AvgBody(1))             && // ayı tipinde mum (gövdesi ortalama mum gövdesinden daha büyük)
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // ikinci mumun gövdesi küçük (ortalama mum gövdesinin yarısından daha küçük)
      (Close(2)<Close(3))                       && // ikinci mumun kapanışı birinci mumun kapanışından daha düşük 
      (Open(2)<Open(3))                         && // ikinci mumun açılışı birinci mumun açılışından daha düşük
      (Close(1)>MidOpenClose(3)))                  // son tamamlanmış mumun kapanışı ilk mumun merkezinden daha yüksek
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| sabah doji yıldızı mum modelinin oluşumunu kontrol et            |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningDoji()
  {
//--- sabah doji yıldızı
   if((Open(3)-Close(3)>AvgBody(1)) && // ayı tipinde mum (gövdesi ortalama mum gövdesinden daha büyük)
      (AvgBody(2)<AvgBody(1)*0.1)   && // ikinci mumun gövdesi çok küçük (doji)
      (Close(2)<Close(3))           && // ikinci mumun kapanışı birinci mumun kapanışından daha düşük
      (Open(2)<Open(3))             && // ikinci mumun açılışı birinci mumun açılışından daha düşük
      (Open(1)>Close(2))            && // son tamamlanmış mumda yukarı gap
      (Close(1)>Close(2)))             // son tamamlanmış mumun kapanışı, ikinci mumun kapanışından daha yüksek
      return(true);
//---
   return(false);
  }

CCandlePattern sınıfının CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) ve CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) metotları, sabah yıldızı ve sabah doji yıldızı mum modellerinin oluşumunu kontrol etmek için kullanılır.


1.2. Akşam yıldızı

Bu model yükseliş trendinin terse dönüşünü gösterir ve üç mumdan oluşur (Şekil 2). Boğa tipinde uzun gövdeli mumu, bu mumun gövdesiyle kesişmeyen kısa gövdeli (tipi önemli değil) mum takip eder. İkinci mumun küçük gövdesi, boğaların ve ayıların güçlerinin eşit olduğu ve trendin değişmeye hazır olduğu anlamına gelir.

Bu modelin üçüncü mumu, gövdesi genellikle ikinci mumun gövdesiyle kesişmeyen ve kapanış seviyesi birinci mumun (boğa tipinde olan) gövdesinin içinde bulunan ayı tipinde mumdur. Kolaylık sağlamak adına, model, Şekil 2'de gösterilmiştir.

Akşam yıldızının ikinci mumu bir doji ise, bu modele akşam doji yıldızı denir.

Şekil 2. Akşam yıldızı ve akşam doji yıldızı terse dönüş mum modelleri

Şekil 2. Akşam yıldızı ve akşam doji yıldızı terse dönüş mum modelleri

Akşam yıldızı ve akşam doji yıldızı modellerini tanıma metotları şunlardır:

//+------------------------------------------------------------------+
//| akşam yıldızı mum modelinin oluşumunu kontrol et                 |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- akşam yıldızı
   if((Close(3)-Open(3)>AvgBody(1))             && // boğa tipinde mum (gövdesi ortalama mum gövdesinden daha büyük)
      (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // ikinci mumun gövdesi küçük (ortalama mum gövdesinin yarısından daha küçük)
      (Close(2)>Close(3))                       && // ikinci mumun kapanışı birinci mumun kapanışından daha yüksek
      (Open(2)>Open(3))                         && // ikinci mumun açılışı birinci mumun açılışından daha yüksek
      (Close(1)<MidOpenClose(3)))                  // son tamamlanmış mumun kapanışı ilk mumun merkezinden daha düşük
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| akşam doji yıldızı mum modelinin oluşumunu kontrol et            |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningDoji()
  {
//--- akşam doji yıldızı
   if((Close(3)-Open(3)>AvgBody(1)) && // boğa tipinde mum (gövdesi ortalama mum gövdesinden daha büyük)
      (AvgBody(2)<AvgBody(1)*0.1)   && // ikinci mumun gövdesi çok küçük (doji)
      (Close(2)>Close(3))           && // ikinci mumun kapanışı birinci mumun kapanışından daha yüksek
      (Open(2)>Open(3))             && // ikinci mumun açılışı birinci mumun açılışından daha yüksek
      (Open(1)<Close(2))            && // son tamamlanmış mumda aşağı gap
      (Close(1)<Close(2)))             // son tamamlanmış mumun kapanışı, ikinci mumun kapanışından daha düşük
      return(true);
//---
   return(false);
  }

CCandlePattern sınıfının CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) ve CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) metotları, akşam yıldızı ve akşam doji yıldızı mum modellerinin oluşumunu kontrol etmek için kullanılır.


2. RSI göstergesi tarafından onaylanan ticaret sinyalleri

Alış veya satış pozisyonu açma için ticaret sinyalleri RSI göstergesi tarafından onaylanmalıdır. Bunun için RSI'ın değeri alış pozisyonu için 40'den düşük ve satış pozisyonu için 60'den yüksek olmalıdır.

Pozisyonun kapanması da RSI değerlerine bağlıdır. 2 durumda gerçekleşir:

  1. RSI karşı kritik seviyeye (alış pozisyonu için 70 ve satış pozisyonu için 30) ulaştığında
  2. terse dönüş sinyali onaylanmazsa (RSI şu seviyelere ulaştığında: alış pozisyonu için 30 ve satış pozisyonu için 70)

Şekil 3. RSI göstergesiyle onaylanan sabah yıldızı mum modeli

Şekil 3. RSI göstergesiyle onaylanan sabah yıldızı mum modeli

  • int CMS_ES_RSI::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 CMS_ES_RSI::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

  1. Alış pozisyonu açma sinyali, sabah yıldızı mum modelinin oluşması ve oluşan modelin RSI göstergesiyle onaylanmasıyla (RSI(1)<40 (son tamamlanmış çubuğun RSI değeri 40'dan daha düşük olmalıdır)) oluşur.

  2. Satış pozisyonunu kapatma sinyali, RSI'ı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 CMS_ES_RSI::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ü
//--- sabah yıldızı modeli ve RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (RSI(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(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- sonucu geri döndür
   return(result);
  }


2.2. Satış pozisyonu açma/Alış pozisyonunu kapatma

  1. Satış pozisyonu açma sinyali, akşam yıldızı mum modelinin oluşması ve oluşan modelin RSI göstergesiyle onaylanmasıyla (RSI(1)>60 (son tamamlanmış çubuğun RSI değeri 60'dan daha yüksek olmalıdır)) oluşur.

  2. Alış pozisyonunu kapatma sinyali, RSI'ı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 CMS_ES_RSI::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ü
//--- akşam yıldızı modeli ve RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (RSI(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(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- sonucu geri döndür
   return(result);
  }


2.3. MQL5 Sihirbazını kullanarak Uzman Danışman oluşturma

CMS_ES_RSI sınıfı, Standart Kütüphane sınıflarına dahil değildir, bu nedenle onu kullanmak için acms_es_rsi.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ı mumpatterns.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

Ş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

Ş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

Şekil 6. Uzman Danışmanın sinyal özellikleri

Bizim durumumuzda yalnızca bir ticaret sinyali modülü kullanılacağız.

"Signals based on Morning/Evening Stars confirmed by RSI" ticaret sinyali modülünün eklenmesi:

Şekil 7. Uzman Danışmanın sinyal özellikleri

Şekil 7. Uzman Danışmanın sinyal özellikleri

Ticaret sinyali modülü eklendi:

Şekil 8. Uzman Danışmanın sinyal özellikleri

Ş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

Ş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

Ş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_AMS_ES_RSI.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.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

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. RSI göstergesiyle onaylı olarak sabah yıldızı / akşam yıldızı mum modellerine dayalı Uzman Danışmanın geçmişe dönük test sonuçları

Şekil 11. RSI göstergesiyle onaylı olarak sabah yıldızı / akşam yıldızı 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.

Parametrelerle çalışma, 419 yapısından beri eklenen Strateji Sınayıcının 3D-Görselleştirme modu kullanılarak büyük ölçüde basitleştirilmiştir (Şekil 12):

Şekil 12. PeriodRSI ve MA_period girdi parametrelerinin bir fonksiyonu olarak bakiyenin 3 boyutlu görselleştirmesi

Şekil 12. PeriodRSI ve MA_period girdi parametrelerinin bir fonksiyonu olarak bakiyenin 3 boyutlu görselleştirmesi

MQL5 Sihirbazı tarafından oluşturulan Uzman Danışman kodu, expert_ms_es_rsi.mq5 dosyasına eklenir.


MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/324

MQL5 Sihirbazı - MFI Göstergesiyle Onaylı Olarak Sabah Yıldızı / Akşam Yıldızı Mum Modellerine Dayalı Ticaret Sinyalleri MQL5 Sihirbazı - MFI Göstergesiyle Onaylı Olarak Sabah Yıldızı / Akşam Yıldızı Mum Modellerine Dayalı Ticaret Sinyalleri

Bu bölümde Market Facilitation Index (MFI) 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.

MQL5 Sihirbazı - CCI Göstergesiyle Onaylı Olarak Sabah Yıldızı / Akşam Yıldızı Mum Modellerine Dayalı Ticaret Sinyalleri MQL5 Sihirbazı - CCI Göstergesiyle Onaylı Olarak Sabah Yıldızı / Akşam Yıldızı Mum Modellerine Dayalı Ticaret Sinyalleri

Bu bölümde Commodity Channel Index (CCI) 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.

Demo_BitmapOffset (OBJPROP_XOFFSET ve OBJPROP_YOFFSET) Demo_BitmapOffset (OBJPROP_XOFFSET ve OBJPROP_YOFFSET)

Varsayalım ki görüntünün şu an için sadece bir bölümünü göstermeniz ve diğer taraflarını gizlemeniz gerekiyor. Bunu yapmak için, görüntünün görünür alanını belirterek kayar pencere kullanabilirsiniz.

MQL5 Sihirbazı - Stochastic Oscillator Göstergesiyle Onaylı Olarak Tüm Terse Dönüş Mum Modellerinin Kombine Kullanımına Dayalı Ticaret Sinyalleri MQL5 Sihirbazı - Stochastic Oscillator Göstergesiyle Onaylı Olarak Tüm Terse Dönüş Mum Modellerinin Kombine Kullanımına Dayalı Ticaret Sinyalleri

Bu bölümde Stochastic Oscillator göstergesiyle onaylı olarak tüm terse dönüş mum modellerinin kombine kullanımına dayalı ticaret sinyalleri açıklanmaktadır.