Alligator göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?
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:
- Alligator göstergesinin tanımı
- Alligator göstergesi stratejileri
- Alligator göstergesine dayalı ticaret sisteminin planı
- Alligator göstergesine dayalı ticaret sistemi
- 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
Gösterge seçildiğinde, aşağıdaki gösterge parametreleri penceresi açılacaktır:
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:
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:
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.
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
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
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.
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:
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:
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 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:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
"Algoritmik ticarete izin ver" seçeneğini etkinleştirip Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:
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:
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
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:
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:
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
Düşüş hareketi:
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.
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:
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:
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
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.
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:
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:
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
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
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz