Ticaret robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Twitter ü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ı - ADX Göstergesiyle Onaylı Olarak Fiyatın Moving Average Göstergesini Çaprazlamasına Dayalı Ticaret Sinyalleri - MetaTrader 5 için Uzman Danışman

Görüntülemeler:
232
Derecelendirme:
(30)
Yayınlandı:
2022.03.09 15:25
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 kodunun otomatik olarak oluşturulmasına olanak sağlar. Ayrıntılar için MQL5 Sihirbazında Hazır Uzman Danışmanlar Oluşturma makalesine bakın.

Bu bölümde ADX göstergesiyle onaylı olarak fiyatın Moving Average göstergesini çaprazlamasını temel alan strateji ele alınacak. Strateji "Signals based on price crossover with MA confirmed by ADX" olarak adlandırılır (MQL5 Sihirbazında bu stratejiye dayalı olan Uzman Danışman otomatik olarak oluşturulurken).

Ticaret sinyalleri:

  • Alış: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha yüksek ve hareketli ortalama mevcut ve son tamamlanmış çubukta artıyor.
  • Satış: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha düşük ve hareketli ortalama mevcut ve son tamamlanmış çubukta düşüyor.
  • Ek olarak, trend gücünün (ADX>ADXmin) ve trend yönünün (DI+ ve DI-) kontrolü de yanlış sinyalleri filtrelemek için kullanılır.

Bu strateji CSignalADX_MA sınıfında yer alır (SignalADX-MA.mqh dosyası, terminal_veri_klasörü\MQL5\Include\Expert\Signal klasörüne yerleştirilmelidir).

Şekil 1. ADX göstergesiyle onaylı olarak fiyatın Moving Average göstergesini çaprazlamasına dayalı ticaret sinyalleri

Şekil 1. ADX göstergesiyle onaylı olarak fiyatın Moving Average göstergesini çaprazlamasına dayalı ticaret sinyalleri

Ticaret Sinyalleri

Ticaret stratejisi CSignalADX_MA sınıfında yer alır; fiyat ve gösterge değerlerine erişimi basitleştirmek için birkaç korumalı metoda sahiptir:

double   PlusADX(int ind)     // çubuğun DI+ çizgisinin değerini geri döndürür
double   MainADX(int ind)     // çubuğun ana çizgisinin değerini geri döndürür
double   MinusADX(int ind)    // çubuğun DI- çizgisinin değerini geri döndürür
double   EMA(int ind)         // çubuğun hareketli ortalamasının değerini geri döndürür
double   Close(int ind)       // çubuğun kapanış fiyatının değerini geri döndürür
double   StateADX(int ind)    // DI+ ve DI- çizgileri arasındaki farkı geri döndürür
double   StateEMA(int ind)    // EMA artıyorsa pozitif, azalıyorsa negatif değeri geri döndürür
double   StateClose(int ind)  // kapanış fiyatı ile hareketli ortalama arasındaki farkı verir
Bu uygulamanın özelliği, ticaret koşullarını kontrol ederken, son tamamlanmış çubuğun verileriyle birlikte mevcut çubuğun değerlerinin kullanılmasıdır. Dolayısıyla, yanlış sinyallerin filtrelenmesi, trendin gücü ve yönü (ADX göstergesinin çizgileri) analiz edilerek gerçekleştirilir.


1. Alış pozisyonu açma

Alış pozisyonu açma koşulları:

  1. StateEMA(0)<0 ve StateEMA(1)>0: mevcut ve son tamamlanmış çubukta hareketli ortalama artıyor;
  2. StateClose(1)>0: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha yüksek;
  3. MainADX(0)>minimum_ADX: mevcut çubuğun ADX değeri, minimum değerden daha yüksek (trend varlığının kontrolü için);
  4. StateADX(0)>0: mevcut çubuğun DI+ değeri, DI- değerinden daha yüksek.
//+------------------------------------------------------------------+
//| Alış pozisyonu açma koşullarını kontrol et                       |
//+------------------------------------------------------------------+
bool CSignalADX_MA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- koşul 1: mevcut ve son tamamlanmış çubukta hareketli ortalama artıyor 
   bool Buy_Condition_1=(StateEMA(0)>0 && StateEMA(1)>0);
//--- koşul 2: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha yüksek 
   bool Buy_Condition_2=(StateClose(1)>0);
//--- koşul 3: mevcut çubuğun ADX değeri, minimum değerden daha yüksek (trend varlığının kontrolü için) 
   bool Buy_Condition_3=(MainADX(0)>m_minimum_ADX);
//--- koşul 4: mevcut çubuğun DI+ değeri, DI- değerinden daha yüksek
    bool Buy_Condition_4=(StateADX(0)>0);
//---
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//--- tüm koşulları kontrol et
   return(Buy_Condition_1 && Buy_Condition_2 && Buy_Condition_3 && Buy_Condition_4);
  }


2. Alış pozisyonunu kapatma

Alış pozisyonunu kapatma koşulları:

  1. StateEMA(0)<0 ve StateEMA(1)<0: mevcut ve son tamamlanmış çubukta hareketli ortalama düşüyor;
  2. StateClose(1)<0: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha düşük;
  3. MainADX(0)>minimum_ADX: mevcut çubuğun ADX değeri, minimum değerden daha yüksek (trend varlığının kontrolü için);
  4. StateADX(0)<0: mevcut çubuğun DI- değeri, DI+ değerinden daha yüksek.
//+------------------------------------------------------------------+
//| Alış pozisyonunu kapatma koşullarını kontrol et                  |
//+------------------------------------------------------------------+
bool CSignalADX_MA::CheckCloseLong(double& price)
  {
//--- koşul 1: mevcut ve son tamamlanmış çubukta hareketli ortalama düşüyor 
   bool Sell_Condition_1=(StateEMA(0)<0 && StateEMA(1)<0);
//--- koşul 2: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha düşük 
   bool Sell_Condition_2=(StateClose(1)<0);
//--- koşul 3: mevcut çubuğun ADX değeri, minimum değerden daha yüksek (trend varlığının kontrolü için) 
   bool Sell_Condition_3=(MainADX(0)>m_minimum_ADX);
//--- koşul 4: mevcut çubuğun DI- değeri, DI+ değerinden daha yüksek
   bool Sell_Condition_4=(StateADX(0)<0);
//---
   price=0.0;
//--- tüm koşulları kontrol et
   return(Sell_Condition_1 && Sell_Condition_2 && Sell_Condition_3 && Sell_Condition_4);
  }


3. Satış pozisyonu açma

Satış pozisyonu açma koşulları, alış pozisyonunu kapatma koşulları ile aynıdır.

//+------------------------------------------------------------------+
//| Satış pozisyonu açma koşullarını kontrol et                      |
//+------------------------------------------------------------------+
bool CSignalADX_MA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
//--- koşul 1: mevcut ve son tamamlanmış çubukta hareketli ortalama düşüyor
   bool Sell_Condition_1=(StateEMA(0)<0 && StateEMA(1)<0);
//--- koşul 2: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha düşük
   bool Sell_Condition_2=(StateClose(1)<0);
//--- koşul 3: mevcut çubuğun ADX değeri, minimum değerden daha yüksek (trend varlığının kontrolü için)
   bool Sell_Condition_3=(MainADX(0)>m_minimum_ADX);
//--- koşul 4: mevcut çubuğun DI- değeri, DI+ değerinden daha yüksek
   bool Sell_Condition_4=(StateADX(0)<0);
//---
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//--- tüm koşulları kontrol et
   return(Sell_Condition_1 && Sell_Condition_2 && Sell_Condition_3 && Sell_Condition_4);
  }


4. Satış pozisyonunu kapatma

Satış pozisyonunu kapatma koşulları, alış pozisyonu açma koşulları ile aynıdır.

//+------------------------------------------------------------------+
//| Satış pozisyonunu kapatma koşullarını kontrol et                 |
//+------------------------------------------------------------------+
bool CSignalADX_MA::CheckCloseShort(double& price)
  {
//--- koşul 1: mevcut ve son tamamlanmış çubukta hareketli ortalama artıyor
   bool Buy_Condition_1=(StateEMA(0)>0 && StateEMA(1)>0);
//--- koşul 2: son tamamlanmış çubuğun kapanış fiyatı hareketli ortalamadan daha yüksek 
   bool Buy_Condition_2=(StateClose(1)>0);
//--- koşul 3: mevcut çubuğun ADX değeri, minimum değerden daha yüksek (trend varlığının kontrolü için)
    bool Buy_Condition_3=(MainADX(0)>m_minimum_ADX);
//--- koşul 4: mevcut çubuğun DI+ değeri, DI- değerinden daha yüksek
   bool Buy_Condition_4=(StateADX(0)>0);
//---
   price=0.0;
//--- tüm koşulları kontrol et
  return(Buy_Condition_1 && Buy_Condition_2 && Buy_Condition_3 && Buy_Condition_4);
  }

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 price crossover with MA confirmed by ADX" sinyal türünü seçin:

Şekil 2. MQL5 Sihirbazından "Signals based on price crossover with MA confirmed by ADX" sinyal türünü seçin

Şekil 2. MQL5 Sihirbazından "Signals based on price crossover with MA confirmed by ADX" 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,  PeriodADX=33, MinimumADX=22, PeriodMA=39, StopLoss=400, TakeProfit=900).

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. ADX göstergesiyle onaylı olarak fiyatın MA'yı çaprazlamasına dayalı Uzman Danışmanın geçmişe dönük test sonuçları

Şekil 3. ADX göstergesiyle onaylı olarak fiyatın MA'yı çaprazlamasına dayalı Uzman Danışmanın geçmişe dönük test sonuçları


Ekler: CSignalADX_MA sınıfına sahip SignalADX-MA.mqh dosyası, terminal_veri_klasörü\MQL5\Include\Expert\Signal klasörüne yerleştirilmelidir.

ma_crossover_adx.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/258

MQL5 Sihirbazı - Üç Hareketli Ortalama Göstergesine Dayalı Ticaret Sinyalleri MQL5 Sihirbazı - Üç Hareketli Ortalama Göstergesine Dayalı Ticaret Sinyalleri

Bu bölümde üç hareketli ortalamaya dayalı ticaret sinyalleri açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.

MQL5 Sihirbazı - Fiyatın Moving Average Göstergesini Çaprazlamasına Dayalı Ticaret Sinyalleri MQL5 Sihirbazı - Fiyatın Moving Average Göstergesini Çaprazlamasına Dayalı Ticaret Sinyalleri

Bu bölümde fiyatın Moving Average göstergesini çaprazlamasına dayalı ticaret sinyalleri (MQL5 Standart Kütüphanesinden CsignalMA) açıklanmaktadır. Bu stratejiye dayalı olan Uzman Danışman kodu, MQL5 Sihirbazı kullanılarak otomatik olarak oluşturulabilir.

MQL5 Sihirbazı - İki EMA Göstergesinin Çaprazlamasına Dayalı Ticaret Sinyalleri MQL5 Sihirbazı - İki EMA Göstergesinin Çaprazlamasına Dayalı Ticaret Sinyalleri

Bu bölümde 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.

MQL5 Sihirbazı - MACD Göstergesinin Ana ve Sinyal Çizgilerinin Çaprazlamasına Dayalı Ticaret Sinyalleri MQL5 Sihirbazı - MACD Göstergesinin Ana ve Sinyal Çizgilerinin Çaprazlamasına Dayalı Ticaret Sinyalleri

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.