Accelerator Oscillator 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 Accelerator Oscillator göstergesini inceleyeceğiz. Bu teknik aracı ticarette lehimize nasıl kullanabileceğimizi ayrıntılı olarak göreceğiz. Accelerator Oscillator (AC) göstergesinin ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını, nasıl okunacağını, basit ticaret stratejileri aracılığıyla ticarette nasıl kullanılacağını ve bu stratejilere dayalı bir ticaret sistemini nasıl oluşturabileceğimizi öğreneceğiz.
Aşağıdaki konular, bu gösterge hakkında daha fazla bilgi edinmek için izleyeceğimiz yol olacaktır:
- Accelerator Oscillator göstergesinin tanımı
- Accelerator Oscillator göstergesi stratejileri
- Accelerator Oscillator göstergesine dayalı ticaret sisteminin planı
- Accelerator Oscillator göstergesine dayalı ticaret sistemi
- Sonuç
Makale boyunca, kodlarımızı yazmak için MetaQuotes Language 5 (MQL5) programlama dilini ve MetaTrader 5 işlem platformunda yerleşik MetaEditor kod düzenleyicisini kullanacağız. MetaTrader 5’in nasıl kurulacağı ve MetaEditor’ın nasıl kullanılacağı hakkında daha fazla bilgi edinmek istiyorsanız, önceki makalelerimden birinde yer alan "MetaEditor’da MQL5 kodu yazma" bölümünü okuyabilirsiniz. Burada bahsedilen tüm stratejiler yalnızca eğitim amaçlıdır ve kârlı ve sizin için uygun olduklarından emin olmak için bunları gerçek işlem hesabınızda kullanmadan önce detaylı bir şekilde test etmelisiniz. Ticaret ve kodlama becerilerinizi geliştirmek istiyorsanız, öğrendiklerinizi tekrarlı bir şekilde pratik yapmaya çalışmanızı tavsiye ederim, çünkü bu davranış, bu makale serisinden tam olarak fayda sağlamanıza yardımcı olacaktır.
Sorumluluk reddi: Sağlanan tüm bilgiler ’olduğu gibi’ yalnızca bilgilendirme amaçlıdır, ticaret tavsiyesi değildir. Bu bilgiler herhangi bir sonucu garanti etmemektedir. Bu materyalleri herhangi bir işlem hesabında kullanırsanız, ortaya çıkabilecek tüm riskler size ait olacaktır.
Accelerator Oscillator göstergesinin tanımı
Accelerator Oscillator (AC), Bill Williams tarafından geliştirilen bir momentum göstergesidir. Momentumda bir değişiklik olup olmadığını ölçer. Bir yükseliş trendinin momentumu azalırsa, bu, ticaret enstrümanını almak için daha az ilgi olduğu anlamına gelebilir ve bu durumda, satış yönünde ters bir hareket görebiliriz ve bunun tersi şekilde, bir düşüş trendinin momentumu azalırsa, bu da ticaret enstrümanını satmak için daha az ilgi olduğu anlamına gelebilir ve bir alış gücü görebiliriz. Fiyattan önce hareket edebileceği için de bir öncü göstergedir.
Dolayısıyla, bu göstergenin temel amacı, mevcut fiyat hareketinin ne kadar süre devam edeceğine dair fikir edinmek ve herhangi bir değişikliğe hazır olmak için piyasa gücünün her iki yönde de yukarı veya aşağı doğru hızlanmasını ve yavaşlamasını ölçmektir.
Şimdi, bu göstergeyi aşağıdaki adımlarla manuel olarak nasıl hesaplayacağımızı göreceğiz:
AC = AO - SMA (AO, 5)
Tanımlamalar:
AC = Accelerator Oscillator
AO = Awesome Oscillator, bu arada Awesome Oscillator hakkında daha fazla bilgi edinmek için önceki makalemi okuyabilirsiniz
SMA = Simple Moving Average
5 = SMA'nın periyodu
AO'yu hesaplamak için aşağıdaki adımları izleriz:
MEDIAN PRICE = (HIGH + LOW) / 2
AO = SMA (MEDIAN PRICE, 5) - SMA (MEDIAN PRICE, 34)
Neyse ki, MetaTrader 5 işlem platformunda sahip olduğumuz için bu göstergeyi manuel olarak hesaplamamıza gerek yoktur. Tek yapmamız gereken mevcut göstergeler arasından onu seçmektir: MetaTrader 5'i açın --> Ekle sekmesine tıklayın --> Göstergeler --> Bill Williams --> Accelerator Oscillator
Gösterge seçildiğinde, aşağıdaki gösterge parametreleri penceresi açılacaktır:
1 - yükselen değerlerin rengi
2 - histogramın kalınlığı
3 - düşen değerlerin rengi
Gösterge için uygun parametreleri ayarladıktan sonra gösterge aşağıdaki gibi grafiğe eklenecektir:
Yukarıdaki görüntüde, Accelerator Oscillator göstergesinin grafiğe eklendiğini ve momentumun hızlanmasına bağlı olarak sıfır etrafında salınan bir histogram şeklinde alt pencerede görüntülendiğini görüyoruz.
Sıfır seviyesi, iki piyasa tarafı (boğalar ve ayılar) arasında bir denge olduğu anlamına gelir. AC sıfır seviyesinden daha yüksekse, yukarı doğru hareketin devam edebileceği anlamına gelir ve bunun tersi de geçerlidir; AC sıfır seviyesinden daha düşükse, bu sefer de aşağı doğru hareketin devam edebileceği anlamına gelir.
Accelerator Oscillator göstergesi stratejileri
Bu bölümde, AC göstergesinin temel konseptine dayalı olarak kullanılabilecek bazı basit ticaret stratejileri hakkında konuşacağız, ancak buradaki ana amaç yalnızca eğitim olduğu için bu stratejileri gerçek işlem hesabınızda kullanmadan önce derinlemesine test etmelisiniz. Bu nedenle, ticaretiniz için uygun ve aynı zamanda kârlı olduğundan emin olmalısınız.
Bu stratejiye göre, mevcut AC değerinin sıfır seviyesinin üzerinde veya altında olmasına dayalı olarak yükseliş hareketi veya düşüş hareketi şeklinde sinyaller alacağız. Mevcut AC değeri sıfır seviyesinin üzerindeyse, bu, yükseliş hareketi sinyali olacaktır. Eğer mevcut AC değeri sıfır seviyesini altındaysa, bu da düşüş hareketi sinyali olacaktır.
Daha basit ifadeyle,
Mevcut AC > 0 --> Yükseliş hareketi
Mevcut AC < 0 --> Düşüş hareketi
Bu stratejiye göre, mevcut AC değeriyle göstergenin son 10 periyottaki maksimum ve minimum değerlerini karşılaştırarak AC güçlü veya AC zayıf şeklinde sinyaller alacağız. Mevcut AC değeri göstergenin son 10 periyottaki maksimum değerinden daha yüksekse, bu, AC güçlü sinyali olacaktır. Eğer mevcut AC değeri göstergenin son 10 periyottaki minimum değerinden daha düşükse, bu da AC zayıf sinyali olacaktır.
Daha basit ifadeyle,
Mevcut AC > Son 10 periyottaki maksimum AC --> AC güçlü
Mevcut AC < Son 10 periyottaki minimum AC --> AC zayıf
Bu stratejiye göre, belirli koşullara bağlı olarak alış veya satış sinyalleri alacağız. Mevcut AC değeri göstergenin son 10 periyottaki maksimum değerinin üzerindeyse ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha yüksekse, bu, alış sinyali olacaktır. Eğer mevcut AC değeri göstergenin son 10 periyottaki minimum değerinin altındaysa ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha düşükse, bu da satış sinyali olacaktır.
Daha basit ifadeyle,
Mevcut AC > Son 10 periyottaki maksimum AC ve Mevcut kapanış > 50 periyotluk EMA --> Alış sinyali
Mevcut AC < Son 10 periyottaki minimum AC ve Mevcut kapanış < 50 periyotluk EMA --> Satış sinyali
Accelerator Oscillator göstergesine dayalı ticaret sisteminin planı
Bu bölümde, ele aldığımız her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırlayacağız.
Bu stratejiye göre, ticaret sistemi her tikte mevcut AC değerini kontrol etmeli ve bu değeri sıfır seviyesiyle karşılaştırmalıdır. Daha sonra bu karşılaştırmanın sonucuna göre ilgili sinyali grafik üzerinde yorum olarak görüntülemelidir. Mevcut AC değeri sıfır seviyesinin üzerindeyse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:
- Yükseliş hareketi
- Mevcut AC değeri
Diğer durumda, mevcut AC değeri sıfır seviyesinin altındaysa, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:
- Düşüş hareketi
- Mevcut AC değeri
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
Bu stratejiye göre, ticaret sistemi her tikte mevcut AC değerini ve göstergenin son 10 periyottaki maksimum ve minimum değerlerini kontrol etmeli ve mevcut AC değerini ilgili iki değerle karşılaştırmalıdır. Daha sonra bu karşılaştırmanın sonucuna göre ilgili sinyali grafik üzerinde yorum olarak görüntülemelidir. Mevcut AC değeri göstergenin son 10 periyottaki maksimum değerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:
- AC güçlü
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
Diğer durumda, mevcut AC değeri göstergenin son 10 periyottaki minimum değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:
- AC zayıf
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
Bu stratejiye göre, ticaret sistemi her tikte beş değeri kontrol etmeli (mevcut AC, son 10 periyottaki maksimum AC, son 10 periyottaki minimum AC, mevcut kapanış fiyatı, 50 periyotluk EMA) ve bu değerleri stratejinin koşullarına uygun şekilde karşılaştırarak ilgili sinyali grafik üzerinde yorum olarak görüntülemelidir. Mevcut AC değeri göstergenin son 10 periyottaki maksimum değerinin üzerindeyse ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha yüksekse, ticaret sistemi şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:
- Alış sinyali
- Mevcut kapanış fiyatı
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
- Mevcut MA değeri
Diğer durumda, mevcut AC değeri göstergenin son 10 periyottaki minimum değerinin altındaysa ve bununla birlikte mevcut kapanış fiyatı 50 periyotluk EMA değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:
- Satış sinyali
- Mevcut kapanış fiyatı
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
- Mevcut MA değeri
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
Accelerator Oscillator göstergesine dayalı ticaret sistemi
Bu bölümde, hazırladığımız plan çerçevesinde ele aldığımız stratejilere dayalı olarak bir ticaret sistemi oluşturacağız. Öncelikle, stratejilerimizin programlarına temel olması adına mevcut AC değerini grafik üzerinde yorum olarak görüntüleyecek basit bir program yazalım. Adım adım nasıl yapılacağını görelim:
double fonksiyonunu kullanarak Accelerator Oscillator için bir dizi oluşturalım:
double acArray[];
ArraySetAsSeries fonksiyonunu kullanarak AC dizisini mevcut veriden başlayarak sıralayalım - başarılı olması durumunda true, aksi takdirde false geri döner (bool türü). Parametreleri şunlardır:
- Hedef dizi - acArray ayarlayacağız.
- Bayrak - Dizi indeksleme yönü olarak true değerini kullanacağız.
ArraySetAsSeries(acArray,true);
acDef için int türü değişken oluşturduktan sonra iAC fonksiyonunu kullanarak AC’yi tanımlayalım. iAC fonksiyonu AC göstergesinin tanıtıcısını geri döndürür. Parametreleri şunlardır:
- Sembol adı - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
- Zaman dilimi - Mevcut zaman dilimine uygulanmak üzere _Period kullanacağız.
int acDef = iAC(_Symbol,_Period);
CopyBuffer fonksiyonunu kullanarak acArray dizisini acDef değerleriyle dolduralım. Parametreleri şunlardır:
- Gösterge tanıtıcısı - acDef gösterge tanımını kullanacağız.
- Gösterge arabellek numarası - 0 ayarlayacağız.
- Başlangıç konumu - 0 ayarlayacağız.
- Kopyalanacak veri miktarı - 3 ayarlayacağız.
- Hedef dizi - acArray ayarlayacağız.
CopyBuffer(acDef,0,0,3,acArray);
acVal için double türü değişken oluşturduktan sonra, double türünde değer geri döndüren NormalizeDouble fonksiyonunu kullanarak mevcut AC değerini hesaplayalım. Parametreleri şunlardır:
- Normalleştirilmiş sayı - acArray[0] kullanacağız.
- Ondalık basamak sayısı - 7 ayarlayacağız.
double acVal = NormalizeDouble(acArray[0],7);
Comment fonksiyonunu kullanarak mevcut AC değerini grafikte yorum olarak görüntüleyelim:
Comment("AC Value is ",acVal);
Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:
//+------------------------------------------------------------------+ //| Simple AC.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { double acArray[]; ArraySetAsSeries(acArray,true); int acDef = iAC(_Symbol,_Period); CopyBuffer(acDef,0,0,3,acArray); double acVal = NormalizeDouble(acArray[0],7); Comment("AC Value is ",acVal); } //+------------------------------------------------------------------+
Uzman Danışmanın kodunu derliyoruz, böylece onu MetaTrader 5 terminalinde Kılavuz penceresinde bulabiliriz:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı. Böylece, program mevcut AC değerini grafik üzerinde yorum olarak gösterecektir:
Yukarıdaki görüntüden görebileceğimiz gibi, Uzman Danışman mevcut AC değerini grafiğin sol üst köşesinde yorum olarak görüntülemektedir.
Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:
//+------------------------------------------------------------------+ //| AC Zero Crossover.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { double acArray[]; ArraySetAsSeries(acArray,true); int acDef = iAC(_Symbol,_Period); CopyBuffer(acDef,0,0,3,acArray); double acVal = NormalizeDouble(acArray[0],7); if(acVal > 0) { Comment("Bullish","\n" "AC Value is ",acVal); } if(acVal < 0) { Comment("Bearish","\n" "AC Value is ",acVal); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Stratejinin koşulları:
Yükseliş hareketi:
if(acVal > 0) { Comment("Bullish","\n" "AC Value is ",acVal); }
Düşüş hareketi:
if(acVal < 0) { Comment("Bearish","\n" "AC Value is ",acVal); }
Bu kodu derledikten, herhangi bir hata olmadığından emin olduktan ve daha önce yaptığımız gibi Kılavuzdan Uzman Danışmana çift tıklayarak veya grafik üzerine sürükleyip bırakarak çalıştırdıktan sonra, aşağıdaki gibi grafiğe eklendiğini göreceğiz:
Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı. Şimdi sinyallerimizi almaya hazırız.
Yükseliş sinyali durumunda:
Yukarıdaki görüntüden görebileceğimiz gibi, program yükseliş hareketi koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:
- Yükseliş hareketi
- Mevcut AC değeri
Düşüş sinyali durumunda:
Yukarıdaki görüntüden görebileceğimiz gibi, program düşüş hareketi koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:
- Düşüş hareketi
- Mevcut AC değeri
Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:
//+------------------------------------------------------------------+ //| AC Strength.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { double acArray[]; ArraySetAsSeries(acArray,true); int acDef = iAC(_Symbol,_Period); CopyBuffer(acDef,0,0,11,acArray); double acCurrVal = NormalizeDouble(acArray[0],7); int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY); int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY); double acMaxVal = NormalizeDouble(acArray[acMaxArray],7); double acMinVal = NormalizeDouble(acArray[acMinArray],7); if(acCurrVal>acMaxVal) { Comment("AC is strong ","\n", "AC Value is ",acCurrVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal); } if(acCurrVal<acMinVal) { Comment("AC is weak ","\n", "AC Value is ",acCurrVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Mevcut AC değerini tanımlıyoruz:
double acCurrVal = NormalizeDouble(acArray[0],7);
Maksimum değeri geri döndürmek için ArrayMaximum fonksiyonunu kullanarak tüm AC dizisindeki maksimum değeri tanımlıyoruz. Parametreleri şunlardır:
- Arama yapılacak dizi - acArray ayarlayacağız.
- Başlangıç konumu - Aramanın başlayacağı konum. 1 ayarlayacağız.
- Arama yapılacak veri miktarı - Dizide kontrol edilecek toplam eleman miktarı. Bu dizinin tamamını kontrol etmek için WHOLE_ARRAY kullanacağız.
int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY);
Minimum değeri geri döndürmek için ArrayMinimum fonksiyonunu kullanarak tüm AC dizisindeki minimum değeri tanımlıyoruz. Parametreleri şunlardır:
- Arama yapılacak dizi - acArray ayarlayacağız.
- Başlangıç konumu - Aramanın başlayacağı konum. 1 ayarlayacağız.
- Arama yapılacak veri miktarı - Dizide kontrol edilecek toplam eleman miktarı. Bu dizinin tamamını kontrol etmek için WHOLE_ARRAY kullanacağız.
int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
NormalizeDouble fonksiyonu kullanılarak maksimum ve minimum değerleri normalleştiriyoruz:
double acMaxVal = NormalizeDouble(acArray[acMaxArray],7); double acMinVal = NormalizeDouble(acArray[acMinArray],7);
Stratejinin koşulları:
AC güçlü:
if(acCurrVal>acMaxVal) { Comment("AC is strong ","\n", "AC Value is ",acCurrVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal); }
AC zayıf:
if(acCurrVal<acMinVal) { Comment("AC is weak ","\n", "AC Value is ",acCurrVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal); }
Uzman Danışmanın kodunu derliyoruz ve grafiğe ekliyoruz:
Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı. Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:
AC güçlü:
Yukarıdaki görüntüden görebileceğimiz gibi, program AC güçlü sinyali koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:
- AC güçlü
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
AC zayıf:
Yukarıdaki görüntüden görebileceğimiz gibi, program AC zayıf sinyali koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:
- AC zayıf
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:
//+------------------------------------------------------------------+ //| AC & MA Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ void OnTick() { MqlRates pArray[]; double acArray[]; double maArray[]; int Data=CopyRates(_Symbol,_Period,0,1,pArray); ArraySetAsSeries(acArray,true); ArraySetAsSeries(maArray,true); int acDef = iAC(_Symbol,_Period); int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE); CopyBuffer(acDef,0,0,3,acArray); CopyBuffer(maDef,0,0,3,maArray); int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY); int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY); double closingPrice = pArray[0].close; double acVal = NormalizeDouble(acArray[0],7); double acMaxVal = NormalizeDouble(acArray[acMaxArray],7); double acMinVal = NormalizeDouble(acArray[acMinArray],7); double maVal = NormalizeDouble(maArray[0],7); if(acVal > acMaxVal && closingPrice > maVal) { Comment("Buy","\n" "Closing Price is ",closingPrice,"\n", "Ac Value is ",acVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal,"\n", "MA Value is ",maVal); } if(acVal < acMinVal && closingPrice < maVal) { Comment("Sell","\n" "Closing Price is ",closingPrice,"\n", "Ac Value is ",acVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal,"\n", "MA Value is ",maVal); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Üç dizi oluşturuyoruz (pArray, acArray ve maArray). pArray dışındaki diziler için double fonksiyonunu kullanacağız, pArray için ise fiyat, hacim ve makas bilgilerini depolayan MqlRates fonksiyonunu kullanacağız:
MqlRates pArray[]; double acArray[]; double maArray[];
ArraySetAsSeries fonksiyonunu kullanarak acArray ve maArray dizilerini mevcut veriden başlayarak sıralıyoruz - başarılı olması durumunda true, aksi takdirde false geri döner (bool türü). pArray için MqlRates geçmiş verilerini almak adına CopyRates fonksiyonunu kullanacağız. CopyRates fonksiyonunun parametreleri şunlardır:
- Sembol adı - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
- Zaman dilimi - Mevcut zaman dilimine uygulanmak üzere _Period kullanacağız.
- Başlangıç konumu - 0 ayarlayacağız.
- Kopyalanacak veri miktarı - 1 ayarlayacağız.
- Hedef dizi - pArray ayarlayacağız.
int Data=CopyRates(_Symbol,_Period,0,1,pArray); ArraySetAsSeries(acArray,true); ArraySetAsSeries(maArray,true);
Öncesinde yaptığımız gibi iAC fonksiyonunu kullanarak AC’yi tanımlıyoruz ve ayrıca şimdi iMA fonksiyonunu kullanarak da MA’yı tanımlıyoruz. iMA fonksiyonunun parametreleri şunlardır:
- Sembol adı - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
- Zaman dilimi - Mevcut zaman dilimine uygulanmak üzere _Period kullanacağız.
- Moving Average periyodu - 50 ayarlayacağız.
- Moving Average kayma miktarı - 0 ayarlayacağız.
- Moving Average yöntemi - Exponential Moving Average (MODE_EMA) kullanacağız.
- Uygulanacak fiyat - Kapanış fiyatını (PRICE_CLOSE) kullanacağız.
int acDef = iAC(_Symbol,_Period); int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
CopyBuffer fonksiyonunu kullanarak oluşturduğumuz dizileri acDef ve maDef değerleriyle dolduruyoruz:
CopyBuffer(acDef,0,0,3,acArray); CopyBuffer(maDef,0,0,3,maArray);
acArray'in maksimum ve minimum değerlerini alıyoruz:
int acMaxArray = ArrayMaximum(acArray,1,WHOLE_ARRAY); int acMinArray = ArrayMinimum(acArray,1,WHOLE_ARRAY);
Mevcut AC, maksimum AC, minimum AC ve MA değerlerini tanımlıyoruz:
double acVal = NormalizeDouble(acArray[0],7); double acMaxVal = NormalizeDouble(acArray[acMaxArray],7); double acMinVal = NormalizeDouble(acArray[acMinArray],7); double maVal = NormalizeDouble(maArray[0],7);
Stratejinin koşulları:
Alış sinyali:
if(acVal > acMaxVal && closingPrice > maVal) { Comment("Buy","\n" "Closing Price is ",closingPrice,"\n", "Ac Value is ",acVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal,"\n", "MA Value is ",maVal); }
Satış sinyali:
if(acVal < acMinVal && closingPrice < maVal) { Comment("Sell","\n" "Closing Price is ",closingPrice,"\n", "Ac Value is ",acVal,"\n", "AC Max is ",acMaxVal,"\n", "AC Min is ",acMinVal,"\n", "MA Value is ",maVal); }
Uzman Danışmanın kodunu derliyoruz ve grafiğe ekliyoruz:
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
- Mevcut kapanış fiyatı
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
- Mevcut MA değeri
Satış sinyali:
Yukarıdaki görüntüden görebileceğimiz gibi, program satış sinyali koşulunda aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:
- Satış sinyali
- Mevcut kapanış fiyatı
- Mevcut AC değeri
- Son 10 periyottaki maksimum AC değeri
- Son 10 periyottaki minimum AC değeri
- Mevcut MA değeri
Sonuç
Bu makalede Accelerator Oscillator göstergesini konuk ettik. Başlangıçta, Accelerator Oscillator göstergesinin ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını, nasıl okuyabileceğimizi gördük. Ardından, bazı basit stratejiler aracılığıyla onu ticaretimizde nasıl kullanabileceğimiz hakkında konuştuk:
- AC - Sıfırı çaprazlama: gösterge değerinin sıfır seviyesinin üzerinde veya altında olmasına dayalı olarak yükseliş hareketi veya düşüş hareketi şeklinde sinyaller almak için.
- AC gücü: mevcut AC değerine ve göstergenin son 10 periyottaki maksimum/minimum değerine dayalı olarak AC güçlü veya AC zayıf şeklinde sinyaller almak için.
- AC ve MA: mevcut AC, göstergenin son 10 periyottaki maksimum/minimum değeri, mevcut kapanış ve 50 periyotluk EMA değerlerine dayalı olarak alış veya satış sinyalleri almak için.
Devamında, ele aldığımız stratejiler için ticaret sistemini oluştururken bize yardımcı olması adına ilgili her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırladık. Son bölümde de hazırladığımız plan çerçevesinde, MetaTrader 5 işlem platformunda kullanılmak üzere, ele aldığımız stratejilere dayalı olarak otomatik sinyaller üretecek bir ticaret sistemi oluşturduk.
Umarım, makalenin başında ifade ettiğim gibi, öğrendiklerinizi pratiğe dökmüş ve bu makalenin konusu veya ilgili herhangi bir konu hakkında daha fazla bilgi edinerek bu makaleden tam olarak yararlanmışsınızdır. Şunu da her zaman olduğu gibi bir kez daha hatırlatmak istiyorum: herhangi bir stratejiyi bir gerçek hesapta kullanmadan önce onu tam anlamıyla test ettiğinizden emin olmalısınız. Başkaları için yararlı olan bir şey, sizin için mutlaka yararlı olmayabilir. Buradaki temel amaç sadece eğitimdir.
Umarım makale sizin için faydalı olur ve ticaret hedeflerinize ulaşmanıza, bu veya başka herhangi bir konuda yeni fikirler bulmanıza yardım sağlar. Bu makaleyi beğendiyseniz ve buna benzer daha fazla makale okumak istiyorsanız, en popüler teknik göstergelere dayalı ticaret sistemlerinin nasıl geliştirileceğini öğrenme konulu bu serideki diğer makaleleri de okuyabilirsiniz - RSI, MACD, Stochastic Oscillator, Moving Average, Bollinger Bands, Envelopes dahil daha birçok araca dayalı ticaret sistemlerinin nasıl geliştirileceğini halihazırda işledik. Bir sonraki ilginç göstergede tekrar buluşmak dileğiyle.
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/11467
- Ü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