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

Mohamed Abdelmaaboud | 12 Ocak, 2024

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:

Ş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:

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:

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:

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 ve Jaws değerlerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

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:

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 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:

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:

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:

   ArraySetAsSeries(jawsArray,true);
   ArraySetAsSeries(teethArray,true);
   ArraySetAsSeries(lipsArray,true);

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

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:

   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:

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:

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:

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:

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:

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:

Üç ç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:

Üç ç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:

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.