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

MQL5 Sihirbazı - Alligator Göstergesinin Çizgilerinin Çaprazlamasına Dayalı Ticaret Sinyalleri - MetaTrader 5 için Uzman Danışman
- Görüntülemeler:
- 271
- Derecelendirme:
- Yayınlandı:
- 2022.03.09 15:26
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
MQL5 Sihirbazı, Uzman Danışmanların otomatik olarak oluşturulmasına olanak sağlar (bkz. MQL5 Sihirbazı: Programlama Olmadan Uzman Danışmanlar Oluşturma).
Bu bölümde B.Williams tarafından "Trading Chaos" adlı kitabında sunulmuş olan Alligator teknik göstergesini temel alan strateji ele alınacak. Strateji "Signals based on the Alligator" olarak adlandırılır (MQL5 Sihirbazında bu stratejiye dayalı olan Uzman Danışman otomatik olarak oluşturulurken).
Alligator göstergesi, üç hareketli ortalamanın (Lips, Teeth ve Jaw çizgileri) ve bunlara dayalı osilatörlerin birleşimidir. Ticaret sinyalleri, çizgilerin sırasına göre belirlenen trende bağlı olarak, çizgilerin birbirini çaprazlamasıyla oluşur. Yükseliş trendi varlığında, sırasıyla en yüksekte Lips çizgisi (en düşük periyotlu), sonrasında Teeth çizgisi ve en düşük olarak Jaw çizgisi bulunur. Düşüş trendi varlığında da benzer ancak tam tersi durum söz konusudur: sırasıyla en düşükte Lips çizgisi (en düşük periyotlu), sonrasında Teeth çizgisi ve en yüksek olarak Jaw çizgisi bulunur.
Ticaret sinyalleri:
- Alış pozisyonu açma: yükseliş trendi varlığında Alligator çizgileri çaprazladığında ve çizgilerin aralarındaki mesafe arttığında;
- Alış pozisyonunu kapatma: Lips çizgisinin Jaw çizgisini yukarı doğru çaprazlaması;
- Satış pozisyonu açma: düşüş trendi varlığında Alligator çizgileri çaprazladığında ve çizgilerin aralarındaki mesafe arttığında;
- Satış pozisyonunu kapatma: Lips çizgisinin Jaw çizgisini aşağı doğru çaprazlaması;
Bu strateji CSignalAlligator sınıfında yer alır.
Şekil 1. Alligator teknik göstergesine dayalı ticaret sinyalleri
Ticaret Sinyalleri
Ticaret stratejisi CSignalAlligator sınıfında yer alır; fiyat ve gösterge değerlerine erişimi basitleştirmek için birkaç korumalı metoda sahiptir:
double Jaw(int ind) // çubuğun Jaw çizgisinin değerini geri döndürür double Teeth(int ind) // çubuğun Teeth çizgisinin değerini geri döndürür double Lips(int ind) // çubuğun Lips çizgisinin değerini geri döndürür double LipsTeethDiff(int ind) // Lips ve Teeth çizgileri arasındaki farkı geri döndürür double TeethJawDiff(int ind) // Teeth ve Jaw çizgileri arasındaki farkı geri döndürür double LipsJawDiff(int ind) // Lips ve Jaw çizgileri arasındaki farkı geri döndürür bool CheckCross(); // Alligator çizgilerinin çaprazlamasını kontrol eder
1. Alış pozisyonu açma
Ticaret koşullarının kontrolü, Lips, Teeth ve Jaw çizgilerinin kaymaya sahip olmasından bazı özelliklere sahiptir.
Alış pozisyonu açma koşulları:
- Çizgilerin çaprazlamasını ve çizgiler arasındaki farkın artışını belirlemek için CheckCross kullanılır;
- LipsTeethDiff(-2)>=LipsTeethDiff(-1) ve LipsTeethDiff(-1)>=LipsTeethDiff(0); Lips ve Teeth çizgileri arasındaki farkın artışının kontrol edilmesi;
- LipsTeethDiff(0)>=0.0; Lips çizgisi Teeth çizgisinden daha yüksektedir;
- TeethJawDiff(-2)>=TeethJawDiff(-1) ve TeethJawDiff(-1)>=TeethJawDiff(0) ; Teeth ve Jaw çizgileri arasındaki farkın artışının kontrol edilmesi;
- TeethJawDiff(0)>=0.0; Teeth çizgisi Jaw çizgisinden daha yüksektedir.
//+------------------------------------------------------------------+ //| Alış pozisyonu açma koşullarını kontrol et | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 && TeethJawDiff(-2) >=TeethJawDiff(-1) && TeethJawDiff(-1) >=TeethJawDiff(0) && TeethJawDiff(0) >=0.0) m_crossed=true; //--- return(m_crossed); }
2. Alış pozisyonunu kapatma
Alış pozisyonunu kapatma koşulları:
- LipsTeethDiff(-1)<0; bir sonraki çubuğun Lips çizgisi (kayma nedeniyle) Teeth çizgisinden daha düşüktedir;
- LipsTeethDiff(0)>=0; mevcut çubuğun Lips çizgisi Teeth çizgisinden daha yüksektedir/eşit seviyededir;
- LipsTeethDiff(1)>0; bir önceki (tamamlanmış) çubuğun Lips çizgisi Teeth çizgisinden daha yüksektedir.
//+------------------------------------------------------------------+ //| Alış pozisyonunu kapatma koşullarını kontrol et | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseLong(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0); }
3. Satış pozisyonu açma
Satış pozisyonu açma koşulları:
- Çizgilerin çaprazlamasını ve çizgiler arasındaki farkın artışını belirlemek için CheckCross kullanılır;
- LipsTeethDiff(-2)<=LipsTeethDiff(-1) and LipsTeethDiff(-1)<=LipsTeethDiff(0); Lips ve Teeth çizgileri arasındaki farkın artışının kontrol edilmesi;
- LipsTeethDiff(0)<=0.0; mevcut çubuğun Lips çizgisi Teeth çizgisinden daha düşüktedir;
- TeethJawDiff(-2)<=TeethJawDiff(-1) and TeethJawDiff(-1)<=TeethJawDiff(0); Teeth ve Jaw çizgileri arasındaki farkın artışının kontrol edilmesi;
- TeethJawDiff(0) <=0.0; mevcut çubuğun Teeth çizgisi Jaw çizgisinden daha düşüktedir;
//+------------------------------------------------------------------+ //| Satış pozisyonu açma koşullarını kontrol et | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 && TeethJawDiff(-2) <=TeethJawDiff(-1) && TeethJawDiff(-1) <=TeethJawDiff(0) && TeethJawDiff(0) <=0.0) m_crossed=true; //--- return(m_crossed); }
4. Satış pozisyonunu kapatma
Satış pozisyonunu kapatma koşulları:
- LipsTeethDiff(-1)>0; bir sonraki çubuğun Lips çizgisi (kayma nedeniyle) Teeth çizgisinden daha yüksektedir;
- LipsTeethDiff(0)<=0; mevcut çubuğun Lips çizgisi Teeth çizgisinden daha düşüktedir/eşit seviyededir;
- LipsTeethDiff(1)<0; bir önceki (tamamlanmış) çubuğun Lips çizgisi Teeth çizgisinden daha düşüktedir.
//+------------------------------------------------------------------+ //| Satış pozisyonunu kapatma koşullarını kontrol et | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseShort(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0); }
MQL5 Sihirbazını kullanarak Uzman Danışman oluşturma
MQL5 Sihirbazını kullanarak bu stratejiye dayalı bir ticaret robotu oluşturmak için ikinci adımda "Signals based on the Alligator" sinyal türünü seçin:
Şekil 2. MQL5 Sihirbazından "Signals based on the Alligator" sinyal türünü seçin
Ardından, gerekli takip eden durdurucu algoritmasını ve para ve risk yönetimi sistemini belirlemelisiniz. Uzman Danışman kodu otomatik olarak oluşturulacaktır, oluşturulan kodu derleyebilir ve MetaTrader 5 müşteri terminalinin Strateji Sınayıcısında test edebilirsiniz.
Test Sonuçları
Uzman Danışmanın geçmiş verileri üzerinde geriye dönük testini ele alalım (EURUSD H1, test aralığı: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=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 3. Alligator teknik göstergesine dayalı Uzman Danışmanın geçmişe dönük test sonuçları
Bir Uzman Danışmanın işlem sonuçları, ticaret sisteminin piyasanın zamansal özelliklerini dikkate almasıyla önemli ölçüde iyileştirilebilir. CsignalITF sınıfı, ticaret sistemine zaman filtresi eklemeye olanak sağlar. Ticaret için en başarılı zamanlar, MetaTrader 5 terminalinin Strateji Sınayıcısı kullanılarak bulunabilir. "MQL5 Sihirbazı - Zaman Filtresiyle İki EMA Göstergesinin Çaprazlamasına Dayalı Ticaret Sinyalleri" bölümündeki örneğe bakın.
Ekler: CSignalAlligator sınıfına sahip SignalAlligator.mqh dosyası, terminal_veri_klasörü\MQL5\Include\Expert\Signal klasörüne yerleştirilmelidir.
expert_alligator.mq5 dosyası, MQL5 Sihirbazı kullanılarak oluşturulan Uzman Danışman kodunu içerir.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/267

Bu bölümde zaman filtresiyle iki EMA göstergesinin çaprazlamasına 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 MACD göstergesinin ana ve sinyal çizgilerinin çaprazlamasına dayalı ticaret sinyalleri (MQL5 Standart Kütüphanesinden CSignalMACD) açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.

Bu bölümde terse dönüş 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 Commodity Channel Index (CCI) göstergesiyle onaylı olarak 3 kara karga / 3 beyaz asker mum modellerine dayalı ticaret sinyalleri açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.