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

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

MetaTrader 5Alım-satım | 12 Ocak 2024, 14:45
536 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

En popüler teknik göstergelere dayalı ticaret sistemleri geliştirdiğimiz serimizin bu yeni makalesinde Alligator göstergesine odaklanacağız. Makaleye, Alligator göstergesinin ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını ve nasıl okuyup kullanabileceğimizi öğrenerek gösterge hakkında ayrıntılı bilgi edinerek başlayacağız. Devamında da bu göstergenin temel amacına dayanan bazı basit stratejilere dayalı bir ticaret sistemi oluşturacağız. Bu göstergeyi aşağıdaki konular aracılığıyla ele alacağız:

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

Programlama becerilerinizi geliştirmek için öğrendiklerinizi, özellikle de bu makaledeki kodları kendi başınıza uygulamaya çalışmanızı tavsiye ederim, çünkü bu, gelişme ve ilerleme hedefine ulaşmak için önemli bir adımdır. Makalede, 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.

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.

Alligator göstergesinin tanımı

Alligator teknik göstergesi, Bill Williams tarafından geliştirilmiş bir trend izleyen göstergedir. Gösterge, bir finansal enstrümanın ömrü boyunca sürekli olarak trendin var olmadığı, ancak zamanın yalnızca %15-30'unu kapsadığı ve çoğu zaman ise %70-85 kadar, enstrümanın fiyatının yatay hareket ettiği fikrine dayanmaktadır. Dolayısıyla, bazen yukarı ya da aşağı yönlü bir trendimiz olabilir, ancak çoğu zaman yatay hareketli dönemlerimiz olmaktadır. Trendler, türleri ve onları nasıl tanımlayabileceğimiz hakkında daha fazla bilgi edinmek istiyorsanız, bu bağlamda faydalı olabilecek daha önce yayınladığım bir makalemde yer alan "Trendin tanımı" bölümünü okuyabilirsiniz. Gösterge, hesaplamasında Fibonacci sayılarını kullanır ve 5, 8 ve 13 periyotlu üç yumuşatılmış hareketli ortalamanın bir kombinasyonudur. Bu üç yumuşatılmış hareketli ortalama, Alligator göstergesinin bileşenlerini oluşturur:

  • Alligator Jaws.
  • Alligator Teeth.
  • Alligator Lips.

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

Alligator Jaws = SMMA (Median price, 13, 8)

Alligator Teeth = SMMA (Median price, 8, 5)

Alligator Lips = SMMA (Median price, 5, 3)

Median Price = (High + Low)/2

Tanımlamalar:

SMMA = yumuşatılmış hareketli ortalama

Median price = enstrümanın medyan fiyatı

HIGH = yüksek fiyatı

LOW = düşük fiyatı

MetaTrader 5 platformunda yerleşik olarak gelen hazır bir gösterge bulunduğundan, Alligator’ı 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 --> Alligator

Alligator göstergesini ekleme

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

Alligator göstergesi parametreleri

1 - Alligator Jaws’un periyodu.

2 - Alligator Jaws’un yatay kayması.

3 - Alligator Teeth’in periyodu.

4 - Alligator Teeth’in yatay kayması.

5 - Alligator Lips’in periyodu.

6 - Alligator Lips’in yatay kayması.

7 - yumuşatma yöntemi.

8 - uygulanacak fiyat türü.

Aşağıdaki pencere aracılığıyla göstergenin stilini belirleyebiliriz:

Alligator göstergesi stili

1 - Jaws çizgisinin rengi.

2 - Jaws çizgisinin türü.

3 - Jaws çizgisinin kalınlığı.

4 - Teeth çizgisinin rengi.

5 - Teeth çizgisinin türü.

6 - Teeth çizgisinin kalınlığı.

7 - Lips çizgisinin rengi.

8 - Lips çizgisinin türü.

9 - Lips çizgisinin kalınlığı.

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

Grafikte Alligator göstergesi

Yukarıdaki grafikte görebileceğimiz gibi, göstergede üç çizgiye sahibiz:

1 - Alligator Lips

2 - Alligator Teeth

3 - Alligator Jaws

Göstergeyi sadece bu çizgilerin fiyata göre konumunu gözlemleyerek okuyabiliriz. Fiyat Lips, Teeth ve Jaws’un üzerindeyse, trendin yukarı yönlü olduğunu söyleyebiliriz. Fiyat Lips, Teeth ve Jaws’un altındaysa, trendin aşağı yönlü olduğunu söyleyebiliriz. Fiyat üç çizgi boyunca hareket ediyorsa, bu sefer de yatay hareket olduğunu söyleyebiliriz.

Alligator göstergesi stratejileri

Alligator göstergesini ticarette kullanmanın birçok farklı yolu vardır. Bu makalede, sadece göstergenin nasıl kullanılabileceğini görmek için birkaç basit stratejiye bakacağız. Temel amaç göstergeyi öğrenmektir, bu nedenle detaylı bir şekilde uygun testler gerçekleştirmeden stratejileri gerçek hesabınızda kullanmamalısınız. İlgili stratejileri optimize etmeniz gerektiğini fark edebilirsiniz, ki bu normaldir, ticaret tarzınız için yararlı olabilecek en iyi formüle ulaşmak için bunu yapabilirsiniz.

    Birinci strateji: Alligator - Trend tanımlayıcı

      Bu stratejiye göre, belirli koşullara bağlı olarak yükseliş hareketi veya düşüş hareketi şeklinde sinyaller alacağız. Lips değeri, Teeth ve Jaws değerleri olmak üzere iki değerden ve aynı zamanda Teeth değeri de Jaws değerinden daha yüksekse, bu, yükseliş hareketi sinyali olacaktır. Diğer durumda, Lips değeri, Teeth ve Jaws değerleri olmak üzere iki değerden ve aynı zamanda Teeth değeri de Jaws değerinden daha düşükse, bu da düşüş hareketi sinyali olacaktır.

      Lips > Teeth, Lips > Jaws ve Teeth > Jaws --> Yükseliş hareketi

      Lips < Teeth, Lips < Jaws ve Teeth < Jaws --> Düşüş hareketi

        İkinci strateji: Alligator - Sinyal sistemi

          Bu stratejiye göre, Lips değerinin Teeth ve Jaws değerlerinin üzerinde veya altında olmasına dayalı olarak alış veya satış sinyalleri alacağız. Lips değeri Teeth ve Jaws değerlerinden daha yüksekse, bu, alış sinyali olacaktır. Tersi durumda, Lips değeri Teeth ve Jaws değerlerinden daha düşükse, bu da satış sinyali olacaktır.

          Lips > Teeth, Lips > Jaws --> Alış sinyali

          Lips < Teeth, Lips < Jaws --> Satış sinyali

            Üçüncü strateji: Alligator - Geliştirilmiş sinyal sistemi

              Bu stratejiye göre, belirli koşullara bağlı olarak alış veya satış sinyalleri alacağız. Lips değeri Teeth ve Jaws değerlerinden daha düşükse ve bununla birlikte kapanış fiyatı Teeth değerinden daha yüksekse, bu, alış sinyali olacaktır. Diğer senaryoda, Lips değeri Teeth ve Jaws değerlerinden daha yüksekse ve bununla birlikte kapanış fiyatı Teeth değerinden daha düşükse, bu da satış sinyali olacaktır.

              Lips < Teeth, Lips < Jaws ve kapanış fiyatı > Teeth --> Alış sinyali

              Lips > Teeth, Lips > Jaws ve kapanış fiyatı < Teeth --> Satış sinyali

              Alligator 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: Alligator - Trend tanımlayıcı

                  Bu stratejiye göre, aşağıdaki değerleri sürekli olarak kontrol ederek yükseliş hareketi veya düşüş hareketi şeklinde sinyaller verecek bir ticaret sistemi oluşturmamız gerekiyor:

                  • Lips değeri
                  • Teeth değeri
                  • Jaws değeri

                  Ticaret sistemi, ilgili sinyalleri oluşturabilmek için bu değerlerin konumlarını tanımlamalı ve stratejiye uygun olarak birbirleriyle karşılaştırmalıdır. Lips değeri, Teeth ve Jaws değerleri olmak üzere iki değerden ve aynı zamanda Teeth değeri de Jaws değerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                  • Yükseliş hareketi
                  • Jaws değeri
                  • Teeth değeri
                  • Lips değeri

                  Diğer durumda, Lips değeri, Teeth ve Jaws değerleri olmak üzere iki değerden ve aynı zamanda Teeth değeri de Jaws değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                  • Düşüş hareketi
                  • Jaws değeri
                  • Teeth değeri
                  • Lips değeri

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

                  Alligator - Trend tanımlayıcı planı

                    İkinci strateji: Alligator - Sinyal sistemi

                      Bu stratejiye göre, aşağıdaki değerleri sürekli olarak kontrol ederek alış veya satış sinyalleri verecek bir ticaret sistemi oluşturmamız gerekiyor:

                      • Lips değeri
                      • Teeth değeri
                      • Jaws değeri

                      Lips değeri Teeth ve Jaws değerlerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                      • Alış sinyali
                      • Jaws değeri
                      • Teeth değeri
                      • Lips değeri

                      Tersi durumda, Lips değeri Teeth ve Jaws değerlerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                      • Satış sinyali
                      • Jaws değeri
                      • Teeth değeri
                      • Lips değeri

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

                      Alligator - Sinyal sistemi planı

                        Üçüncü strateji: Alligator - Geliştirilmiş sinyal sistemi

                          Bu stratejiye göre, aşağıdaki değerleri sürekli olarak kontrol ederek alış veya satış sinyalleri verecek bir ticaret sistemi oluşturmamız gerekiyor:

                          • Lips değeri
                          • Teeth değeri
                          • Jaws değeri
                          • Kapanış fiyatı

                          Lips değeri Teeth ve Jaws değerlerinden daha düşükse ve bununla birlikte kapanış fiyatı Teeth değerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                          • Alış sinyali
                          • Lips değeri
                          • Teeth değeri
                          • Kapanış fiyatı
                          • Jaws değeri

                          Diğer senaryoda, Lips değeri Teeth ve Jaws değerlerinden daha yüksekse ve bununla birlikte kapanış fiyatı Teeth değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

                          • Satış sinyali
                          • Lips değeri
                          • Teeth değeri
                          • Kapanış fiyatı
                          • Jaws değeri

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

                          Alligator - Geliştirilmiş sinyal sistemi planı

                          Alligator 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 bir ticaret sistemi oluşturacağız. İlk olarak, ticaret sistemimizde kullanılacak Alligator bileşen değerlerini grafik üzerinde yorum olarak görüntüleyecek bir temel ticaret sistemi oluşturalım. Aşağıda, bu ticaret sistemini oluşturmak için gerekli adımlar açıklanmaktadır:

                          Alligator bileşenlerinin (Lips, Teeth, Jaws) her birinin dizilerini oluşturalım:

                             double jawsArray[];
                             double teethArray[];
                             double lipsArray[]; 

                          ArraySetAsSeries fonksiyonunu kullanarak dizileri mevcut veriden başlayarak sıralayalım. Parametreleri şunlardır:

                          • dizi
                          • bayrak
                             ArraySetAsSeries(jawsArray,true);
                             ArraySetAsSeries(teethArray,true);
                             ArraySetAsSeries(lipsArray,true);

                          iAlligator fonksiyonunu kullanarak Alligator'ı tanımlayalım. Parametreleri şunlardır:

                          • Sembol adı - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
                          • Zaman dilimi - Mevcut zaman dilimine uygulanmak üzere _Period kullanacağız.
                          • Jaws’un periyodu - 13 ayarlayacağız.
                          • Jaws’un kayması - 8 ayarlayacağız.
                          • Teeth’in periyodu - 8 ayarlayacağız.
                          • Teeth’in kayması - 5 ayarlayacağız.
                          • Lips’in periyodu - 5 ayarlayacağız.
                          • Lips’in kayması - 3 ayarlayacağız.
                          • Moving Average yöntemi - Smoothed Moving Average (MODE_SMMA) kullanacağız.
                          • Uygulanacak fiyat - Medyan fiyatı (PRICE_MEDIAN) kullanacağız.
                          int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);

                          CopyBuffer fonksiyonunu kullanarak, tanımladığımız Alligator göstergesine göre verileri dolduralım. Parametreleri şunlardır:

                          • Gösterge tanıtıcısı - alligatorDef gösterge tanımını kullanacağız.
                          • Gösterge arabellek numarası - Jaws için 0, Teeth için 1 ve Lips için 2 ayarlayacağız.
                          • Başlangıç konumu - 0 ayarlayacağız.
                          • Kopyalanacak veri miktarı - 3 ayarlayacağız.
                          • Hedef dizi - jawsArray, teethArray ve lipsArray ayarlayacağız.
                             CopyBuffer(alligatorDef,0,0,3,jawsArray);
                             CopyBuffer(alligatorDef,1,0,3,teethArray);
                             CopyBuffer(alligatorDef,2,0,3,lipsArray);

                          Üç bileşenin değerlerini alalım:

                             double jawsValue=NormalizeDouble(jawsArray[0],5);
                             double teethValue=NormalizeDouble(teethArray[0],5);
                             double lipsValue=NormalizeDouble(lipsArray[0],5);

                          Comment fonksiyonunu kullanarak göstergenin üç bileşeninin değerlerini grafikte yorum olarak görüntüleyelim:

                             Comment("jawsValue = ",jawsValue,"\n",
                             "teethValue = ",teethValue,"\n",
                             "lipsValue = ",lipsValue);

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

                          //+------------------------------------------------------------------+
                          //|                                      Simple Alligator 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()
                            {
                             //creating price array
                             double jawsArray[];
                             double teethArray[];
                             double lipsArray[];   
                             //Sorting data
                             ArraySetAsSeries(jawsArray,true);
                             ArraySetAsSeries(teethArray,true);
                             ArraySetAsSeries(lipsArray,true);
                             //define Alligator
                             int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);      
                             //define data and store result
                             CopyBuffer(alligatorDef,0,0,3,jawsArray);
                             CopyBuffer(alligatorDef,1,0,3,teethArray);
                             CopyBuffer(alligatorDef,2,0,3,lipsArray);
                             //get value of current data
                             double jawsValue=NormalizeDouble(jawsArray[0],5);
                             double teethValue=NormalizeDouble(teethArray[0],5);
                             double lipsValue=NormalizeDouble(lipsArray[0],5);
                             //comment on the chart
                             Comment("jawsValue = ",jawsValue,"\n",
                             "teethValue = ",teethValue,"\n",
                             "lipsValue = ",lipsValue);
                            }
                          //+------------------------------------------------------------------+

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

                          Kılavuz - Simple Alligator 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 Alligator System penceresi

                          "Algoritmik ticarete izin ver" seçeneğini etkinleştirip Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:

                          Grafiğe eklenmiş Simple Alligator 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 Alligator değerlerini grafik üzerinde yorum olarak gösterecektir:

                          Grafikte mevcut Alligator değerleri

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

                          Jaws değeri

                          Teeth değeri

                          Lips değeri

                            Birinci strateji: Alligator - Trend tanımlayıcı

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

                              //+------------------------------------------------------------------+
                              //|                                   Alligator Trend Identifier.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()
                                {
                              //creating three arrays of Alligator components
                                 double jawsArray[];
                                 double teethArray[];
                                 double lipsArray[];
                              //Sorting data
                                 ArraySetAsSeries(jawsArray,true);
                                 ArraySetAsSeries(teethArray,true);
                                 ArraySetAsSeries(lipsArray,true);
                              //define Alligator
                                 int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                              //define data and store result
                                 CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                 CopyBuffer(alligatorDef,1,0,13,teethArray);
                                 CopyBuffer(alligatorDef,2,0,13,lipsArray);
                              //get value of current data
                                 double jawsValue=NormalizeDouble(jawsArray[0],5);
                                 double teethValue=NormalizeDouble(teethArray[0],5);
                                 double lipsValue=NormalizeDouble(lipsArray[0],5);
                              //conditions of strategy
                                 if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue)
                                   {
                                    Comment("Bullish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }
                                 if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue)
                                   {
                                    Comment("Bearish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }
                                }
                              //+------------------------------------------------------------------+

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

                              Yükseliş hareketi koşulu:

                                 if(lipsValue>teethValue && lipsValue>jawsValue && teethValue>jawsValue)
                                   {
                                    Comment("Bullish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }

                              Düşüş hareketi koşulu:

                                 if(lipsValue<teethValue && lipsValue<jawsValue && teethValue<jawsValue)
                                   {
                                    Comment("Bearish","\n",
                                            "jawsValue = ",jawsValue,"\n",
                                            "teethValue = ",teethValue,"\n",
                                            "lipsValue = ",lipsValue);
                                   }

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

                              Grafiğe eklenmiş Alligator Trend Identifier

                              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:

                              Yükseliş hareketi:

                              Alligator Trend Identifier - 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
                              • Jaws değeri
                              • Teeth değeri
                              • Lips değeri 
                              Fiyatların altında hareket eden üç çizgiye sahibiz, dolayısıyla yükseliş hareketi sinyali alıyoruz.

                              Düşüş hareketi:

                              Alligator Trend Identifier - 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
                              • Jaws değeri
                              • Teeth değeri
                              • Lips değeri

                              Fiyatların üzerinde hareket eden üç çizgiye sahibiz, dolayısıyla düşüş hareketi sinyali alıyoruz.

                                İkinci strateji: Alligator - Sinyal sistemi

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

                                  //+------------------------------------------------------------------+
                                  //|                                    Alligator Signals 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()
                                    {
                                  //creating three arrays of Alligator components
                                     double jawsArray[];
                                     double teethArray[];
                                     double lipsArray[];
                                  //Sorting data
                                     ArraySetAsSeries(jawsArray,true);
                                     ArraySetAsSeries(teethArray,true);
                                     ArraySetAsSeries(lipsArray,true);
                                  //define Alligator
                                     int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                                  //define data and store result
                                     CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                     CopyBuffer(alligatorDef,1,0,13,teethArray);
                                     CopyBuffer(alligatorDef,2,0,13,lipsArray);
                                  //get value of current data
                                     double jawsValue=NormalizeDouble(jawsArray[0],5);
                                     double teethValue=NormalizeDouble(teethArray[0],5);
                                     double lipsValue=NormalizeDouble(lipsArray[0],5);
                                  //conditions of strategy
                                     if(lipsValue>teethValue && lipsValue>jawsValue)
                                       {
                                        Comment("Buy","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }
                                     if(lipsValue<teethValue && lipsValue<jawsValue)
                                       {
                                        Comment("Sell","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }
                                    }
                                  //+------------------------------------------------------------------+

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

                                  Stratejinin koşulları:

                                  Alış sinyali:

                                     if(lipsValue>teethValue && lipsValue>jawsValue)
                                       {
                                        Comment("Buy","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }

                                  Satış sinyali:

                                     if(lipsValue<teethValue && lipsValue<jawsValue)
                                       {
                                        Comment("Sell","\n",
                                                "jawsValue = ",jawsValue,"\n",
                                                "teethValue = ",teethValue,"\n",
                                                "lipsValue = ",lipsValue);
                                       }

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

                                  Grafiğe eklenmiş Alligator Signals 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ı. Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:

                                  Alış sinyali:

                                  Alligator Signals System - 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
                                  • Jaws değeri
                                  • Teeth değeri
                                  • Lips değeri
                                  Fiyatların altında hareket eden üç çizgiye sahibiz, dolayısıyla alış sinyali alıyoruz.

                                  Satış sinyali:

                                  Alligator Signals System - 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
                                  • Jaws değeri
                                  • Teeth değeri
                                  • Lips değeri

                                  Fiyatların üzerinde hareket eden üç çizgiye sahibiz, dolayısıyla satış sinyali alıyoruz.

                                    Üçüncü strateji: Alligator - Geliştirilmiş sinyal sistemi

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

                                      //+------------------------------------------------------------------+
                                      //|                         Alligator Signals System Enhancement.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()
                                        {
                                      //creating three arrays of Alligator components
                                         double jawsArray[];
                                         double teethArray[];
                                         double lipsArray[];
                                         MqlRates pArray[];
                                      //Sorting data
                                         ArraySetAsSeries(jawsArray,true);
                                         ArraySetAsSeries(teethArray,true);
                                         ArraySetAsSeries(lipsArray,true);
                                         int Data=CopyRates(_Symbol,_Period,0,1,pArray);
                                      //define Alligator
                                         int alligatorDef=iAlligator(_Symbol,_Period,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN);
                                      //define data and store result
                                         CopyBuffer(alligatorDef,0,0,13,jawsArray);
                                         CopyBuffer(alligatorDef,1,0,13,teethArray);
                                         CopyBuffer(alligatorDef,2,0,13,lipsArray);
                                      //get value of current data
                                         double jawsValue=NormalizeDouble(jawsArray[0],5);
                                         double teethValue=NormalizeDouble(teethArray[0],5);
                                         double lipsValue=NormalizeDouble(lipsArray[0],5);
                                      //conditions of strategy
                                         if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue)
                                           {
                                            Comment("Buy","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }
                                         if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue)
                                           {
                                            Comment("Sell","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }
                                        }
                                      //+------------------------------------------------------------------+

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

                                      MqlRates fonksiyonunu kullanarak fiyatlar için de bir dizi oluşturuyoruz. Bu dizi fiyatlar, hacimler ve makaslar hakkında bilgileri depolar:

                                      MqlRates pArray[];

                                      CopyRates fonksiyonunu kullanılarak MqlRates'in geçmiş verilerini alıyoruz. 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);

                                      Stratejinin koşulları:

                                      Alış sinyali:

                                         if(lipsValue<teethValue && lipsValue<jawsValue && pArray[0].close>teethValue)
                                           {
                                            Comment("Buy","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }

                                      Satış sinyali:

                                         if(lipsValue>teethValue && lipsValue>jawsValue && pArray[0].close<teethValue)
                                           {
                                            Comment("Sell","\n",
                                                    "jawsValue = ",jawsValue,"\n",
                                                    "teethValue = ",teethValue,"\n",
                                                    "closingPrice = ",pArray[0].close,"\n",
                                                    "lipsValue = ",lipsValue);
                                           }

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

                                      Grafiğe eklenmiş Alligator Signals System Enhancement

                                      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:

                                      Alligator Signals System Enhancement - 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
                                      • Jaws değeri
                                      • Teeth değeri
                                      • Kapanış fiyatı
                                      • Lips değeri 
                                      Üç çizgi fiyatların üzerinde hareket ederken, kapanış fiyatının Teeth çizgisinin üzerinde kapandığını görüyoruz. Dolayısıyla, alış sinyali alıyoruz.

                                      Satış sinyali:

                                      Alligator Signals System Enhancement - 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
                                      • Jaws değeri
                                      • Teeth değeri
                                      • Kapanış fiyatı
                                      • Lips değeri

                                      Üç çizgi fiyatların altında hareket ederken, kapanış fiyatının Teeth çizgisinin altında kapandığını görüyoruz. Dolayısıyla, satış sinyali alıyoruz.

                                      Sonuç

                                      Bu makalede, alış ve satış sinyalleri almanın yanı sıra trendi doğrulamak için de kullanılabilen Alligator teknik göstergesi hakkında ayrıntılı bilgi edindik. Manuel olarak nasıl hesaplandığını ve bazı basit stratejilere dayanarak nasıl kullanabileceğimizi öğrendik:

                                      • Alligator - Trend tanımlayıcı: Alligator’ın üç çizgisinin (Lips, Teeth ve Jaws) birbirine olan belirli bir konumuna göre yükseliş hareketi veya düşüş hareketi şeklinde sinyaller almak için.
                                      • Alligator - Sinyal sistemi: yine göstergenin üç çizgisinin birbirine olan belirli bir konumuna göre alış veya satış sinyalleri almak için.
                                      • Alligator - Geliştirilmiş sinyal sistemi: göstergenin üç çizgisinin birbirine olan belirli bir konumuna ek olarak kapanış fiyatının Teeth çizgisini çaprazlamasına göre alış veya satış sinyalleri almak için. 

                                      Bu stratejileri inceledikten sonra, onlar 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. Makalenin son bölümünde 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. Ş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. Bu makalenin ana amacı eğitim, bilgi paylaşımıdır.

                                      Umarım makale boyunca öğrendiklerinizi kendi başınıza uygulamaya çalışmışsınızdır. Bu, makaledeki bilgilerden maksimum faydayı elde etmek ve programlama becerilerinizi geliştirmek için çok önemlidir. Ve 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, ADX dahil daha birçok araca dayalı ticaret sistemlerinin nasıl geliştirileceğini halihazırda işledik. Bir sonraki makalede görüşmek üzere.

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

                                      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.
                                      Accelerator Oscillator göstergesine dayalı bir ticaret sistemi nasıl geliştirilir? Accelerator Oscillator göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?
                                      En popüler teknik göstergelere dayalı ticaret sistemleri geliştirdiğimiz serimizin yeni makalesindeyiz. Bu makalede, Accelerator Oscillator göstergesini inceleyeceğiz ve onu kullanarak bir ticaret sistemini nasıl tasarlayacağımızı öğreneceğiz.
                                      Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 25): Sistemin sağlamlığını artırma (II) Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 25): Sistemin sağlamlığını artırma (II)
                                      Bu makalede, Uzman Danışmanın performansına yönelik son adımı atacağız. Bu yüzden uzun bir okumaya hazırlıklı olun. Uzman Danışmanımızı sağlam hale getirmek için, öncelikle ticaret sisteminin bir parçası olmayan her şeyi koddan kaldıracağı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.