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

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

MetaTrader 5Ticaret | 12 Ocak 2024, 14:39
138 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

En popüler teknik göstergelere dayalı ticaret sistemleri geliştirdiğimiz serimizin bu yeni makalesinde Accelerator Oscillator göstergesini inceleyeceğiz. Bu teknik aracı ticarette lehimize nasıl kullanabileceğimizi ayrıntılı olarak göreceğiz. Accelerator Oscillator (AC) göstergesinin ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını, nasıl okunacağını, basit ticaret stratejileri aracılığıyla ticarette nasıl kullanılacağını ve bu stratejilere dayalı bir ticaret sistemini nasıl oluşturabileceğimizi öğreneceğiz.

Aşağıdaki konular, bu gösterge hakkında daha fazla bilgi edinmek için izleyeceğimiz yol olacaktır:

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

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. Burada bahsedilen tüm stratejiler yalnızca eğitim amaçlıdır ve kârlı ve sizin için uygun olduklarından emin olmak için bunları gerçek işlem hesabınızda kullanmadan önce detaylı bir şekilde test etmelisiniz. Ticaret ve kodlama becerilerinizi geliştirmek istiyorsanız, öğrendiklerinizi tekrarlı bir şekilde pratik yapmaya çalışmanızı tavsiye ederim, çünkü bu davranış, bu makale serisinden tam olarak fayda sağlamanıza yardımcı olacaktır.

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.


Accelerator Oscillator göstergesinin tanımı

Accelerator Oscillator (AC), Bill Williams tarafından geliştirilen bir momentum göstergesidir. Momentumda bir değişiklik olup olmadığını ölçer. Bir yükseliş trendinin momentumu azalırsa, bu, ticaret enstrümanını almak için daha az ilgi olduğu anlamına gelebilir ve bu durumda, satış yönünde ters bir hareket görebiliriz ve bunun tersi şekilde, bir düşüş trendinin momentumu azalırsa, bu da ticaret enstrümanını satmak için daha az ilgi olduğu anlamına gelebilir ve bir alış gücü görebiliriz. Fiyattan önce hareket edebileceği için de bir öncü göstergedir.

Dolayısıyla, bu göstergenin temel amacı, mevcut fiyat hareketinin ne kadar süre devam edeceğine dair fikir edinmek ve herhangi bir değişikliğe hazır olmak için piyasa gücünün her iki yönde de yukarı veya aşağı doğru hızlanmasını ve yavaşlamasını ölçmektir.

Şimdi, bu göstergeyi aşağıdaki adımlarla manuel olarak nasıl hesaplayacağımızı göreceğiz:

AC = AO - SMA (AO, 5)

Tanımlamalar:

AC = Accelerator Oscillator

AO = Awesome Oscillator, bu arada Awesome Oscillator hakkında daha fazla bilgi edinmek için önceki makalemi okuyabilirsiniz

SMA = Simple Moving Average

5 = SMA'nın periyodu

AO'yu hesaplamak için aşağıdaki adımları izleriz:

MEDIAN PRICE = (HIGH + LOW) / 2 

AO = SMA (MEDIAN PRICE, 5) - SMA (MEDIAN PRICE, 34)

Neyse ki, MetaTrader 5 işlem platformunda sahip olduğumuz için bu göstergeyi 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 --> Bill Williams --> Accelerator Oscillator

Accelerator Oscillator göstergesini ekleme

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

Accelerator Oscillator göstergesi parametreleri

1 - yükselen değerlerin rengi

2 - histogramın kalınlığı

3 - düşen değerlerin rengi

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

Grafikte Accelerator Oscillator göstergesi

Yukarıdaki görüntüde, Accelerator Oscillator göstergesinin grafiğe eklendiğini ve momentumun hızlanmasına bağlı olarak sıfır etrafında salınan bir histogram şeklinde alt pencerede görüntülendiğini görüyoruz.

Sıfır seviyesi, iki piyasa tarafı (boğalar ve ayılar) arasında bir denge olduğu anlamına gelir. AC sıfır seviyesinden daha yüksekse, yukarı doğru hareketin devam edebileceği anlamına gelir ve bunun tersi de geçerlidir; AC sıfır seviyesinden daha düşükse, bu sefer de aşağı doğru hareketin devam edebileceği anlamına gelir.


Accelerator Oscillator göstergesi stratejileri

Bu bölümde, AC göstergesinin temel konseptine dayalı olarak kullanılabilecek bazı basit ticaret stratejileri hakkında konuşacağız, ancak buradaki ana amaç yalnızca eğitim olduğu için bu stratejileri gerçek işlem hesabınızda kullanmadan önce derinlemesine test etmelisiniz. Bu nedenle, ticaretiniz için uygun ve aynı zamanda kârlı olduğundan emin olmalısınız.

    Birinci strateji: AC - Sıfırı çaprazlama

      Bu stratejiye göre, mevcut AC değerinin sıfır seviyesinin üzerinde veya altında olmasına dayalı olarak yükseliş hareketi veya düşüş hareketi şeklinde sinyaller alacağız. Mevcut AC değeri sıfır seviyesinin üzerindeyse, bu, yükseliş hareketi sinyali olacaktır. Eğer mevcut AC değeri sıfır seviyesini altındaysa, bu da düşüş hareketi sinyali olacaktır.

      Daha basit ifadeyle,

      Mevcut AC > 0 --> Yükseliş hareketi

      Mevcut AC < 0 --> Düşüş hareketi

        İkinci strateji: AC gücü

          Bu stratejiye göre, mevcut AC değeriyle göstergenin son 10 periyottaki maksimum ve minimum değerlerini karşılaştırarak AC güçlü veya AC zayıf şeklinde sinyaller alacağız. Mevcut AC değeri göstergenin son 10 periyottaki maksimum değerinden daha yüksekse, bu, AC güçlü sinyali olacaktır. Eğer mevcut AC değeri göstergenin son 10 periyottaki minimum değerinden daha düşükse, bu da AC zayıf sinyali olacaktır.

          Daha basit ifadeyle,

          Mevcut AC > Son 10 periyottaki maksimum AC --> AC güçlü

          Mevcut AC < Son 10 periyottaki minimum AC --> AC zayıf

            Üçüncü strateji: AC ve MA

              Bu stratejiye göre, belirli koşullara bağlı olarak alış veya satış sinyalleri alacağız. Mevcut AC değeri göstergenin son 10 periyottaki maksimum değerinin üzerindeyse ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha yüksekse, bu, alış sinyali olacaktır. Eğer mevcut AC değeri göstergenin son 10 periyottaki minimum değerinin altındaysa ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha düşükse, bu da satış sinyali olacaktır.

              Daha basit ifadeyle,

              Mevcut AC > Son 10 periyottaki maksimum AC ve Mevcut kapanış > 50 periyotluk EMA --> Alış sinyali

              Mevcut AC < Son 10 periyottaki minimum AC ve Mevcut kapanış < 50 periyotluk EMA --> Satış sinyali 

              Accelerator Oscillator göstergesine dayalı ticaret sisteminin planı

              Bu bölümde, ele aldığımız her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırlayacağız.

                Birinci strateji: AC - Sıfırı çaprazlama

                  Bu stratejiye göre, ticaret sistemi her tikte mevcut AC değerini kontrol etmeli ve bu değeri sıfır seviyesiyle karşılaştırmalıdır. Daha sonra bu karşılaştırmanın sonucuna göre ilgili sinyali grafik üzerinde yorum olarak görüntülemelidir. Mevcut AC değeri sıfır seviyesinin üzerindeyse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                  • Yükseliş hareketi
                  • Mevcut AC değeri

                  Diğer durumda, mevcut AC değeri sıfır seviyesinin altındaysa, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                  • Düşüş hareketi
                  • Mevcut AC değeri

                  Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:

                  AC - Sıfırı çaprazlama planı

                    İkinci strateji: AC gücü

                      Bu stratejiye göre, ticaret sistemi her tikte mevcut AC değerini ve göstergenin son 10 periyottaki maksimum ve minimum değerlerini kontrol etmeli ve mevcut AC değerini ilgili iki değerle karşılaştırmalıdır. Daha sonra bu karşılaştırmanın sonucuna göre ilgili sinyali grafik üzerinde yorum olarak görüntülemelidir. Mevcut AC değeri göstergenin son 10 periyottaki maksimum değerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                      • AC güçlü
                      • Mevcut AC değeri
                      • Son 10 periyottaki maksimum AC değeri
                      • Son 10 periyottaki minimum AC değeri

                      Diğer durumda, mevcut AC değeri göstergenin son 10 periyottaki minimum değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                      • AC zayıf
                      • Mevcut AC değeri
                      • Son 10 periyottaki maksimum AC değeri
                      • Son 10 periyottaki minimum AC değeri

                      Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:

                      AC gücü planı

                        Üçüncü strateji: AC ve MA

                          Bu stratejiye göre, ticaret sistemi her tikte beş değeri kontrol etmeli (mevcut AC, son 10 periyottaki maksimum AC, son 10 periyottaki minimum AC, mevcut kapanış fiyatı, 50 periyotluk EMA) 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 AC değeri göstergenin son 10 periyottaki maksimum değerinin üzerindeyse ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha yüksekse, ticaret sistemi şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                          • Alış sinyali
                          • Mevcut kapanış fiyatı
                          • Mevcut AC değeri
                          • Son 10 periyottaki maksimum AC değeri
                          • Son 10 periyottaki minimum AC değeri
                          • Mevcut MA değeri

                          Diğer durumda, mevcut AC değeri göstergenin son 10 periyottaki minimum değerinin altındaysa ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                          • Satış sinyali
                          • Mevcut kapanış fiyatı
                          • Mevcut AC değeri
                          • Son 10 periyottaki maksimum AC değeri
                          • Son 10 periyottaki minimum AC değeri
                          • Mevcut MA değeri

                          Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:

                          AC ve MA planı

                          Accelerator Oscillator göstergesine dayalı ticaret sistemi

                          Bu bölümde, hazırladığımız plan çerçevesinde ele aldığımız stratejilere dayalı olarak bir ticaret sistemi oluşturacağız. Öncelikle, stratejilerimizin programlarına temel olması adına mevcut AC 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:

                          double fonksiyonunu kullanarak Accelerator Oscillator için bir dizi oluşturalım:

                          double acArray[];

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

                          • Hedef dizi - acArray ayarlayacağız.
                          • Bayrak - Dizi indeksleme yönü olarak true değerini kullanacağız.
                          ArraySetAsSeries(acArray,true);

                          acDef için int türü değişken oluşturduktan sonra iAC fonksiyonunu kullanarak AC’yi tanımlayalım. iAC fonksiyonu AC 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.
                          int acDef = iAC(_Symbol,_Period);

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

                          • Gösterge tanıtıcısı - acDef 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 - acArray ayarlayacağız.
                          CopyBuffer(acDef,0,0,3,acArray);

                          acVal 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 AC değerini hesaplayalım. Parametreleri şunlardır:

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

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

                          Comment("AC Value is ",acVal);

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

                          //+------------------------------------------------------------------+
                          //|                                                    Simple AC.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 acArray[];
                             ArraySetAsSeries(acArray,true);
                             int acDef = iAC(_Symbol,_Period);
                             CopyBuffer(acDef,0,0,3,acArray);
                             double acVal = NormalizeDouble(acArray[0],7);
                             Comment("AC Value is ",acVal);
                            }
                          //+------------------------------------------------------------------+

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

                          Kılavuz - Simple AC

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

                          Simple AC penceresi

                          Grafiğe eklenmiş Simple AC

                          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 AC değerini grafik üzerinde yorum olarak gösterecektir:

                          Grafikte mevcut AC değeri

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

                            Birinci strateji: AC - Sıfırı çaprazlama

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

                              //+------------------------------------------------------------------+
                              //|                                            AC Zero Crossover.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 acArray[];
                                 ArraySetAsSeries(acArray,true);
                                 int acDef = iAC(_Symbol,_Period);
                                 CopyBuffer(acDef,0,0,3,acArray);
                                 double acVal = NormalizeDouble(acArray[0],7);
                                 if(acVal > 0)
                                   {
                                    Comment("Bullish","\n"
                                            "AC Value is ",acVal);
                                   }
                                 if(acVal < 0)
                                   {
                                    Comment("Bearish","\n"
                                            "AC Value is ",acVal);
                                   }
                                }
                              //+------------------------------------------------------------------+

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

                              Stratejinin koşulları:

                              Yükseliş hareketi:

                                 if(acVal > 0)
                                   {
                                    Comment("Bullish","\n"
                                            "AC Value is ",acVal);
                                   }

                              Düşüş hareketi:

                                 if(acVal < 0)
                                   {
                                    Comment("Bearish","\n"
                                            "AC Value is ",acVal);
                                   }

                              Bu kodu derledikten, herhangi bir hata olmadığından emin olduktan ve daha önce yaptığımız gibi Kılavuzdan Uzman Danışmana çift tıklayarak veya grafik üzerine sürükleyip bırakarak çalıştırdıktan sonra, aşağıdaki gibi grafiğe eklendiğini göreceğiz:

                              Grafiğe eklenmiş AC Zero Crossover

                              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ı. Şimdi sinyallerimizi almaya hazırız.

                              Yükseliş sinyali durumunda:

                              AC Zero Crossover - Yükseliş hareketi sinyali

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

                              • Yükseliş hareketi
                              • Mevcut AC değeri

                              Düşüş sinyali durumunda:

                              AC Zero Crossover - Düşüş hareketi sinyali

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

                              • Düşüş hareketi
                              • Mevcut AC değeri
                                İkinci strateji: AC gücü

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

                                  //+------------------------------------------------------------------+
                                  //|                                                  AC 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 acArray[];
                                     ArraySetAsSeries(acArray,true);
                                     int acDef = iAC(_Symbol,_Period);
                                     CopyBuffer(acDef,0,0,11,acArray);
                                     double acCurrVal = NormalizeDouble(acArray[0],7);
                                     int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                     int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
                                     double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                     double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                     if(acCurrVal>acMaxVal)
                                       {
                                        Comment("AC is strong ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }
                                     if(acCurrVal<acMinVal)
                                       {
                                        Comment("AC is weak ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

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

                                  Mevcut AC değerini tanımlıyoruz:

                                  double acCurrVal = NormalizeDouble(acArray[0],7);

                                  Maksimum değeri geri döndürmek için ArrayMaximum fonksiyonunu kullanarak tüm AC dizisindeki maksimum değeri tanımlıyoruz. Parametreleri şunlardır:

                                  • Arama yapılacak dizi - acArray ayarlayacağız.
                                  • Başlangıç konumu - Aramanın başlayacağı konum. 1 ayarlayacağız.
                                  • Arama yapılacak veri miktarı - Dizide kontrol edilecek toplam eleman miktarı. Bu dizinin tamamını kontrol etmek için WHOLE_ARRAY kullanacağız.
                                  int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);

                                  Minimum değeri geri döndürmek için ArrayMinimum fonksiyonunu kullanarak tüm AC dizisindeki minimum değeri tanımlıyoruz. Parametreleri şunlardır:

                                  • Arama yapılacak dizi - acArray ayarlayacağız.
                                  • Başlangıç konumu - Aramanın başlayacağı konum. 1 ayarlayacağız.
                                  • Arama yapılacak veri miktarı - Dizide kontrol edilecek toplam eleman miktarı. Bu dizinin tamamını kontrol etmek için WHOLE_ARRAY kullanacağız.
                                  int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);

                                  NormalizeDouble fonksiyonu kullanılarak maksimum ve minimum değerleri normalleştiriyoruz:

                                     double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                     double acMinVal = NormalizeDouble(acArray[acMinArray],7);

                                  Stratejinin koşulları:

                                  AC güçlü:

                                     if(acCurrVal>acMaxVal)
                                       {
                                        Comment("AC is strong ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }

                                  AC zayıf:

                                     if(acCurrVal<acMinVal)
                                       {
                                        Comment("AC is weak ","\n",
                                                "AC Value is ",acCurrVal,"\n",
                                                "AC Max is ",acMaxVal,"\n",
                                                "AC Min is ",acMinVal);
                                       }

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

                                  Grafiğe eklenmiş AC 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:

                                  AC güçlü:

                                  AC Strength - AC güçlü sinyali

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

                                  • AC güçlü
                                  • Mevcut AC değeri
                                  • Son 10 periyottaki maksimum AC değeri
                                  • Son 10 periyottaki minimum AC değeri

                                  AC zayıf:

                                  AC Strength - AC zayıf sinyali

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

                                  • AC zayıf
                                  • Mevcut AC değeri
                                  • Son 10 periyottaki maksimum AC değeri
                                  • Son 10 periyottaki minimum AC değeri
                                    Üçüncü strateji: AC ve MA

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

                                      //+------------------------------------------------------------------+
                                      //|                                             AC & MA Strategy.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()
                                        {
                                         MqlRates pArray[];
                                         double acArray[];
                                         double maArray[];
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                         ArraySetAsSeries(acArray,true);
                                         ArraySetAsSeries(maArray,true);
                                         int acDef = iAC(_Symbol,_Period);
                                         int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
                                         CopyBuffer(acDef,0,0,3,acArray);
                                         CopyBuffer(maDef,0,0,3,maArray);
                                         int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                         int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
                                         double closingPrice = pArray[0].close;
                                         double acVal = NormalizeDouble(acArray[0],7);
                                         double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                         double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                         double maVal = NormalizeDouble(maArray[0],7);
                                         if(acVal > acMaxVal && closingPrice > maVal)
                                           {
                                            Comment("Buy","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }
                                         if(acVal < acMinVal && closingPrice < maVal)
                                           {
                                            Comment("Sell","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }
                                        }
                                      //+------------------------------------------------------------------+
                                      

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

                                      Üç dizi oluşturuyoruz (pArray, acArray ve maArray). pArray dışındaki diziler için double fonksiyonunu kullanacağız, pArray için ise fiyat, hacim ve makas bilgilerini depolayan MqlRates fonksiyonunu kullanacağız:

                                         MqlRates pArray[];
                                         double acArray[];
                                         double maArray[];

                                      ArraySetAsSeries fonksiyonunu kullanarak acArray ve maArray dizilerini mevcut veriden başlayarak sıralıyoruz - başarılı olması durumunda true, aksi takdirde false geri döner (bool türü). pArray için MqlRates geçmiş verilerini almak adına CopyRates fonksiyonunu kullanacağız. CopyRates fonksiyonunun parametreleri şunlardır:

                                      • Sembol adı - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
                                      • Zaman dilimi - Mevcut zaman dilimine uygulanmak üzere _Period kullanacağız.
                                      • Başlangıç konumu - 0 ayarlayacağız. 
                                      • Kopyalanacak veri miktarı - 1 ayarlayacağız.
                                      • Hedef dizi - pArray ayarlayacağız.
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                         ArraySetAsSeries(acArray,true);
                                         ArraySetAsSeries(maArray,true);

                                      Öncesinde yaptığımız gibi iAC fonksiyonunu kullanarak AC’yi tanımlıyoruz ve ayrıca şimdi iMA fonksiyonunu kullanarak da MA’yı tanımlıyoruz. iMA fonksiyonunun 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 - 50 ayarlayacağız. 
                                      • Moving Average kayma miktarı - 0 ayarlayacağız. 
                                      • Moving Average yöntemi - Exponential Moving Average (MODE_EMA) kullanacağız. 
                                      • Uygulanacak fiyat - Kapanış fiyatını (PRICE_CLOSE) kullanacağız.
                                         int acDef = iAC(_Symbol,_Period);
                                         int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

                                      CopyBuffer fonksiyonunu kullanarak oluşturduğumuz dizileri acDef ve maDef değerleriyle dolduruyoruz:

                                         CopyBuffer(acDef,0,0,3,acArray);
                                         CopyBuffer(maDef,0,0,3,maArray);

                                      acArray'in maksimum ve minimum değerlerini alıyoruz:

                                         int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
                                         int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);

                                      Mevcut AC, maksimum AC, minimum AC ve MA değerlerini tanımlıyoruz:

                                         double acVal = NormalizeDouble(acArray[0],7);
                                         double acMaxVal = NormalizeDouble(acArray[acMaxArray],7);
                                         double acMinVal = NormalizeDouble(acArray[acMinArray],7);
                                         double maVal = NormalizeDouble(maArray[0],7);

                                      Stratejinin koşulları:

                                      Alış sinyali:

                                         if(acVal > acMaxVal && closingPrice > maVal)
                                           {
                                            Comment("Buy","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }

                                      Satış sinyali:

                                         if(acVal < acMinVal && closingPrice < maVal)
                                           {
                                            Comment("Sell","\n"
                                                    "Closing Price is ",closingPrice,"\n",
                                                    "Ac Value is ",acVal,"\n",
                                                    "AC Max is ",acMaxVal,"\n",
                                                    "AC Min is ",acMinVal,"\n",
                                                    "MA Value is ",maVal);
                                           }

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

                                      Grafiğe eklenmiş AC & MA Strategy

                                      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:

                                      Alış sinyali:

                                      AC & MA Strategy - Alış sinyali

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

                                      • Alış sinyali
                                      • Mevcut kapanış fiyatı
                                      • Mevcut AC değeri
                                      • Son 10 periyottaki maksimum AC değeri
                                      • Son 10 periyottaki minimum AC değeri
                                      • Mevcut MA değeri

                                      Satış sinyali:

                                      AC & MA Strategy - Satış sinyali

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

                                      • Satış sinyali
                                      • Mevcut kapanış fiyatı
                                      • Mevcut AC değeri
                                      • Son 10 periyottaki maksimum AC değeri
                                      • Son 10 periyottaki minimum AC değeri
                                      • Mevcut MA değeri

                                      Sonuç

                                      Bu makalede Accelerator Oscillator göstergesini konuk ettik. Başlangıçta, Accelerator Oscillator göstergesinin ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını, nasıl okuyabileceğimizi gördük. Ardından, bazı basit stratejiler aracılığıyla onu ticaretimizde nasıl kullanabileceğimiz hakkında konuştuk:

                                      • AC - Sıfırı çaprazlama: gösterge değerinin sıfır seviyesinin üzerinde veya altında olmasına dayalı olarak yükseliş hareketi veya düşüş hareketi şeklinde sinyaller almak için.
                                      • AC gücü: mevcut AC değerine ve göstergenin son 10 periyottaki maksimum/minimum değerine dayalı olarak AC güçlü veya AC zayıf şeklinde sinyaller almak için.
                                      • AC ve MA: mevcut AC, göstergenin son 10 periyottaki maksimum/minimum değeri, mevcut kapanış ve 50 periyotluk EMA değerlerine dayalı olarak alış veya satış sinyalleri almak için.

                                      Devamında, 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 bölümde de hazırladığımız plan çerçevesinde, MetaTrader 5 işlem platformunda kullanılmak üzere, ele aldığımız stratejilere dayalı olarak otomatik sinyaller üretecek bir ticaret sistemi oluşturduk.

                                      Umarım, makalenin başında ifade ettiğim gibi, öğrendiklerinizi pratiğe dökmüş ve bu makalenin konusu veya ilgili herhangi bir konu hakkında daha fazla bilgi edinerek bu makaleden tam olarak yararlanmışsınızdır. Şunu da her zaman olduğu gibi bir kez daha 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. Buradaki temel amaç sadece eğitimdir.

                                      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 daha fazla makale 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 - RSI, MACD, Stochastic Oscillator, Moving Average, Bollinger Bands, Envelopes dahil daha birçok araca dayalı ticaret sistemlerinin nasıl geliştirileceğini halihazırda işledik. Bir sonraki ilginç göstergede tekrar buluşmak dileğiyle.

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

                                      Ekli dosyalar |
                                      Simple_AC.mq5 (0.86 KB)
                                      AC_Strength.mq5 (1.46 KB)
                                      Alligator göstergesine dayalı bir ticaret sistemi nasıl geliştirilir? Alligator göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?
                                      Bu makalede, yine bir başka popüler teknik göstergeye odaklanacağız ve ona dayalı bir ticaret sisteminin nasıl geliştirileceğini öğreneceğiz. Alligator göstergesini tanıyacağız ve ona dayalı bir ticaret sistemi tasarlayacağız.
                                      Popülasyon optimizasyon algoritmaları: Yarasa algoritması (Bat Algorithm, BA) Popülasyon optimizasyon algoritmaları: Yarasa algoritması (Bat Algorithm, BA)
                                      Bu makalede, düzgün fonksiyonlar üzerinde iyi yakınsama gösteren yarasa algoritmasını inceleyeceğiz.
                                      Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 24): Sistemin sağlamlığını artırma (I) Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 24): Sistemin sağlamlığını artırma (I)
                                      Bu makalede, daha istikrarlı ve güvenli bir kullanım sağlamak için sistemi daha sağlam hale getireceğiz. İstenilen sağlamlığı elde etmenin yollarından biri, kodu mümkün olduğunca yeniden kullanmaya çalışmak ve böylece farklı durumlarda sürekli olarak test edilmesini sağlamaktır. Ancak bu, yöntemlerden yalnızca bir tanesidir. Bir diğeri ise OOP kullanmaktır.
                                      Popülasyon optimizasyon algoritmaları: Ateş böceği algoritması (Firefly Algorithm, FA) Popülasyon optimizasyon algoritmaları: Ateş böceği algoritması (Firefly Algorithm, FA)
                                      Bu makalede ateş böceği algoritması (Firefly Algorithm, FA) optimizasyon yöntemini ele alacağız. Yapılan değişiklik sayesinde algoritma, dışarıdan bakan bir oyuncudan gerçek bir derecelendirme tablosu liderine dönüştü.