Ticaret robotlarını ücretsiz olarak nasıl indirebileceğinizi izleyin
Bizi Facebook ü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
Kütüphaneler

MQL5 Sihirbazı - Mum Modelleri Sınıfı - MetaTrader 5 için kütüphane

Görüntülemeler:
254
Derecelendirme:
(83)
Yayınlandı:
2022.03.09 15:27
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. 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 CCandlePattern sınıfı ele alınacak; CCandlePattern sınıfı, MQL5 Sihirbazı için mum modellerine dayalı ticaret sinyali sınıflarının oluşturulmasını basitleştirmeye olanak tanır.


CCandlePattern sınıfı

CCandlePattern sınıfı, CExpertSignal sınıfından (ticaret sinyallerinin temel sınıfı) türer.

class CCandlePattern : public CExpertSignal
  {
protected:
   //--- göstergeler
   CiMA              m_MA;
   //--- zaman serisi
   CiOpen            m_open;
   CiHigh            m_high;
   CiLow             m_low;
   CiClose           m_close;
   //--- girdi parametreleri
   int               m_ma_period;

public:
   //--- yapıcı
                     CCandlePattern();
   //--- girdi parametresi ayarları metodu
   void              MAPeriod(int period)             { m_ma_period=period;                 } 
   //--- başlatma metotları
   virtual bool      ValidationSettings();
   virtual bool      InitIndicators(CIndicators *indicators);

   //--- belirli bir mum modelinin oluşumunu kontrol et
   bool              CheckCandlestickPattern(ENUM_CANDLE_PATTERNS CandlePattern);
   //--- boğa/ayı tipi mum modelinin oluşumunu kontrol et
   bool              CheckPatternAllBullish();
   bool              CheckPatternAllBearish();

protected:
   //--- göstergeleri ve zaman serisini başlat
   bool              InitMA(CIndicators *indicators);
   bool              InitOpen(CIndicators *indicators);
   bool              InitHigh(CIndicators *indicators);
   bool              InitLow(CIndicators *indicators);
   bool              InitClose(CIndicators *indicators);
   //--- mum kontrolü için kullanılan metotlar
   double            AvgBodySize(int ind);
   double            MA(int ind)                const { return(m_MA.Main(ind));             }
   double            Open(int ind)              const { return(m_open.GetData(ind));        }
   double            High(int ind)              const { return(m_high.GetData(ind));        }
   double            Low(int ind)               const { return(m_low.GetData(ind));         }
   double            Close(int ind)             const { return(m_close.GetData(ind));       }
   double            CloseAvg(int ind)          const { return(MA(ind));                    }
   double            MidPoint(int ind)          const { return(0.5*(High(ind)+Low(ind)));   }
   double            MidOpenClose(int ind)      const { return(0.5*(Open(ind)+Close(ind))); }
   //--- belirli bir mum modelinin kontrolü için metotlar
   bool              CheckPatternThreeBlackCrows();
   bool              CheckPatternThreeWhiteSoldiers();
   bool              CheckPatternDarkCloudCover();
   bool              CheckPatternPiercingLine();
   bool              CheckPatternMorningDoji();
   bool              CheckPatternEveningDoji();
   bool              CheckPatternBearishEngulfing();
   bool              CheckPatternBullishEngulfing();
   bool              CheckPatternEveningStar();
   bool              CheckPatternMorningStar();
   bool              CheckPatternHammer();
   bool              CheckPatternHangingMan();
   bool              CheckPatternBearishHarami();
   bool              CheckPatternBullishHarami();
   bool              CheckPatternBearishMeetingLines();
   bool              CheckPatternBullishMeetingLines();
  };


Ticaret sinyali sınıflarında CCandlePattern sınıfını kullanma

CCandlePattern sınıfı, MQL5 Sihirbazı için ticaret sinyali sınıflarında bir üst sınıf olarak kullanılabilir. Ticaret sinyali sınıfının CCandlePattern sınıfından türetilmesi ve ayrıca ticaret koşullarının oluşumunun kontrolü için metotlar eklenmesi gerekir (göstergeler ve benzerine ek olarak).

Terse dönüş mum modelinin oluşumu bir ticaret sinyali olarak kullanılabilir, ancak onayını kontrol etmek daha iyidir (örneğin, osilatörleri kullanarak).

  • bool CheckOpenLong(double &price,double &sl,double &tp,datetime &expiration) - alış pozisyonu açma koşullarını kontrol et;
  • bool CheckCloseLong(double &price)  - alış pozisyonunu kapatma koşullarını kontrol et;
  • bool CheckOpenShort(double &price,double &sl,double &tp,datetime &expiration) - satış pozisyonu açma koşullarını kontrol et;
  • bool CheckCloseShort(double &price) - satış pozisyonunu kapatma koşullarını kontrol et;
//+------------------------------------------------------------------+
//|                                          CSampleCandleSignal.mqh |
//+------------------------------------------------------------------+
// CCandlePattern sınıfını dahil et
// mumpatterns.mqh aynı klasörde bulunmalıdır
#include "CandlePatterns.mqh"
// sihirbaz açıklaması başlangıcı
//+------------------------------------------------------------------+
//| Sınıfın açıklaması                                               |
//| Başlık=Test signal                                               |
//| Tür=Signal                                                       |
//| Ad=CSampleCandleSignal                     |
//| Sınıf=CSampleCandleSignal                  |
//| Sayfa=                                                           |
//| Parametre=param1,int,9                                           |
....
//| Parametre=paramN,int,13                                          |
//| Parametre=MAPeriod,int,12                                        |
//+------------------------------------------------------------------+
// sihirbaz açıklaması sonu
//+------------------------------------------------------------------+
class CSampleCandleSignal : public CCandlePattern
  {
protected:
   //--- göstergeler
   ....
   //--- girdi parametreleri
   ...
public:
   //--- yapıcı
                     CTestClass();
   //--- girdi parametrelerinin ayarlanması için metotlar
   ...
   //--- göstergeleri ve zaman serisini başlat/girdi parametrelerini kontrol et
   virtual bool      ValidationSettings();
   virtual bool      InitIndicators(CIndicators *indicators);
   //--- checking of trade signals
   virtual bool      CheckOpenLong(double &price,double &sl,double &tp,datetime &expiration);
   virtual bool      CheckCloseLong(double &price);
   virtual bool      CheckOpenShort(double &price,double &sl,double &tp,datetime &expiration);
   virtual bool      CheckCloseShort(double &price);

protected:
   //--- göstergeleri başlatma metotları
   ...
   //--- gösterge değerlerine erişme metotları
   ...
  };

MQL5 Sihirbazında kullanılan ticaret sinyali sınıflarının yapısıyla ilgili ayrıntılar, MQL5 Sihirbazı: Ticaret Sinyali Modülü Nasıl Oluşturulur? makalesinden bulunabilir.

Şu satıra dikkat edin:

//| Parametre=MAPeriod,int,12                                        |

(sihirbaz açıklaması bölümünden)

MAPeriod metodu, CCandlePattern üst sınıfında, mumun kapanış fiyatının hareketli ortalamasının ve mum gövdesinin ortalama değerlerinin hesaplanması için kullanılır. Varsayılan olarak, CCandlePattern() sınıf yapıcısında m_ma_period=12 olarak ayarlanır. Ancak, bu değerin girdi parametresinin kullanılarak ayarlanması daha iyidir, böylece bu değer için değişim yapma imkanı MetaTrader 5'in Strateji Sınayıcısında mümkün olur.


Üst sınıfın ValidationSettings() ve InitIndicators() metotlarını çağırma

İlgili sınıf metotlarında üst sınıfın CCandlePattern::ValidationSettings ve CCandlePattern::InitIndicators metotlarını çağırmanın gerekli olduğunu unutmayın.

Önce bu metotları çağırmak daha iyidir:

bool CSampleCandleSignal ::ValidationSettings()
  {
//--- üst CCandlePattern sınıfının ValidationSettings metodunu çağır
   if(!CCandlePattern::ValidationSettings()) return(false);
//--- kodunuz
..
//--- tamam
   return(true);
  }

Aynısı InitIndicators() metodu için de geçerlidir:

bool CSampleCandleSignal ::InitIndicators(CIndicators *indicators)
  {
//--- üst CCandlePattern sınıfının InitIndicators metodunu çağır
   if(!CCandlePattern::InitIndicators(indicators)) return(false);   
//--- kodunuz
...
//--- tamam
   return(true);
  }


Mum modellerini kontrol etme

Belirli bir mum modelinin oluşumunun kontrolü, parametre olarak belirtilen model için CheckCandlestickPattern(ENUM_CANDLE_PATTERNS CandlePattern) metodu çağrılarak gerçekleştirilir.

Ayrıca CheckPatternAllBullish() ve CheckPatternAllBearish() metotlarını kullanarak boğa/ayı tipinde mum modellerinin ayrı ayrı oluşumunu da kontrol edebilirsiniz.

Mum modelleriyle çalışmayı basitleştirmek için ENUM_CANDLE_PATTERNS numaralandırması kullanılır:

enum ENUM_CANDLE_PATTERNS  // mum modelleri listesi
  {
   CANDLE_PATTERN_THREE_BLACK_CROWS     = 1,
   CANDLE_PATTERN_THREE_WHITE_SOLDIERS  = 2,
   CANDLE_PATTERN_DARK_CLOUD_COVER      = 3,
   CANDLE_PATTERN_PIERCING_LINE         = 4,
   CANDLE_PATTERN_MORNING_DOJI          = 5,
   CANDLE_PATTERN_EVENING_DOJI          = 6,
   CANDLE_PATTERN_BEARISH_ENGULFING     = 7,
   CANDLE_PATTERN_BULLISH_ENGULFING     = 8,
   CANDLE_PATTERN_EVENING_STAR          = 9,
   CANDLE_PATTERN_MORNING_STAR          = 10,
   CANDLE_PATTERN_HAMMER                = 11,
   CANDLE_PATTERN_HANGING_MAN           = 12,
   CANDLE_PATTERN_BEARISH_HARAMI        = 13,
   CANDLE_PATTERN_BULLISH_HARAMI        = 14,
   CANDLE_PATTERN_BEARISH_MEETING_LINES = 15,
   CANDLE_PATTERN_BULLISH_MEETING_LINES = 16
  };

Boğa tipi mum modellerini kontrol etme:

///--- 3 beyaz asker mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS)

///--- delici hat mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE)

///--- sabah dojisi mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI)

///--- boğa tipi yutucu mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING)

///--- boğa tipi harami mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)

///--- sabah yıldızı mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR)

///--- boğa tipi buluşan hat mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES)

///--- çekiç mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_HAMMER)

///--- herhangi bir boğa tipi mum modeli oluşumunu kontrol et
  CheckPatternAllBullish();

Ayı tipi mum modellerini kontrol etme:

///--- 3 kara karga mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS)

///--- kara bulut örtüsü mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER)

///--- akşam dojisi mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI)

///--- ayı tipi yutucu mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING)

///--- akşam yıldızı mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR)

///--- asılı adam mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN)

///--- ayı tipi harami mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)

///--- ayı tipi buluşan hat mum modelinin oluşumunu kontrol et
  CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES)

///--- herhangi bir ayı tipi mum modeli oluşumunu kontrol et
  CheckPatternAllBearish();

Metotların kullanımına ilişkin örnekler:

1. Alış pozisyonu açma

//+------------------------------------------------------------------+
//| Alış pozisyonu açma koşullarını kontrol et                       |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckOpenLong(double &price,double &sl,double &tp,datetime &expiration)
  {
//--- alış pozisyonu açma koşullarını kontrol et
//--- gösterge kontrolüne ek olarak bu kodu kullanmak daha iyidir
//--- örneğin, 3 beyaz asker mum modelinin oluşumunu kontrol edelim:
   if CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) return(true):
//--- sinyal yok
   return(false);
  }

2. Alış pozisyonunu kapatma

//-------------------------------------------------------------------+
//| Alış pozisyonunu kapatma koşullarını kontrol et                  |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckCloseLong(double &price)
  {
//--- alış pozisyonunu kapatma koşullarını kontrol et
//--- örneğin, ayı tipi mum modellerinden birinin oluşumunu kontrol edelim:
   if CheckPatternAllBearish() return(true):
//--- sinyal yok
   return(false);
  }

3. Satış pozisyonu açma

//-------------------------------------------------------------------+
//| Satış pozisyonu açma koşullarını kontrol et                      |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckOpenShort(double &price,double &sl,double &tp,datetime &expiration)
  {
//--- satış pozisyonu açma koşullarını kontrol et
//--- gösterge kontrolüne ek olarak bu kodu kullanmak daha iyidir
//--- örneğin, 3 kara karga mum modelinin oluşumunu kontrol edelim:
    if CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) return(true):
//--- sinyal yok
   return(false);
  }

4. Satış pozisyonunu kapatma

//-------------------------------------------------------------------+
//| Satış pozisyonunu kapatma koşullarını kontrol et                 |
//+------------------------------------------------------------------+
bool CSampleCandleSignal::CheckCloseShort(double &price)
  {
//--- satış pozisyonunu kapatma koşullarını kontrol et
//--- gösterge kontrolüne ek olarak bu kodu kullanmak daha iyidir
//--- örneğin, boğa tipi mum modellerinden birinin oluşumunu kontrol edelim:
   if CheckPatternAllBullish() return(true):
//--- sinyal yok
   return(false);
  }

Öneriler

Yanlış sinyalleri azaltmak için, terse dönüş mum modelleri, osilatörler gibi diğer göstergeler tarafından onaylanmalıdır.

"Стратегии Лучших Трейдеров Мира" (Dünyanın En İyi Yatırımcılarının Stratejileri) adlı kitapta şu mum modelleri ele alınır:

  • 3 kara karga / 3 beyaz asker
  • kara bulut örtüsü / delici hat
  • sabah dojisi / akşam dojisi
  • ayı tipi yutucu / boğa tipi yutucu
  • akşam yıldızı / sabah yıldızı
  • çekiç / asılı adam
  • ayı tipi harami / boğa tipi harami
  • ayı tipi buluşan hat / boğa tipi buluşan hat

(Stochastic, CCI, MFI ve RSI osilatörleri tarafından onaylı olarak).

Daha sonraki bölümlerde, bu mum modellerine dayalı ticaret sinyali sınıflarının uygulanmasına ilişkin örnekler ele alınacak.

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

Demo_Create_OBJ_BITMAP_Script Demo_Create_OBJ_BITMAP_Script

OBJ_BITMAP türünde nesne kullanılarak oluşturulan grafik arka plan görüntüsü örneği.

Demo_Create_OBJ_BITMAP_LABEL_EA Demo_Create_OBJ_BITMAP_LABEL_EA

OBJ_BITMAP_LABEL türünde nesne kullanılarak oluşturulan düğme örneği.

Demo_resource_EA Demo_resource_EA

Kaynakların kullanımına örnek. OBJ_BITMAP_LABEL türünde nesne kullanarak bir düğme oluşturur.

Demo_DRAW_ZIGZAG Demo_DRAW_ZIGZAG

DRAW_ZIGZAG çizim stilinin kullanımına ilişkin basit bir örnek.