English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Italiano
preview
DeMarker göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?

DeMarker göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?

MetaTrader 5Ticaret | 28 Eylül 2023, 15:02
297 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

En popüler teknik göstergelere dayalı ticaret sistemleri geliştirdiğimiz serimizin yeni makalesine hoş geldiniz. Ticarette lehimize kullanabileceğimiz yeni bir teknik aracı, göstergeyi ayrıntılı olarak inceleyeceğiz. Bu gösterge DeMarker göstergesidir, onu aşağıdaki konular aracılığıyla ele alacağız:

  1. DeMarker göstergesinin tanımı
  2. DeMarker göstergesi stratejileri
  3. DeMarker göstergesine dayalı ticaret sisteminin planı
  4. DeMarker göstergesine dayalı ticaret sistemi
  5. Sonuç

Bu makale boyunca, kodlarımızı yazmak için MetaQuotes Language 5 (MQL5) programlama dilini ve MetaTrader 5 işlem platformunda yerleşik MetaEditor kod düzenleyicisini kullanacağız. MetaTrader 5’in nasıl kurulacağı ve MetaEditor’ın nasıl kullanılacağı hakkında daha fazla bilgi edinmek istiyorsanız, önceki makalelerimden birinde yer alan "MetaEditor’da MQL5 kodu yazma" bölümünü okuyabilirsiniz.

Ticaret ve programlama becerilerinizi geliştirmek ve maksimum faydayı elde etmek istiyorsanız, bu makalede öğrendiklerinizi kendi başınıza uygulamanızı tavsiye ederim çünkü pratik, herhangi bir öğrenme adımında çok önemli bir faktördür. Bahsedilecek stratejilerin temel amacının göstergenin arkasındaki ana konsepti kavramak olduğunu belirtmek isterim. Dolayısıyla, temel amaç yalnızca eğitimdir ve ticaretiniz için kârlı veya uygun olacağından emin olmak için bir gerçek hesapta kullanmadan önce herhangi bir stratejiyi derinlemesine test etmelisiniz.

Sorumluluk reddi: Sağlanan tüm bilgiler ’olduğu gibi’ yalnızca bilgilendirme amaçlıdır, ticaret tavsiyesi değildir. Bu bilgiler herhangi bir sonucu garanti etmemektedir. Bu materyalleri herhangi bir işlem hesabında kullanırsanız, ortaya çıkabilecek tüm riskler size ait olacaktır.

DeMarker göstergesinin tanımı

DeMarker göstergesini tanımlamak ve hakkında daha ayrıntılı bilgi edinmek istiyorsak, ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını ve lehimize kullanmak için nasıl değerlendirileceğini öğrenmemiz gerekecektir. DeMarker göstergesi bir osilatör göstergesidir ve teknik analist Thomas DeMark tarafından oluşturulmuştur. Bu göstergenin adının yaratıcısından geldiği açıktır ve "DeM" göstergesi olarak da bilinmektedir. Bu teknik gösterge, ticaret enstrümanına olan talebi ölçer ve mevcut yüksek ve düşük fiyatlarını önceki fiyatlarla karşılaştırarak piyasanın yön eğilimini değerlendirir.

Bu göstergeyi manuel olarak hesaplamak için aşağıdaki adımları izleyebiliriz:

DMark(i) = SMA(DeMax, N) / (SMA(DeMax, N) + SMA(DeMin, N))

Tanımlamalar:

  • DMark(i) = mevcut DeMarker değeri
  • SMA = Simple Moving Average
  • DeMax = DeMarker'ın maksimum değeri
  • N = kullanılan periyot
  • DeMin = DeMarker'ın minimum değeri


DeMax şu şekilde hesaplanabilir:

DeMax(i) = YÜKSEK(i) - YÜKSEK(i-1)

Aksi takdirde:

DeMax(i) = 0


DeMin şu şekilde hesaplanabilir:

DeMin(i) = DÜŞÜK(i-1) - DÜŞÜK(i)

Aksi takdirde:

DeMin(i) = 0

Göstergeyi hesapladıktan sonra, bahsettiğimiz gibi ticaret enstrümanına olan talebi ölçmek için kullanabileceğimiz 0 ila 1 arasında dalgalanan bir osilatör çizgisi ürettiğini görebiliriz. Günümüzde, MetaTrader 5 platformuyla standart olarak gelen hazır bir gösterge bulunduğundan, DeMarker’ı manuel olarak hesaplamamıza gerek yoktur.

Tek yapmamız gereken mevcut göstergeler arasından onu seçmektir:

MetaTrader 5'i açın --> Ekle sekmesine tıklayın --> Göstergeler --> Osilatörler --> DeMarker

DeMarker göstergesini ekleme

Gösterge seçildiğinde, aşağıdaki gösterge parametreleri penceresi açılacaktır:

DeMarker göstergesi parametreleri

1 - periyodu ayarlamak için.

2 - göstergenin çizgisinin rengini ayarlamak için.

3 - göstergenin çizgisinin stilini ayarlamak için.

4 - göstergenin çizgisinin kalınlığını ayarlamak için.

Gösterge için uygun parametreleri ayarladıktan sonra gösterge aşağıdaki gibi grafiğe eklenecektir:

Grafikte DeMarker göstergesi

Yukarıdaki görüntüde, DeMarker göstergesinin grafiğe eklendiğini ve 0 ile 1 arasında salınan bir çizgi olarak alt pencerede görüntülendiğini görüyoruz. Çizginin söz konusu alandaki konumuna göre bu göstergeyi değerlendirebiliriz. Gösterge 0.70'e yaklaşırsa aşırı alış durumu olduğu, 0.30'a yaklaşırsa, aşırı satış durumu olduğu anlamına gelir.

DeMarker göstergesi stratejileri

Bu bölümde, DeMarker göstergesini ana konseptine uygun olarak bazı basit stratejilerle nasıl kullanabileceğimizi göreceğiz. Üç farklı stratejiden bahsedeceğiz.

    Birinci strateji: DeMarker gücü

      Bu stratejiye göre, mevcut DeMarker değeriyle göstergenin son 5 periyotluk ortalamasını karşılaştırarak DeMarker güçlü veya DeMarker zayıf şeklinde sinyaller alacağız. Mevcut DeMarker değeri göstergenin son 5 periyotluk ortalamasından daha yüksekse, bu, DeMarker güçlü sinyali olacaktır. Diğer durumda, mevcut DeMarker değeri göstergenin son 5 periyotluk ortalamasından daha düşükse, bu da DeMarker zayıf sinyali olacaktır.

      Daha basit ifadeyle,

      Mevcut DeMarker değeri >= DeMarker'ın 5 periyotluk ortalaması --> DeMarker güçlü

      Mevcut DeMarker değeri <= DeMarker'ın 5 periyotluk ortalaması --> DeMarker zayıf

        İkinci strateji: DeMarker - OB ve OS

          Bu stratejiye göre, gösterge aşırı alış ve aşırı satış bölgelerine ulaştığında ilgili sinyaller alacağız. Mevcut DeMarker değeri 0.70 seviyesine eşit veya daha yüksekse, bu, aşırı alış bölgesinde olunduğuna dair bir sinyal olacaktır. Mevcut DeMarker değeri 0.30 seviyesine eşit veya daha düşükse, bu da aşırı satış bölgesinde olunduğuna dair bir sinyal olacaktır.

          Daha basit ifadeyle,

          Mevcut DeMarker değeri >= 0.70 --> Aşırı alış

          Mevcut DeMarker değeri <= 0.30 --> Aşırı satış

            Üçüncü strateji: DeMarker - Diverjans

              Bu stratejiye göre, mevcut hareketin değişme olasılığı olduğu konusunda fikir veren boğa veya ayı türü diverjans şeklinde sinyaller alacağız. Bu sinyalleri, mevcut yüksek/düşük, önceki yüksek/düşük, mevcut DeMarker ve önceki DeMarker olmak üzere altı değeri izleyerek elde edeceğiz. Bunun basit bir diverjans durumu olduğunu belirtmekte fayda vardır, en etkili olan, fiyatların en yüksek ve en düşük seviyelerini göstergenin en yüksek ve en düşük seviyeleriyle karşılaştırıp izlemektir. Bu basit durumda, mevcut yüksek değeri önceki yüksek değerinden daha yüksekken mevcut DeMarker değeri önceki DeMarker değerinden daha düşükse, bu, ayı türü diverjans sinyali olacaktır. Eğer mevcut düşük değeri önceki düşük değerinden daha düşükken mevcut DeMarker değeri önceki DeMarker değerinden daha yüksekse, bu da boğa türü diverjans olacaktır.

              Daha basit ifadeyle,

              Mevcut yüksek > Önceki yüksek ve Mevcut DeMarker < Önceki DeMarker --> Ayı türü diverjans

              Mevcut düşük < Önceki düşük ve Mevcut DeMarker > Önceki DeMarker --> Boğa türü diverjans

              DeMarker göstergesine dayalı ticaret sisteminin planı

              Bu bölümde, ele aldığımız stratejiler için ticaret sistemini oluştururken bize yardımcı olması adına ilgili her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırlayacağız.

                Birinci strateji: DeMarker gücü

                  Bu stratejiye göre, ticaret sistemi her tikte mevcut DeMarker değerini ve göstergenin son 5 periyotluk ortalamasını kontrol etmeli ve bu iki değeri birbiriyle karşılaştırmalıdır. Mevcut DeMarker değeri göstergenin son 5 periyotluk ortalamasından daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                  • DeMarker güçlü
                  • Mevcut DeMarker değeri
                  • DeMarker'ın 5 periyotluk ortalaması

                  Diğer senaryoda, mevcut DeMarker değeri göstergenin son 5 periyotluk ortalamasından daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                  • DeMarker zayıf
                  • Mevcut DeMarker değeri
                  • DeMarker'ın 5 periyotluk ortalaması
                  Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:

                  DeMarker gücü planı

                    İkinci strateji: DeMarker - OB ve OS

                      Bu stratejiye göre, ticaret sistemi her tikte mevcut DeMarker değerini kontrol etmeli ve bu değeri göstergenin 0.70 ve 0.30 değerleriyle karşılaştırmalıdır. Mevcut DeMarker değeri 0.70 seviyesine eşit veya daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                      • Aşırı alış
                      • Mevcut DeMarker değeri

                      Diğer senaryoda, mevcut DeMarker 0.30 seviyesine eşit veya daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                      • Aşırı satış
                      • Mevcut DeMarker değeri
                      DeMarker - OB ve OS planı
                        Üçüncü strateji: DeMarker - Diverjans

                          Bu stratejiye göre, ticaret sistemi her tikte altı değeri (mevcut yüksek/düşük, önceki yüksek/düşük, mevcut DeMarker ve önceki DeMarker) kontrol etmeli ve bu değerleri stratejinin koşullarına uygun şekilde karşılaştırarak ilgili sinyali grafik üzerinde yorum olarak görüntülemelidir. Mevcut yüksek değeri önceki yüksek değerinden daha yüksekken mevcut DeMarker değeri önceki DeMarker değerinden daha düşükse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                          • Ayı türü diverjans
                          • Mevcut yüksek değeri
                          • Önceki yüksek değeri
                          • Mevcut DeMarker değeri
                          • Önceki DeMarker değeri

                          Diğer senaryoda, mevcut düşük değeri önceki düşük değerinden daha düşükken mevcut DeMarker değeri önceki DeMarker değerinden daha yüksekse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                          • Boğa türü diverjans
                          • Mevcut düşük değeri
                          • Önceki düşük değeri
                          • Mevcut DeMarker değeri
                          • Önceki DeMarker değeri

                          DeMarker - Diverjans planı

                          DeMarker göstergesine dayalı ticaret sistemi

                          Bu bölümde, hazırladığımız plan çerçevesinde, MetaTrader 5 işlem platformunda kullanılmak üzere, ele aldığımız stratejilere dayalı olarak MQL5 dili aracılığıyla bir ticaret sistemi oluşturacağız. İlk olarak, stratejilerimizin programlarına temel olması adına mevcut DeMarker değerini grafik üzerinde yorum olarak görüntüleyecek basit bir program yazalım. Adım adım nasıl yapılacağını görelim:

                          Birinci adım:

                          Değerlerin kesirli olarak ifade edilmesi için double fonksiyonunu kullanarak DeMarker için bir dizi oluşturalım.

                          double deMarkerArray[];

                          İkinci adım:

                          ArraySetAsSeries fonksiyonunu kullanarak DeMarker dizisini mevcut veriden başlayarak sıralayalım - başarılı olması durumunda true, aksi takdirde false geri döner (bool türü):

                          ArraySetAsSeries(deMarkerArray,true);

                          Üçüncü adım:

                          deMarkerDef için int türü değişken oluşturduktan sonra iDeMarker fonksiyonunu kullanarak DeMarker’ı tanımlayalım. iDeMarker fonksiyonu DeMarker göstergesinin tanıtıcısını geri döndürür. Parametreleri şunlardır:

                          • Sembol adı - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
                          • Zaman dilimi - Mevcut zaman dilimine uygulanmak üzere _Period kullanacağız.
                          • Moving Average periyodu - 14 ayarlayacağız.
                          int deMarkerDef = iDeMarker(_Symbol,_Period,14);

                          Dördüncü adım:

                          CopyBuffer fonksiyonunu kullanarak deMarkerArray dizisini deMarkerDef değerleriyle dolduralım. Parametreleri şunlardır:

                          • Gösterge tanıtıcısı - deMarkerDef gösterge tanımını kullanacağız.
                          • Gösterge arabellek numarası - 0 ayarlayacağız.
                          • Başlangıç konumu - 0 ayarlayacağız.
                          • Kopyalanacak veri miktarı - 3 ayarlayacağız.
                          • Hedef dizi - deMarkerArray ayarlayacağız.
                          CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);

                          Beşinci adım:

                          deMarkerVal için double türü değişken oluşturduktan sonra, double türünde değer geri döndüren NormalizeDouble fonksiyonunu kullanarak mevcut DeMarker değerini hesaplayalım. Parametreleri şunlardır:

                          • Normalleştirilmiş sayı - deMarkerArray[0] kullanacağız.
                          • Ondalık basamak sayısı - 6 ayarlayacağız.
                          double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);

                          Altıncı adım:

                          Comment fonksiyonunu kullanarak mevcut DeMarker değerini grafikte yorum olarak görüntüleyelim:

                          Comment("DeMarker Value is ",deMarkerVal);

                          Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:

                          //+------------------------------------------------------------------+
                          //|                                       Simple DeMarker System.mq5 |
                          //|                                  Copyright 2022, MetaQuotes Ltd. |
                          //|                                             https://www.mql5.com |
                          //+------------------------------------------------------------------+
                          #property copyright "Copyright 2022, MetaQuotes Ltd."
                          #property link      "https://www.mql5.com"
                          #property version   "1.00"
                          //+------------------------------------------------------------------+void OnTick()
                            void OnTick()
                            {
                             double deMarkerArray[];
                          
                             ArraySetAsSeries(deMarkerArray,true);
                          
                             int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                          
                             CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);
                          
                             double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);
                          
                             Comment("DeMarker Value is ",deMarkerVal);
                          
                            }
                          //+------------------------------------------------------------------+
                          

                          Uzman Danışmanın kodunu derliyoruz, böylece onu MetaTrader 5 terminalinde Kılavuz penceresinde bulabiliriz:

                          Kılavuz - Simple DeMarker System

                          Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:

                          Simple DeMarker System penceresi

                          Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:

                          Grafiğe eklenmiş Simple DeMarker System

                          Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı.

                          Böylece, program mevcut DeMarker değerini grafik üzerinde yorum olarak gösterecektir:

                          Yukarıdaki görüntüden görebileceğimiz gibi, Uzman Danışman mevcut DeMarker değerini grafiğin sol üst köşesinde yorum olarak görüntülemektedir.

                            Birinci strateji: DeMarker gücü

                              Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:

                              //+------------------------------------------------------------------+
                              //|                                            DeMarker Strength.mq5 |
                              //|                                  Copyright 2022, MetaQuotes Ltd. |
                              //|                                             https://www.mql5.com |
                              //+------------------------------------------------------------------+
                              #property copyright "Copyright 2022, MetaQuotes Ltd."
                              #property link      "https://www.mql5.com"
                              #property version   "1.00"
                              //+------------------------------------------------------------------+
                              void OnTick()
                                {
                                 double deMarkerArray[];
                              
                                 ArraySetAsSeries(deMarkerArray,true);
                              
                                 int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                              
                                 CopyBuffer(deMarkerDef,0,0,6,deMarkerArray);
                              
                                 double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                 double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4);
                                 double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4);
                                 double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4);
                                 double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4);
                                 double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4);
                              
                                 double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5;
                              
                              
                                 if(deMarkerVal>deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is strong","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }
                              
                                 if(deMarkerVal<deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is weak","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

                              Bu koddaki farklılıklar şunlardır:

                              Burada yalnızca mevcut DeMarker değerini değil, aynı zamanda önceki beş DeMarker değerini de tanımlıyoruz:

                                 double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                 double deMarkerVal1 = NormalizeDouble(deMarkerArray[1],4);
                                 double deMarkerVal2 = NormalizeDouble(deMarkerArray[2],4);
                                 double deMarkerVal3 = NormalizeDouble(deMarkerArray[3],4);
                                 double deMarkerVal4 = NormalizeDouble(deMarkerArray[4],4);
                                 double deMarkerVal5 = NormalizeDouble(deMarkerArray[5],4);

                              Önceki beş DeMarker değerinin ortalamasını (deMarkerAvgVal) hesaplıyoruz:

                              double deMarkerAvgVal = (deMarkerVal1+deMarkerVal2+deMarkerVal3+deMarkerVal4+deMarkerVal5)/5;

                              Stratejinin koşulları:

                              Mevcut DeMarker değerini hesapladığımız deMarkerAvgVal değeriyle karşılaştırarak uygun sinyali elde edeceğiz. Bu amaçla "If" fonksiyonunu ve söz dizimini kullanacağız:

                              if(ifade) --> operatör

                              “DeMarker güçlü” durumunda, deMarkerVal, deMarkerAvgVal'dan daha yüksek olmalı (bu, söz dizimindeki ifadedir), bu gerçekleştiğinde de ticaret sistemi grafikte yorum olarak DeMarker güçlü sinyalini geri döndürmelidir (bu, söz dizimindeki operatördür).

                                 if(deMarkerVal>deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is strong","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }

                              “DeMarker zayıf” durumunda ise, deMarkerVal, deMarkerAvgVal'dan daha düşük olmalı (bu, söz dizimindeki ifadedir), bu gerçekleştiğinde de ticaret sistemi grafikte yorum olarak DeMarker zayıf sinyalini geri döndürmelidir (bu, söz dizimindeki operatördür).

                                 if(deMarkerVal<deMarkerAvgVal)
                                   {
                                    Comment("DeMarker is weak","\n",
                                            "Current DeMarker Value is ",deMarkerVal,"\n",
                                            "AVG DeMarker Value is ",deMarkerAvgVal);
                                   }

                              Uzman Danışmanın kodunu derliyoruz ve grafiğe ekliyoruz:

                              Grafiğe eklenmiş DeMarker Strength

                              Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı. Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:

                              DeMarker güçlü:

                              DeMarker Strength - DeMarker güçlü sinyali

                              Yukarıdaki görüntüden görebileceğimiz gibi, program DeMarker güçlü koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

                              • DeMarker güçlü --> çünkü mevcut DeMarker değeri göstergenin son beş değerinin ortalamasının üzerindedir
                              • Mevcut DeMarker değeri
                              • DeMarker'ın 5 periyotluk ortalaması 

                              DeMarker zayıf:

                              DeMarker Strength - DeMarker zayıf sinyali

                              Yukarıdaki görüntüden görebileceğimiz gibi, program DeMarker zayıf koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

                              • DeMarker zayıf --> çünkü mevcut DeMarker değeri göstergenin son beş değerinin ortalamasının altındadır
                              • Mevcut DeMarker değeri
                              • DeMarker'ın 5 periyotluk ortalaması 
                                İkinci strateji: DeMarker - OB ve OS

                                  Aşağıda bu stratejinin tam kodu yer almaktadır:

                                  //+------------------------------------------------------------------+
                                  //|                                       Simple DeMarker System.mq5 |
                                  //|                                  Copyright 2022, MetaQuotes Ltd. |
                                  //|                                             https://www.mql5.com |
                                  //+------------------------------------------------------------------+
                                  #property copyright "Copyright 2022, MetaQuotes Ltd."
                                  #property link      "https://www.mql5.com"
                                  #property version   "1.00"
                                  //+------------------------------------------------------------------+void OnTick()
                                  void OnTick()
                                    {
                                     double deMarkerArray[];
                                  
                                     ArraySetAsSeries(deMarkerArray,true);
                                  
                                     int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                  
                                     CopyBuffer(deMarkerDef,0,0,3,deMarkerArray);
                                  
                                     double deMarkerVal = NormalizeDouble(deMarkerArray[0],6);
                                  
                                  
                                     if(deMarkerVal<=0.30)
                                       {
                                        Comment("Oversold","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }
                                  
                                     if(deMarkerVal>=0.70)
                                       {
                                        Comment("Overbought","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }
                                     if(deMarkerVal>0.30 && deMarkerVal<0.70)
                                       {
                                        Comment("DeMarker Value is ",deMarkerVal);
                                       }
                                  
                                    }
                                  //+------------------------------------------------------------------+
                                  

                                  Bu koddaki farklılıklar şunlardır:

                                  Stratejinin koşulları:

                                  “Aşırı satış” durumunda, deMarkerVal, 0.30'dan daha düşük olmalı (ifade), bu gerçekleştiğinde de ticaret sistemi grafikte yorum olarak aşırı satış sinyalini geri döndürmelidir (operatör).

                                     if(deMarkerVal<=0.30)
                                       {
                                        Comment("Oversold","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }

                                  “Aşırı alış” durumunda ise, deMarkerVal, 0.70'den daha yüksek olmalı (ifade), bu gerçekleştiğinde de ticaret sistemi grafikte yorum olarak aşırı alış sinyalini geri döndürmelidir (operatör).

                                     if(deMarkerVal>=0.70)
                                       {
                                        Comment("Overbought","\n",
                                                "DeMarker Value is ",deMarkerVal);
                                       }

                                  deMarkerVal’ın 0.30 ile 0.70 arasında olması durumunda ise (ifade), grafikte mevcut DeMarker değeri haricinde herhangi bir sinyal gösterilmeyecektir (operatör).

                                     if(deMarkerVal>0.30 && deMarkerVal<0.70)
                                       {
                                        Comment("DeMarker Value is ",deMarkerVal);
                                       }

                                  Uzman Danışmanın kodunu derliyoruz ve grafiğe ekliyoruz:

                                  Grafiğe eklenmiş DeMarker OB - OS

                                  Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı. Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:

                                  Aşırı alış:

                                  DeMarker OB - OS - Aşırı alış sinyali

                                  Yukarıdaki görüntüden görebileceğimiz gibi, program aşırı alış koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

                                  • Aşırı alış
                                  • Mevcut DeMarker değeri

                                  Aşırı satış:

                                  DeMarker OB - OS - Aşırı satış sinyali

                                  Yukarıdaki görüntüden görebileceğimiz gibi, program aşırı satış koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

                                  • Aşırı satış
                                  • Mevcut DeMarker değeri

                                  Sinyal olmaması durumunda:

                                  DeMarker OB - OS - Sinyal yok

                                  Bu durumda da, grafikte mevcut DeMarker değeri haricinde herhangi bir sinyal görünmemektedir.

                                    Üçüncü strateji: DeMarker - Diverjans

                                      Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:

                                      //+------------------------------------------------------------------+
                                      //|                                          DeMarker Divergence.mq5 |
                                      //|                                  Copyright 2022, MetaQuotes Ltd. |
                                      //|                                             https://www.mql5.com |
                                      //+------------------------------------------------------------------+
                                      #property copyright "Copyright 2022, MetaQuotes Ltd."
                                      #property link      "https://www.mql5.com"
                                      #property version   "1.00"
                                      //+------------------------------------------------------------------+
                                      void OnTick()
                                        {
                                         double deMarkerArray[];
                                         MqlRates pArray[];
                                      
                                      
                                         ArraySetAsSeries(deMarkerArray,true);
                                         ArraySetAsSeries(pArray,true);
                                      
                                         int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                         int pData = CopyRates(_Symbol,_Period,0,14,pArray);
                                      
                                         CopyBuffer(deMarkerDef,0,0,14,deMarkerArray);
                                      
                                         double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                         double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4);
                                      
                                         double currentHigh = NormalizeDouble(pArray[0].high,6);
                                         double currentLow = NormalizeDouble(pArray[0].low,6);
                                         double prevHigh = NormalizeDouble(pArray[1].high,6);
                                         double prevLow = NormalizeDouble(pArray[1].low,6);
                                      
                                         if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal)
                                           {
                                            Comment("Bearish divergence","\n",
                                                    "Current High is ",currentHigh,"\n",
                                                    "Prev. High Value is ",prevHigh,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }
                                         if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal)
                                           {
                                            Comment("Bullish divergence","\n",
                                                    "Current Low is ",currentLow,"\n",
                                                    "Prev. Low Value is ",prevLow,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }
                                      
                                        }
                                      //+------------------------------------------------------------------+
                                      

                                      Bu koddaki farklılıklar şunlardır:

                                      İki dizi oluşturuyoruz: daha önce yaptığımız gibi double fonksiyonunu kullanarak DeMarker için ve fiyat, hacim ve makas bilgilerini depolayan MqlRates fonksiyonunu kullanarak fiyatlar için:

                                         double deMarkerArray[];
                                         MqlRates pArray[];

                                      Oluşturulan bu dizileri sıralıyoruz.

                                         ArraySetAsSeries(deMarkerArray,true);
                                         ArraySetAsSeries(pArray,true);

                                      deMarketDef ve pData’yı tanımlıyoruz:

                                         int deMarkerDef = iDeMarker(_Symbol,_Period,14);
                                         int pData = CopyRates(_Symbol,_Period,0,14,pArray);

                                      deMarkerArray dizisini dolduruyoruz:

                                      CopyBuffer(deMarkerDef,0,0,14,deMarkerArray);

                                      deMarkerVal, deMarkerPrevVal, currentHigh, currentLow, prevHigh ve prevLow değerlerini tanımlıyoruz:

                                         double deMarkerVal = NormalizeDouble(deMarkerArray[0],4);
                                         double deMarkerPrevVal = NormalizeDouble(deMarkerArray[1],4);
                                      
                                         double currentHigh = NormalizeDouble(pArray[0].high,6);
                                         double currentLow = NormalizeDouble(pArray[0].low,6);
                                         double prevHigh = NormalizeDouble(pArray[1].high,6);
                                         double prevLow = NormalizeDouble(pArray[1].low,6);

                                      Stratejinin koşulları:

                                      Ayı türü diverjans:

                                         if(currentHigh>prevHigh && deMarkerVal<deMarkerPrevVal)
                                           {
                                            Comment("Bearish divergence","\n",
                                                    "Current High is ",currentHigh,"\n",
                                                    "Prev. High Value is ",prevHigh,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }

                                      Boğa türü diverjans:

                                         if(currentLow<prevLow && deMarkerVal>deMarkerPrevVal)
                                           {
                                            Comment("Bullish divergence","\n",
                                                    "Current Low is ",currentLow,"\n",
                                                    "Prev. Low Value is ",prevLow,"\n",
                                                    "Current DeMarker Value is ",deMarkerVal,"\n",
                                                    "Prev. DeMarker Value is ",deMarkerPrevVal);
                                           }

                                      Uzman Danışmanın kodunu derliyoruz ve grafiğe ekliyoruz:

                                      Grafiğe eklenmiş DeMarker Divergence

                                      Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı. Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:

                                       Boğa türü diverjans:

                                      DeMarker Divergence - Boğa türü diverjans sinyali

                                      Yukarıdaki görüntüden görebileceğimiz gibi, program boğa türü diverjans koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

                                      • Boğa türü diverjans
                                      • Mevcut yüksek değeri
                                      • Önceki yüksek değeri
                                      • Mevcut DeMarker değeri
                                      • Önceki DeMarker değeri

                                      Ayı türü diverjans:

                                      DeMarker Divergence - Ayı türü diverjans sinyali

                                      Yukarıdaki görüntüden görebileceğimiz gibi, program ayı türü diverjans koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

                                      • Ayı türü diverjans
                                      • Mevcut yüksek değeri
                                      • Önceki yüksek değeri
                                      • Mevcut DeMarker değeri
                                      • Önceki DeMarker değeri

                                      Sonuç

                                      Bu makalede DeMarker teknik göstergesini detaylıca inceledik. İlk olarak, ne olduğu, neyi ölçtüğü, manuel olarak nasıl hesaplandığı hakkında konuştuk. Sonrasında, bazı basit stratejileri ele alarak onu ticaretimizde nasıl kullanabileceğimizi gördük. Bu basit stratejiler şunlardı:

                                      • DeMarker gücü: mevcut DeMarker değerine ve son beş DeMarker değerinin ortalamasına dayalı olarak DeMarker güçlü veya DeMarker zayıf şeklinde sinyaller almak için.
                                      • DeMarker - OB ve OS: 0'dan 1'e kadar olan ölçekte mevcut DeMarker değerinin konumuna göre aşırı alış veya aşırı satış şeklinde sinyaller almak için.
                                      • DeMarker - Diverjans: mevcut yüksek/düşük, önceki yüksek/düşük, mevcut DeMarker ve önceki DeMarker değerlerine dayalı olarak boğa veya ayı türü diverjans şeklinde sinyaller almak için.

                                      Ardından, ele aldığımız stratejiler için ticaret sistemini oluştururken bize yardımcı olması adına ilgili her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırladık. Son olarak da, makalenin en ilginç bölümüne geldik ve hazırladığımız plan çerçevesinde, MetaTrader 5 işlem platformunda kullanılmak üzere, ele aldığımız stratejilere dayalı olarak MQL5 dili aracılığıyla bir ticaret sistemi oluşturduk.

                                      Şunu her zaman olduğu gibi tekrar hatırlatmak istiyorum: herhangi bir stratejiyi bir gerçek hesapta kullanmadan önce onu tam anlamıyla test ettiğinizden emin olmalısınız. Başkaları için yararlı olan bir şey, sizin için mutlaka yararlı olmayabilir. Umarım makale sizin için faydalı olur ve ticaret hedeflerinize ulaşmanıza, bu veya başka herhangi bir konuda yeni fikirler bulmanıza yardım sağlar. Bu makaleyi beğendiyseniz ve buna benzer makaleler okumak istiyorsanız, en popüler teknik göstergelere dayalı ticaret sistemlerinin nasıl geliştirileceğini öğrenme konulu bu serideki diğer makaleleri de okuyabilirsiniz.

                                      MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
                                      Orijinal makale: https://www.mql5.com/en/articles/11394

                                      Popülasyon optimizasyon algoritmaları: Balık sürüsü arama (Fish School Search, FSS) Popülasyon optimizasyon algoritmaları: Balık sürüsü arama (Fish School Search, FSS)
                                      Balık sürüsü arama (Fish School Search, FSS) algoritması, %80'e varan çoğunluğu türdeş organize topluluklar halinde yüzen balıkların sürü içerisindeki davranışlarından esinlenen yeni bir optimizasyon algoritmasıdır. Balık kümelerinin, yiyecek arama ve avcılardan korunma verimliliğinde önemli bir rol oynadığı kanıtlanmıştır.
                                      Mağazadan bir Uzman Danışman seçmenin doğru yolu Mağazadan bir Uzman Danışman seçmenin doğru yolu
                                      Bu makalede, bir Uzman Danışman satın alırken dikkat etmeniz gereken bazı önemli noktaları ele alacağız. Ayrıca kârı artırmanın, akıllıca para harcamanın ve bu harcamalardan kazanç elde etmenin yollarını arayacağız. Ek olarak, makaleyi okuduktan sonra, basit ve ücretsiz ürünler kullanarak bile kazanç elde etmenin mümkün olduğunu göreceksiniz.
                                      Relative Vigor Index göstergesine dayalı bir ticaret sistemi nasıl geliştirilir? Relative Vigor Index göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?
                                      En popüler teknik göstergelere dayalı ticaret sistemlerini nasıl geliştireceğimizi öğrendiğimiz serimizin yeni makalesindeyiz. Bu makalede Relative Vigor Index göstergesi üzerinde çalışacağız.
                                      Model aramada brute force yaklaşımı (Bölüm IV): Asgari işlevsellik Model aramada brute force yaklaşımı (Bölüm IV): Asgari işlevsellik
                                      Bu makale, bir önceki makalede belirlenen hedeflere dayalı olarak geliştirilmiş bir brute force versiyonu sunmaktadır. Bu yöntem kullanılarak elde edilen ayarlara sahip Uzman Danışmanlar kullanarak bu konuyu olabildiğince kapsamlı bir şekilde ele almaya çalışacağım. Programın yeni sürümü makaleye eklenmiştir.