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

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

MetaTrader 5Ticaret | 9 Haziran 2023, 08:56
272 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

En popüler teknik göstergelere dayalı ticaret sistemlerini nasıl oluşturacağımızı öğrendiğimiz serimizin yeni makalesine hoş geldiniz. Bu yeni makalede, ticaretimizi geliştirmek için kullanılabilecek yeni bir aracı ayrıntılı olarak inceleyeceğiz ve arkasındaki temel konsepte dayalı olarak bir ticaret sisteminin nasıl oluşturulacağını öğreneceğiz. Bu yeni gösterge Standard Deviation göstergesidir. Bu göstergeyi aşağıdaki konular aracılığıyla detaylıca ele alacağız:

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

“Standard Deviation göstergesinin tanımı” başlıklı ilk bölümde, Standard Deviation göstergesinin ne olduğunu, neyi ölçtüğünü ve manuel olarak nasıl hesaplandığını öğreneceğiz. Ayrıca hesaplama adımlarını bir örnek üzerinde de pratik edeceğiz, böylece göstergenin ana fikrini daha iyi anlayacağız ve stratejilerimizde onu daha etkili bir şekilde kullanabileceğiz. Ardından, “Standard Deviation göstergesi stratejileri” bölümünde, göstergenin arkasındaki konsepte dayanan bazı basit stratejileri ele alarak onu ticaretimizde bize fayda sağlayacak şekilde nasıl kullanabileceğimizden bahsedeceğiz. Devamında, “Standard Deviation göstergesine dayalı ticaret sisteminin planı” bölümünde, bu 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. Son olarak da makalenin “Standard Deviation göstergesine dayalı ticaret sistemi” adlı en ilgi çekici bölümüne geçeceğiz - hazırladığımız plan çerçevesinde, ele aldığımız stratejilere dayalı olarak MetaTrader 5’te otomatik şekilde sinyaller üretecek bir ticaret sistemi oluşturacağız.

Bu 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.

Makaledeki bilgilere ilişkin anlayışınızı derinleştirmek ve bu veya ilgili herhangi bir konuda daha fazla fikir keşfetmek için öğrendiklerinizi kendi başınıza uygulamanızı tavsiye ederim. Buna ek olarak, her zaman olduğu gibi şu önemli detayı tekrar hatırlatmak istiyorum: herhangi bir stratejiyi gerçek hesabınızda kullanmadan önce, sizin için yararlı olup olmayacağını bilmek adına tam anlamıyla test ettiğinizden emin olmalısınız.

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.

Yeni aracımızı öğrenmek için konularımıza başlayalım.


Standard Deviation göstergesinin tanımı

Bu bölümde, Standard Deviation göstergesinin ne olduğunu, neyi ölçtüğünü ve manuel olarak nasıl hesaplandığını öğreneceğiz. Göstergenin ana fikrini daha iyi kavrayabilmek adına hesaplama adımlarını bir örnek üzerinde de pratik edeceğiz.

Standart sapma (standard deviation), bir istatistik terimidir. Ortalama etrafındaki dağılımı ölçer. Ancak dağılım nedir? Basit bir ifadeyle, herhangi bir gerçek değer ile ortalama arasındaki farktır. Dağılım ne kadar yüksek olursa, standart sapma da o kadar yüksek olur. Dağılım ne kadar düşük olursa, standart sapma da o kadar düşük olur. Standard Deviation göstergesi volatiliteyi ölçer.

Şimdi Standard Deviation göstergesinin nasıl hesaplandığını görelim. Göstergeyi hesaplamak için aşağıdaki adımları izlememiz gerekiyor:

1- İstenen periyot için ortalamaları hesapla.

2- Her kapanış fiyatını ortalamadan çıkararak sapmaları hesapla.

3- Hesaplanan her sapmanın karesini al.

4- Sapmaların karelerini topla ve değer sayısına böl.

5- Standart sapmayı hesapla = Dördüncü adımın sonucunun karekökünü al.

Şimdi tüm bu adımları bir örnek üzerinde uygulayalım. Bir finansal enstrüman için aşağıdaki verilere sahip olduğumuzu varsayalım:

# Kapanış fiyatı
1 1.05535
2 1.05829
3 1.0518
4 1.04411
5 1.04827
6 1.04261
7 1.04221
8 1.02656
9 1.01810
10 1.01587
11 1.01831

Birinci adım: 10 periyotluk hareketli ortalamaları hesaplayacağız (onuncuya kadar olan MA'ların aynı değere sahip olduğunu kabul edeceğiz). Böylece aşağıdaki hesaplama sonucunu elde ederiz.

Standard Deviation göstergesini hesaplama örneği - Birinci adım

İkinci adım: Sapmaları hesapla.

Standard Deviation göstergesini hesaplama örneği - İkinci adım

Üçüncü adım: Sapmaların karelerini hesapla.

Standard Deviation göstergesini hesaplama örneği - Üçüncü adım

Dördüncü adım: Sapmaların karelerinin ortalamasını hesapla.

Standard Deviation göstergesini hesaplama örneği - Dördüncü adım

Beşinci adım: Standart sapmayı hesapla = Dördüncü adımın sonucunun karekökünü al.

Standard Deviation göstergesini hesaplama örneği - Beşinci adım

Böylece Standard Deviation göstergesini manuel olarak hesapladık. Günümüzde, MetaTrader 5 platformuyla standart olarak gelen hazır bir gösterge bulunduğundan, Standard Deviation göstergesini manuel olarak hesaplamamıza gerek yoktur. Tek yapmamız gereken mevcut göstergeler arasından onu seçmektir. Bunu nasıl yapabileceğimiz aşağıda açıklanmaktadır:

Standard Deviation göstergesini MetaTrader 5 platformunda bir grafiğe eklemek için Ekle --> Göstergeler --> Trend --> Standard Deviation yolunu izleyin.

Standard Deviation göstergesini ekleme

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

Standard Deviation göstergesi parametreleri

1- Kullanacağımız periyodu ayarlamak için.

2- Gösterge çizgisinin yatay kayma miktarını ayarlamak için (istiyorsak).

3- Moving Average türünü seçmek için.

4- Hesaplamada kullanacağımız fiyat türünü seçmek için.

5- Gösterge çizgisinin rengini ayarlamak için.

6- Gösterge çizgisinin stilini ayarlamak için.

7- Gösterge çizgisinin kalınlığını ayarlamak için.

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

Grafikte Standard Deviation göstergesi

Yukarıdaki görüntüde, Standard Deviation göstergesinin grafiğe eklendiğini ve standart sapma değerlerinden çizilen bir salınım çizgisi olarak alt pencerede görüntülendiğini görüyoruz.


Standard Deviation göstergesi stratejileri

Göstergenin ana konseptini ve nasıl hesaplandığını öğrendikten sonra, şimdi onu ticarette nasıl kullanabileceğimizi inceleyelim. Bu amaçla, üç basit strateji örneğini analiz edeceğiz. Birinci strateji, volatiliteyi ölçmek için kullanacağımız “Standard Deviation - Volatilite”dir. İkinci strateji, alış veya satış sinyalleri almak için Standard Deviation göstergesini Moving Average ile birlikte kullanacağımız “Standard Deviation - Std ve MA”dır. Üçüncü strateji ise yüksek volatilite sonrası alış veya satış sinyalleri almak için Standard Deviation göstergesini birinci stratejiyi göz önünde bulundurarak Moving Average ile birlikte kullanacağımız “Standard Deviation - Std, volatilite ve MA”dır.

  • Birinci strateji: Standard Deviation - Volatilite:

Bu stratejiye göre, mevcut Standard Deviation değerini önceki beş Standard Deviation değerinin ortalamasıyla karşılaştırarak volatiliteyi ölçeceğiz. Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha yüksekse, bu, yüksek volatilite anlamına gelecektir. Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha düşükse, bu da düşük volatilite anlamına gelecektir.

Mevcut Standard Deviation > Önceki beş Standard Deviation’ın ortalaması --> Yüksek volatilite

Mevcut Standard Deviation < Önceki beş Standard Deviation’ın ortalaması --> Düşük volatilite

  • İkinci strateji: Standard Deviation - Std ve MA:

Bu stratejiye göre, belirli koşullara bağlı olarak alış veya satış sinyalleri alacağız. Mevcut Standard Deviation değeri, önceki Standard Deviation değerinden daha yüksekse ve aynı zamanda mevcut Alış fiyatı da mevcut Moving Average değerinden daha yüksekse, bu, alış sinyali olacaktır. Mevcut Standard Deviation değeri, önceki Standard Deviation değerinden daha yüksekse ve buna ek olarak mevcut Satış fiyatı da mevcut Moving Average değerinden daha düşükse, bu da satış sinyali olacaktır.

Mevcut Standard Deviation > Önceki Standard Deviation ve Mevcut Alış fiyatı > Mevcut MA --> Alış sinyali

Mevcut Standard Deviation > Önceki Standard Deviation ve Mevcut Satış fiyatı < Mevcut MA --> Satış sinyali

  • Üçüncü strateji: Standard Deviation - Std, volatilite ve MA:

Bu stratejiye göre, belirli koşullara bağlı olarak alış veya satış sinyalleri alacağız. Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha yüksekse ve aynı zamanda mevcut Alış fiyatı da mevcut Moving Average değerinden yüksekse, bu, alış sinyali olacaktır. Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha yüksekse ve buna ek olarak mevcut Satış fiyatı da mevcut Moving Average değerinden daha düşükse, bu da satış sinyali olacaktır.

Mevcut Standard Deviation > Önceki beş Standard Deviation’ın ortalaması ve Mevcut Alış fiyatı > Mevcut MA --> Alış sinyali

Mevcut Standard Deviation > Önceki beş Standard Deviation’ın ortalaması ve Mevcut Satış fiyatı < Mevcut MA --> Satış sinyali

Bu stratejiler, volatiliteyi ölçmek ve farklı koşullara bağlı olarak alış veya satış sinyalleri almak için Standard Deviation göstergesinin nasıl kullanılacağına dair basit örneklerdir. Ayrıca, ticaret planınıza ve stratejinize dayalı olarak finansal enstrümanı birden fazla perspektiften değerlendirmek amacıyla Standard Deviation göstergesini diğer teknik göstergelerle kombine etmeyi de deneyebilirsiniz.


Standard Deviation 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 adımı bir ticaret sistemi oluşturma sürecindeki en önemli adım olarak görüyorum çünkü oluşturacağımız bu plan, ticaret sisteminin kodunu yazarken bize bir kılavuz olarak hizmet edecektir.

  • Birinci strateji: Standard Deviation - Volatilite:

Bu stratejiye göre, ticaret sistemi sürekli olarak iki değeri (mevcut Standard Deviation değeri ve önceki beş Standard Deviation değerinin ortalaması) kontrol etmeli, birbirleriyle karşılaştırmalı ve hangisinin daha yüksek olduğunu belirleyerek grafik üzerinde uygun yorumu görüntülemelidir. Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha yüksekse, grafikte yorum olarak şu ifadeler görüntülenmelidir:

  • Yüksek volatilite.
  • Mevcut Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.

Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha düşükse, bu sefer de grafikte yorum olarak şu ifadeler görüntülenmelidir:

  • Düşük volatilite.
  • Mevcut Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:

Standard Deviation - Volatilite planı

  • İkinci strateji: Standard Deviation - Std ve MA:

Bu stratejiye göre, ticaret sistemi sürekli olarak beş değeri (mevcut Standard Deviation değeri, önceki Standard Deviation değeri, mevcut Alış fiyatı, mevcut Satış fiyatı ve mevcut Moving Average değeri) kontrol etmeli ve birbirleriyle uygun şekilde karşılaştırarak grafik üzerinde ilgili yorumu görüntülemelidir.

Mevcut Standard Deviation değeri, önceki Standard Deviation değerinden daha yüksekse ve aynı zamanda mevcut Alış fiyatı da mevcut Moving Average değerinden daha yüksekse, grafikte yorum olarak şu ifadeler görüntülenmelidir:

  • Alış sinyali.
  • Mevcut Standard Deviation değeri.
  • Önceki Standard Deviation değeri.
  • Mevcut Alış fiyatı.
  • Mevcut Moving Average değeri.

Mevcut Standard Deviation değeri, önceki Standard Deviation değerinden daha yüksekse ve buna ek olarak mevcut Satış fiyatı da mevcut Moving Average değerinden daha düşükse, bu sefer de grafikte yorum olarak şu ifadeler görüntülenmelidir:

  • Satış sinyali.
  • Mevcut Standard Deviation değeri.
  • Önceki Standard Deviation değeri.
  • Mevcut Satış fiyatı.
  • Mevcut Moving Average değeri.
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:

Standard Deviation - Std ve MA planı

  • Üçüncü strateji: Standard Deviation - Std, volatilite ve MA:

Bu stratejiye göre, ticaret sistemi sürekli olarak beş değeri (mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalaması, mevcut Alış fiyatı, mevcut Satış fiyatı ve mevcut Moving Average değeri) kontrol etmeli ve birbirleriyle uygun şekilde karşılaştırarak grafik üzerinde ilgili yorumu görüntülemelidir.

Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha yüksekse ve aynı zamanda mevcut Alış fiyatı da mevcut Moving Average değerinden yüksekse, grafikte yorum olarak şu ifadeler görüntülenmelidir:

  • Alış sinyali.
  • Mevcut Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.
  • Mevcut Alış fiyatı.
  • Mevcut Moving Average değeri.

Mevcut Standard Deviation değeri, önceki beş Standard Deviation değerinin ortalamasından daha yüksekse ve buna ek olarak mevcut Satış fiyatı da mevcut Moving Average değerinden daha düşükse, bu sefer de grafikte yorum olarak şu ifadeler görüntülenmelidir:

  • Satış sinyali.
  • Mevcut Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.
  • Mevcut Satış fiyatı.
  • Mevcut Moving Average değeri.
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:

Standard Deviation - Std, volatilite ve MA planı

Böylece, ticaret sistemini oluştururken bize kolaylık sağlayacak adım adım ifadeler içeren planımızı hazırladık, şimdi ticaret sistemini yazmaya geçebiliriz. 


Standard Deviation 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 MQL5 dili aracılığıyla bir ticaret sistemi oluşturacağız. İlk olarak, stratejilerimizin programlarına temel olması adına mevcut Standard Deviation değerini grafik üzerinde yorum olarak görüntüleyecek basit bir program yazalım.  

  • Değerlerin kesirli olarak ifade edilmesi için double fonksiyonunu kullanarak Standard Deviation için bir dizi oluşturalım. double türü, veri türlerinden biri olan kesirli veri türlerinin bir çeşididir.
double StdDevArray[];
  • ArraySetAsSeries fonksiyonunu kullanarak Standard Deviation dizisini mevcut veriden başlayarak sıralayalım - başarılı olması durumunda true, aksi takdirde false geri döner (bool türü). Fonksiyonunun parametreleri şunlardır:
    • dizi
    • bayrak
ArraySetAsSeries(StdDevArray,true);
  • StdDevDef için int türü değişken oluşturduktan sonra iStdDev fonksiyonunu kullanarak Standard Deviation'ı tanımlayalım. iStdDev fonksiyonu Standard Deviation göstergesinin tanıtıcısını geri döndürür. Fonksiyonunun parametreleri şunlardır:
    • Sembol - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
    • Zaman dilimi - Mevcut zaman dilimine uygulanmak üzere _Period kullanacağız.
    • Moving Average periyodu - Varsayılan olarak 20 ayarlayacağız.
    • Moving Average için yatay kayma - 0 ayarlayacağız.
    • Moving Average yöntemi - Simple Moving Average (MODE_SMA) kullanacağız.
    • Uygulanacak fiyat - Kapanış fiyatını (PRICE_CLOSE) kullanacağız.
int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
  • CopyBuffer fonksiyonunu kullanarak StdDevArray dizisini StdDevDef değerleriyle dolduralım - başarılı olması durumunda kopyalanan veri miktarı, aksi takdirde -1 geri döner. Fonksiyonunun parametreleri şunlardır:
    • Gösterge tanıtıcısı - StdDevDef 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 - StdDevArray ayarlayacağız.
CopyBuffer(StdDevDef,0,0,3,StdDevArray);
  • StdDevVal 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 Standard Deviation değerini hesaplayalım. Fonksiyonunun parametreleri şunlardır:
    • Normalleştirilmiş sayı - StdDevArray[0] kullanacağız.
    • Ondalık basamak sayısı - 6 ayarlayacağız.
double StdDevVal = NormalizeDouble(StdDevArray[0],6);
  • Comment fonksiyonunu kullanarak mevcut Standard Deviation değerini grafikte yorum olarak görüntüleyelim:
Comment("StdDev Value is",StdDevVal);

 Kodu derliyoruz, hata veya uyarı olmamalıdır. Ardından, derlenmiş Uzman Danışman, Kılavuz penceresinde görünecektir:

Kılavuz - Simple Std Dev

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

Simple Std Dev penceresi

Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:

Grafiğe eklenmiş Simple Std Dev

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

Grafikte mevcut Standard Deviation değeri

Yukarıdaki görüntüden görebileceğimiz gibi, Uzman Danışman mevcut Standard Deviation değerini grafiğin sol üst köşesinde yorum olarak görüntülemektedir. Programımızdaki değerlerin MetaTrader 5'teki yerleşik Standard Deviation göstergesi tarafından görüntülenen değerlerle aynı olup olmadığını da kontrol edebiliriz. Bunu yapmak için, oluşturduğumuz Uzman Danışmanı yerleşik Standard Deviation göstergesiyle beraber grafik üzerinde çalıştıralım:

Simple Std Dev ile yerleşik Standard Deviation aynı değeri görüntülemektedir 

  • Birinci strateji: Standard Deviation - Volatilite:

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

//+------------------------------------------------------------------+
//|                                  Simple Std Dev - Volatility.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 StdDevArray[];

   ArraySetAsSeries(StdDevArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

  }
//+------------------------------------------------------------------+

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

Burada yalnızca mevcut Standard Deviation değerini değil, aynı zamanda önceki beş Standard Deviation değerini de tanımlıyoruz:

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);

Önceki beş Standard Deviation değerinin ortalamasını hesaplıyoruz:

double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);

Stratejinin koşulları:

Yüksek volatilite:

   if(StdDevVal>StdDevAVGVal)
     {
      Comment("High volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

Düşük volatilite:

   if(StdDevVal<StdDevAVGVal)
     {
      Comment("Low volatility","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal);
     }

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

Kılavuz - Simple Std Dev - Volatility

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

Simple Std Dev - Volatility penceresi

Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:

Grafiğe eklenmiş Simple Std Dev - Volatility

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üksek volatilite:

Simple Std Dev - Volatility - Yüksek volatilite

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

  • Yüksek volatilite.
  • Mevcut Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.

Düşük volatilite:

Simple Std Dev - Volatility - Düşük volatilite

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

  • Düşük volatilite.
  • Mevcut Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.
Burada, bir ölçüm olarak volatilite hakkında bizi bilgilendiren sinyaller üretebilen bir ticaret sisteminin nasıl oluşturulacağını öğrendik. Şimdi ikinci stratejiye geçelim.
  • İkinci strateji: Standard Deviation - Std ve MA:

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

//+------------------------------------------------------------------+
//|                                    Simple Std Dev - Std & MA.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 Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,3,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

   double MAValue = NormalizeDouble(PArray[0],6);


   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }

//+------------------------------------------------------------------+

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

Mevcut Alış ve Satış fiyatlarını hesaplıyoruz: onlar için double türü değişkenler oluşturuyoruz, double türünde değer geri döndüren NormalizeDouble fonksiyonunu kullanıyoruz ve ardından belirli bir sembolün belirli bir özelliğini geri döndüren SymbolInfoDouble fonksiyonunu kullanıyoruz.  SymbolInfoDouble fonksiyonunun parametreleri şunlardır:

  • Sembol adı - Mevcut sembole uygulanmak üzere _Symbol kullanacağız.
  • Özellik kimliği - SYMBOL_ASK ve SYMBOL_BID kullanacağız.
double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

Fiyatlar için bir dizi oluşturuyoruz:

double PArray[];

Fiyat dizisini mevcut veriden başlayarak sıralıyoruz:

ArraySetAsSeries(PArray,true);

MADef için int türü değişkeni oluşturduktan sonra iMA fonksiyonunu kullanarak MA'yı tanımlıyoruz:

int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

CopyBuffer fonksiyonunu kullanarak fiyat dizisini (PArray) MADef değerleriyle dolduruyoruz:

CopyBuffer(MADef,0,0,10,PArray);

Önceki Standard Deviation değerini tanımlıyoruz:

double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);

Mevcut Moving Average değerini tanımlıyoruz:

double MAValue = NormalizeDouble(PArray[0],6);

Stratejinin koşulları:

Alış sinyali:

   if(StdDevVal>StdDevVal1&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

Satış sinyali:

   if(StdDevVal>StdDevVal1&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Previous Std Dev value is ",StdDevVal1,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

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

Kılavuz - Simple Std Dev - Std & MA

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

Simple Std Dev - Std & MA penceresi

Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:

Grafiğe eklenmiş Simple Std Dev - Std & MA

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:

Simple Std Dev - Std & MA - 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 Standard Deviation değeri.
  • Önceki Standard Deviation değeri.
  • Mevcut Alış fiyatı.
  • Mevcut Moving Average değeri.

Satış sinyali:

Simple Std Dev - Std & MA - 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 Standard Deviation değeri.
  • Önceki Standard Deviation değeri.
  • Mevcut Satış fiyatı.
  • Mevcut Moving Average değeri.

Burada, Standard Deviation ve Moving Average göstergelerine dayalı alış ve satış sinyalleri üretebilen bir ticaret sisteminin nasıl oluşturulacağını öğrendik. Şimdi üçüncü stratejiye geçelim.

  • Üçüncü strateji: Standard Deviation - Std, volatilite ve MA:

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

//+------------------------------------------------------------------+
//|                  Simple Std Dev - Std Dev & AVG Std Dev & MA.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 Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   double StdDevArray[];
   double PArray[];

   ArraySetAsSeries(StdDevArray,true);
   ArraySetAsSeries(PArray,true);

   int StdDevDef = iStdDev(_Symbol,_Period,20,0,MODE_SMA,PRICE_CLOSE);
   int MADef = iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

   CopyBuffer(StdDevDef,0,0,6,StdDevArray);
   CopyBuffer(MADef,0,0,10,PArray);

   double StdDevVal = NormalizeDouble(StdDevArray[0],6);
   double StdDevVal1 = NormalizeDouble(StdDevArray[1],6);
   double StdDevVal2 = NormalizeDouble(StdDevArray[2],6);
   double StdDevVal3 = NormalizeDouble(StdDevArray[3],6);
   double StdDevVal4 = NormalizeDouble(StdDevArray[4],6);
   double StdDevVal5 = NormalizeDouble(StdDevArray[5],6);
   double StdDevAVGVal = ((StdDevVal1+StdDevVal2+StdDevVal3+StdDevVal4+StdDevVal5)/5);
   double MAValue = NormalizeDouble(PArray[0],6);

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

  }
  
//+------------------------------------------------------------------+

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

Stratejinin koşulları:

Alış sinyali:

   if(StdDevVal>StdDevAVGVal&&Ask>MAValue)
     {
      Comment("Buy signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Ask value is ",Ask,"\n",
              "MA value is ",MAValue);
     }

Satış sinyali:

   if(StdDevVal>StdDevAVGVal&&Bid<MAValue)
     {
      Comment("Sell signal","\n",
              "Current Std Dev value is ",StdDevVal,"\n",
              "Std Dev Avg value is ",StdDevAVGVal,"\n",
              "Bid value is ",Bid,"\n",
              "MA value is ",MAValue);
     }

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

Kılavuz - Simple Std Dev - Std Dev & Std AVG & MA

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

Simple Std Dev - Std Dev & Std AVG & MA penceresi

Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:

Grafiğe eklenmiş Simple Std Dev - Std Dev & Std AVG & MA

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:

Simple Std Dev - Std Dev & Std AVG & MA - 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 Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.
  • Mevcut Alış fiyatı.
  • Mevcut Moving Average değeri.

Satış sinyali:

Simple Std Dev - Std Dev & Std AVG & MA - 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 Standard Deviation değeri.
  • Önceki beş Standard Deviation değerinin ortalaması.
  • Mevcut Satış fiyatı.
  • Mevcut Moving Average değeri.

Burada, birinci stratejiyi göz önünde bulundurarak Standard Deviation ve Moving Average göstergelerine dayalı alış ve satış sinyalleri üretebilen bir ticaret sisteminin nasıl oluşturulacağını öğrendik.


Sonuç

Bu makalede Standard Deviation göstergesi hakkında konuştuk. İlk olarak, ne olduğunu, neyi ölçtüğünü ve manuel olarak nasıl hesaplandığını inceledik. Hesaplama adımlarını bir örnek üzerinde de pratik ederek göstergeye olan bilgimizi derinleştirdik. Devamında, arkasındaki konsepte dayanan bazı basit stratejileri ele alarak onu ticaretimizde nasıl kullanabileceğimizi gördük: Birinci strateji, volatilite hakkında bizi bilgilendiren “Standard Deviation - Volatilite” stratejisiydi. İkinci strateji, Standard Deviation ve Moving Average göstergelerinin kombinasyonuyla alış ve satış sinyalleri oluşturan “Standard Deviation - Std ve MA” stratejisiydi. Ve üçüncü strateji de birinci stratejiyi göz önünde bulundurarak Standard Deviation ve Moving Average göstergelerinin kombinasyonuyla alış ve satış sinyalleri oluşturan “Standard Deviation - Std, volatilite ve MA” stratejisiydi. Ardından, 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 olarak da hazırladığımız plan çerçevesinde, MetaTrader 5 işlem platformunda kullanılmak üzere, ele aldığımız stratejilere dayalı olarak MQL5 dili aracılığıyla bir ticaret sistemi oluşturduk. Oluşturduğumuz bu ticaret sistemi, insan müdahalesi olmadan otomatik ve hassas bir şekilde çalışacak, ticaret süreçlerini verimli hale getirecek ve bu sayede ticaretimizi kolaylaştırarak zamandan tasarruf etmemize olanak sağlayacaktır.

Ayrıca, bu göstergeyi başka bir göstergeyle kombine etmek daha iyi sonuçlar verebilir. Birden çok göstergenin bir arada kullanılması teknik analizin önemli özelliklerinden biridir. Finansal enstrümana birçok perspektiften bakmaya olanak sağlayarak, hakkında daha fazla bilgi edinmeyi ve büyük resmi daha net görmeyi mümkün kılar.

Şunu her zaman olduğu gibi tekrar hatırlatmak istiyorum: Sizin için uygun olup olmadıklarını değerlendirmek adına, ticarette kullanmadan önce tüm stratejileri kapsamlı olarak test ettiğinizden emin olmalısınız. Sonuçta, başkaları için işe yarayan şey, sizin için mutlaka işe yaramayabilir. 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 makaleler okumak istiyorsanız, popüler teknik göstergelere dayalı ticaret sistemlerinin nasıl geliştirileceğini öğrenme konulu bu serideki diğer makaleleri de okuyabilirsiniz. Bir sonraki makalede görüşmek üzere, hepinize bol kazançlı ticaretler diliyorum.

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

Chaikin Oscillator göstergesine dayalı bir ticaret sistemi nasıl geliştirilir? Chaikin 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 makalesine hoş geldiniz. Bu yeni makalede, Chaikin Oscillator göstergesine dayalı bir ticaret sisteminin nasıl geliştirileceğini öğreneceğiz.
Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 17): İnternetteki verilere erişme (III) Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 17): İnternetteki verilere erişme (III)
Bu makalede, internetten nasıl veri elde edileceğini ve Uzman Danışmanda nasıl kullanılacağını ele almaya devam ediyoruz. Bu kez alternatif bir sistem geliştireceğiz.
Popülasyon optimizasyon algoritmaları Popülasyon optimizasyon algoritmaları
Bu makale, optimizasyon algoritması sınıflandırmasına giriş niteliğinde bir makaledir. Makalede, optimizasyon algoritmalarını karşılaştırmaya ve belki de yaygın olarak bilinen algoritmalar arasından en evrensel olanını belirlemeye hizmet edecek bir test ortamı (bir fonksiyon kümesi) oluşturmaya odaklanılmaktadır.
Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 16): İnternetteki verilere erişme (II) Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 16): İnternetteki verilere erişme (II)
İnternetten Uzman Danışmana verilerin nasıl alınacağı o kadar net değildir. MetaTrader 5'in sunduğu tüm olanakları anlamadan bunu yapabilmek zordur.