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

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

MetaTrader 5Ticaret | 12 Haziran 2023, 10:37
305 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

En popüler teknik göstergelere dayalı ticaret sistemlerinin nasıl geliştirileceğine ilişkin serimizin yeni makalesindeyiz. Bu makalemizde yeni bir teknik göstergeyi inceleyeceğiz: Chaikin Oscillator.

Bu teknik göstergeyi aşağıdaki konular aracılığıyla detaylıca ele alacağız:

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

Bu konular aracılığıyla, adım adım Chaikin Oscillator göstergesine dayalı bir ticaret sisteminin nasıl tasarlanacağını öğreneceğiz. Başlangıçta, “Chaikin Oscillator göstergesinin tanımı” bölümünde, göstergenin ne olduğunu, neyi ölçtüğünü ve manuel olarak nasıl hesaplandığını öğreneceğiz. Böylece göstergenin ana konseptini iyi bir şekilde anlamış olacağız. Devamında, "Chaikin Oscillator göstergesi stratejileri" bölümünde, göstergenin bu ana fikrine dayanan bazı basit stratejileri ele alarak onu ticaretimizde bize fayda sağlayacak şekilde nasıl kullanabileceğimizden bahsedeceğiz. Ardından, “Chaikin Oscillator 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 “Chaikin Oscillator göstergesine dayalı ticaret sistemi” bölümünde, 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.

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.

Şimdi yeni bir teknik aracı daha keşfetmeye başlayalım.


Chaikin Oscillator göstergesinin tanımı

Bu bölümde, Chaikin Oscillator göstergesini detaylıca inceleyerek arkasındaki konsepti kavrayacağız. Chaikin Oscillator göstergesi bir momentum göstergesidir. Marc Chaikin tarafından oluşturulmuştur ve onun adını almıştır. Moving Average Convergence Divergence (MACD) formülünü kullanarak birikim dağılım çizgisinin momentumunu ölçer. Bu momentumun hareketlerine dayanarak, birikim dağılım çizgisindeki yön değişiklikleri hakkında fikir edinebiliriz.

Chaikin Oscillator göstergesinin manuel olarak hesaplanması aşağıdaki adımlardan oluşur:

  1. Para akışı çarpanını hesapla = ((kapanış-düşük)-(yüksek-kapanış))/(yüksek-düşük)
  2. Para akışı hacmini hesapla = para akışı çarpanı * periyot hacmi
  3. Birikim dağılım çizgisini (Accumulation Distribution Line, ADL) hesapla = önceki ADL + mevcut para akışı hacmi
  4. Chaikin Oscillator = (ADL'in 3 periyotluk EMA'sı)-(ADL'in 10 periyotluk EMA'sı)

Günümüzde, MetaTrader 5 platformuyla standart olarak gelen hazır bir gösterge bulunduğundan, Chaikin Oscillator 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:

Chaikin Oscillator göstergesini MetaTrader 5 platformunda bir grafiğe eklemek için Ekle --> Göstergeler --> Osilatörler --> Chaikin Oscillator yolunu izleyin.

Chaikin Oscillator göstergesini ekleme

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

Chaikin Oscillator göstergesi parametreleri

1- Hacim türünü ayarlamak için.

2- Hızlı hareketli ortalamanın periyodunu ayarlamak için.

3- Yavaş hareketli ortalamanın periyodunu ayarlamak için.

4- Hareketli ortalamanın türünü ayarlamak için.

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

6- Gösterge çizgisinin türünü 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 Chaikin Oscillator göstergesi

Yukarıdaki görüntüde, Chaikin Oscillator göstergesinin grafiğe eklendiğini ve sıfır seviyesinin üstünde ve altında salınan bir çizgi olarak alt pencerede görüntülendiğini görüyoruz.


Chaikin Oscillator göstergesi stratejileri

Bu bölümde, Chaikin Oscillator göstergesini ana konseptine uygun olarak bazı basit stratejilerle nasıl kullanabileceğimizi göreceğiz. Daha bilinçli ticaret kararları vermek için bu göstergeyi başka bir göstergeyle kombine etmek iyi bir yaklaşım olacaktır. Birden çok göstergenin bir arada kullanılması teknik analizin önemli özelliklerinden biridir. Ancak herhangi bir stratejiyi bir gerçek hesapta kullanmadan önce dikkatlice test etmenin çok önemli olduğunu unutmayın. Sonuçta, bir başkası için işe yarayan bir şey, sizin için mutlaka işe yaramayabilir.

  • Birinci strateji: Chaikin Oscillator - Çaprazlama:

Bu stratejiye göre, mevcut Chaikin Oscillator değerinin sıfır seviyesinin üzerinde veya altında olmasına dayalı olarak alış veya satış sinyalleri alacağız. Mevcut Chaikin Oscillator değeri sıfır seviyesinin üzerindeyse, bu, alış sinyali olacaktır. Diğer senaryoda, mevcut Chaikin Oscillator değeri sıfır seviyesini altındaysa, bu da satış sinyali olacaktır.

Daha basit ifadeyle,

Mevcut Chaikin Oscillator > Sıfır seviyesi --> Alış sinyali

Mevcut Chaikin Oscillator < Sıfır seviyesi --> Satış sinyali

  • İkinci strateji: Chaikin Oscillator hareketi:

Bu stratejiye göre, gösterge çizgisinin hareketinin son iki değerine dayalı olarak Chaikin Oscillator yükseliyor veya Chaikin Oscillator düşüyor şeklinde sinyaller alacağız. Mevcut Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha yüksekse, bu Chaikin Oscillator yükseliyor sinyali olacaktır. Tersi şekilde, mevcut Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha düşükse, bu da Chaikin Oscillator düşüyor sinyali olacaktır.

Daha basit ifadeyle,

Mevcut Chaikin Oscillator > Önceki Chaikin Oscillator --> Chaikin Oscillator yükseliyor

Mevcut Chaikin Oscillator < Önceki Chaikin Oscillator --> Chaikin Oscillator düşüyor

  • Üçüncü strateji: Chaikin Oscillator - Yükseliş trendi:

Bu stratejiye göre, yükseliş trendi sırasında, mevcut yüksek değerini önceki yüksek değeriyle ve ayrıca mevcut Chaikin Oscillator değerini de önceki Chaikin Oscillator değeriyle karşılaştırarak güçlü yükseliş trendi veya ayı türü diverjans sinyallerini alacağız. Mevcut yüksek değeri önceki yüksek değerinden daha yüksekse ve bununla birlikte mevcut Chaikin Oscillator değeri de önceki Chaikin Oscillator değerinden daha yüksekse, bu, güçlü yükseliş trendi olacaktır. Eğer mevcut yüksek değeri önceki yüksek değerinden daha yüksekken mevcut Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha düşükse, bu da ayı türü diverjans olacaktır.

Mevcut yüksek > Önceki yüksek ve Mevcut Chaikin Oscillator > Önceki Chaikin Oscillator --> Güçlü yükseliş trendi

Mevcut yüksek > Önceki yüksek ve Mevcut Chaikin Oscillator < Önceki Chaikin Oscillator --> Ayı türü diverjans

  • Üçüncü strateji: Chaikin Oscillator - Düşüş trendi:

Bu stratejiye göre, düşüş trendi sırasında, mevcut düşük değerini önceki düşük değeriyle ve ayrıca mevcut Chaikin Oscillator değerini de önceki Chaikin Oscillator değeriyle karşılaştırarak güçlü düşüş trendi veya boğa türü diverjans sinyallerini alacağız. Mevcut düşük değeri önceki düşük değerinden daha düşükse ve bununla birlikte mevcut Chaikin Oscillator değeri de önceki Chaikin Oscillator değerinden daha düşükse, bu, güçlü düşüş trendi olacaktır. Eğer mevcut düşük değeri önceki düşük değerinden daha düşükken mevcut Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha yüksekse, bu da boğa türü diverjans olacaktır.

Mevcut düşük < Önceki düşük ve Mevcut Chaikin Oscillator < Önceki Chaikin Oscillator --> Güçlü düşüş trendi

Mevcut düşük < Önceki düşük ve Mevcut Chaikin Oscillator > Önceki Chaikin Oscillator --> Boğa türü diverjans


Chaikin Oscillator 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 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: Chaikin Oscillator - Çaprazlama:

Bu stratejiye göre, ticaret sistemi her tikte mevcut Chaikin Oscillator 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 Chaikin Oscillator değeri sıfır seviyesinin üzerindeyse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: alış sinyali ve mevcut Chaikin Oscillator değeri. Diğer senaryoda, mevcut Chaikin Oscillator 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: satış sinyali ve mevcut Chaikin Oscillator değeri.

Aşağıdaki görüntü bu stratejinin planını göstermektedir:

Chaikin Oscillator - Çaprazlama planı

  • İkinci strateji: Chaikin Oscillator hareketi:

Bu stratejiye göre, ticaret sistemi her tikte mevcut Chaikin Oscillator değerini ve önceki Chaikin Oscillator değerini kontrol etmeli ve bu iki değeri birbiriyle 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 Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: Chaikin Oscillator yükseliyor, mevcut Chaikin Oscillator değeri ve önceki Chaikin Oscillator değeri. Tersi şekilde, mevcut Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: Chaikin Oscillator düşüyor, mevcut Chaikin Oscillator değeri ve önceki Chaikin Oscillator değeri.

Aşağıdaki görüntü bu stratejinin planını göstermektedir:

Chaikin Oscillator hareketi planı

  • Üçüncü strateji: Chaikin Oscillator - Yükseliş trendi:

Bu stratejiye göre, ticaret sistemi her tikte dört değeri (mevcut yüksek, önceki yüksek, mevcut Chaikin Oscillator ve önceki Chaikin Oscillator) kontrol etmeli 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 yüksek değeri önceki yüksek değerinden daha yüksekse ve bununla birlikte mevcut Chaikin Oscillator değeri de önceki Chaikin Oscillator değerinden daha yüksekse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: güçlü yükseliş trendi, mevcut yüksek değeri, önceki yüksek değeri, mevcut Chaikin Oscillator değeri, önceki Chaikin Oscillator değeri. Eğer mevcut yüksek değeri önceki yüksek değerinden daha yüksekken mevcut Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha düşükse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: ayı türü diverjans, mevcut yüksek değeri, önceki yüksek değeri, mevcut Chaikin Oscillator değeri, önceki Chaikin Oscillator değeri.

Aşağıdaki görüntü bu stratejinin planını göstermektedir:

Chaikin Oscillator - Yükseliş trendi planı

  • Üçüncü strateji: Chaikin Oscillator - Düşüş trendi:

Bu stratejiye göre, ticaret sistemi her tikte dört değeri (mevcut Chaikin Oscillator, önceki Chaikin Oscillator, mevcut düşük ve önceki düşük) kontrol etmeli 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 düşük değeri önceki düşük değerinden daha düşükse ve bununla birlikte mevcut Chaikin Oscillator değeri de önceki Chaikin Oscillator değerinden daha düşükse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: güçlü düşüş trendi, mevcut düşük değeri, önceki düşük değeri, mevcut Chaikin Oscillator değeri, önceki Chaikin Oscillator değeri. Eğer mevcut düşük değeri önceki düşük değerinden daha düşükken mevcut Chaikin Oscillator değeri önceki Chaikin Oscillator değerinden daha yüksekse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: boğa türü diverjans, mevcut düşük değeri, önceki düşük değeri, mevcut Chaikin Oscillator değeri, önceki Chaikin Oscillator değeri.

Aşağıdaki görüntü bu stratejinin planını göstermektedir:

Chaikin Oscillator - Düşüş trendi planı

Chaikin Oscillator göstergesine dayalı ticaret sistemi

Bu bölümde, ele aldığımız stratejileri MQL5 ile programlayarak/kodlayarak otomatik olarak çalışacak bir ticaret sistemine nasıl dönüştüreceğimizi öğreneceğiz. İlk olarak, stratejilerimizin programlarına temel olması adına mevcut Chaikin Oscillator 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 Chaikin Oscillator için bir dizi oluşturalım. double türü, veri türlerinden biri olan kesirli veri türlerinin bir çeşididir.
double chaiArray[];
  • ArraySetAsSeries fonksiyonunu kullanarak Chaikin Oscillator 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(chaiArray,true);
  • chaiDef için int türü değişken oluşturduktan sonra iChaikin fonksiyonunu kullanarak Chaikin Oscillator'ı tanımlayalım. iChaikin fonksiyonu Chaikin Oscillator 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.
    • Hızlı Moving Average periyodu - Varsayılan olarak 3 ayarlayacağız.
    • Yavaş Moving Average periyodu - Varsayılan olarak 10 ayarlayacağız.
    • Moving Average yöntemi - Exponential Moving Average (MODE_EMA) kullanacağız.
    • Uygulanacak hacim - Tik hacmini (VOLUME_TICK) kullanacağız.
int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);
  • CopyBuffer fonksiyonunu kullanarak chaiArray dizisini chaiDef 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ı - chaiDef 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 - chaiArray ayarlayacağız.
CopyBuffer(chaiDef,0,0,3,chaiArray);
  • chaiVal için int türü değişken oluşturduktan sonra, double türünde değer geri döndüren NormalizeDouble fonksiyonunu kullanarak mevcut Chaikin Oscillator değerini hesaplayalım. Fonksiyonunun parametreleri şunlardır:
    • Normalleştirilmiş sayı - chaiArray[0] kullanacağız.
    • Ondalık basamak sayısı - 6 ayarlayacağız.
int chaiVal = NormalizeDouble(chaiArray[0],6);
  • Comment fonksiyonunu kullanarak mevcut Chaikin Oscillator değerini grafikte yorum olarak görüntüleyelim:
Comment("Chaikin Oscillator Value is ",chaiVal);

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

//+------------------------------------------------------------------+
//|                                    Simple Chaikin Oscillator.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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);

   Comment("Chaikin Oscillator Value is ",chaiVal);

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

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

Kılavuz - Simple Chaikin Oscillator

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

Simple Chaikin Oscillator penceresi

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

Grafiğe eklenmiş Simple Chaikin Oscillator

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

Grafikte mevcut Chaikin Oscillator değeri

Yukarıdaki görüntüden görebileceğimiz gibi, Uzman Danışman mevcut Chaikin Oscillator değerini grafiğin sol üst köşesinde yorum olarak görüntülemektedir. Programımızdaki değerlerin MetaTrader 5'teki yerleşik Chaikin Oscillator 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 Chaikin Oscillator göstergesiyle beraber grafik üzerinde çalıştıralım:

Simple Chaikin Oscillator ile yerleşik Chaikin Oscillator aynı değeri görüntülemektedir

Uzman Danışmanın ve göstergenin aynı değerleri görüntülediğini görüyoruz. Sağ üst köşede Simple Chaikin Oscillator Uzman Danışmanın eklendiğini, sol üst köşede ise Uzman Danışman tarafından yazılan 1644 değeri görünmektedir; grafiğe eklenen yerleşik göstergenin penceresinde de sol üst tarafta aynı değer görünmektedir.

  • Birinci strateji: Chaikin Oscillator - Çaprazlama:

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

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator 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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);
   
   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

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

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

Stratejinin koşulları:

Alış sinyali:

   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

Satış sinyali:

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

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

Kılavuz - Chaikin Oscillator Crossover

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

Chaikin Oscillator Crossover penceresi

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

Grafiğe eklenmiş Chaikin Oscillator Crossover

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

Alış sinyali:

Chaikin Oscillator Crossover - Alış sinyali

Yukarıdaki görüntüden görebileceğimiz gibi, Chaikin Oscillator değeri sıfır seviyesinin üzerinde seyrettiğinden Uzman Danışman alış sinyali yazmaktadır.

Satış sinyali:

Chaikin Oscillator Crossover - Satış sinyali

Yukarıdaki görüntüden görebileceğimiz gibi, Chaikin Oscillator değeri sıfır seviyesinin altında seyrettiğinden Uzman Danışman satış sinyali yazmaktadır.

  • İkinci strateji: Chaikin Oscillator hareketi:

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

//+------------------------------------------------------------------+
//|                                  Chaikin Oscillator Movement.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 chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

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

Mevcut ve önceki Chaikin Oscillator değerlerini tanımlıyoruz:

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Stratejinin koşulları:

Chaikin Oscillator yükseliyor:

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Chaikin Oscillator düşüyor:

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

Kılavuz - Chaikin Oscillator Movement

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

Chaikin Oscillator Movement penceresi

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

Grafiğe eklenmiş Chaikin Oscillator Movement

Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:

Mevcut verilerle Veri Penceresi ve Chaikin Oscillator yükseliyor sinyali:

Mevcut verilerle Veri Penceresi ve Chaikin Oscillator yükseliyor sinyali

Önceki verilerle Veri Penceresi ve Chaikin Oscillator yükseliyor sinyali:

Önceki verilerle Veri Penceresi ve Chaikin Oscillator yükseliyor sinyali

Yukarıdaki görüntülerden görebileceğimiz gibi, program aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

  • Chaikin Oscillator yükseliyor.
  • Mevcut Chaikin Oscillator değeri.
  • Önceki Chaikin Oscillator değeri.

Mevcut verilerle Veri Penceresi ve Chaikin Oscillator düşüyor sinyali:

Mevcut verilerle Veri Penceresi ve Chaikin Oscillator düşüyor sinyali

Önceki verilerle Veri Penceresi ve Chaikin Oscillator düşüyor sinyali:

Önceki verilerle Veri Penceresi ve Chaikin Oscillator düşüyor sinyali

Yukarıdaki görüntülerden görebileceğimiz gibi, program aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

Chaikin Oscillator düşüyor.

Mevcut Chaikin Oscillator değeri.

Önceki Chaikin Oscillator değeri.

  • Üçüncü strateji: Chaikin Oscillator - Yükseliş trendi:

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

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator - Uptrend.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 chaiArray[];
   MqlRates priceArray[];

   ArraySetAsSeries(chaiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


   double currentHighVal=NormalizeDouble(priceArray[2].high,6);
   double prevHighVal=NormalizeDouble(priceArray[1].high,6);

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

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

Fiyat, hacim ve makas bilgilerini depolayan MqlRates fonksiyonunu kullanarak Chaikin Oscillator ve fiyatlar için diziler oluşturuyoruz:

ArraySetAsSeries(chaiArray,true);
int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

Mevcut ve önceki Chaikin Oscillator değerlerini tanımlıyoruz:

int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Mevcut ve önceki yüksek değerlerini tanımlıyoruz:

double currentHighVal=NormalizeDouble(priceArray[2].high,6);
double prevHighVal=NormalizeDouble(priceArray[1].high,6);

Stratejinin koşulları:

Güçlü yükseliş trendi:

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Ayı türü diverjans:

   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

Kılavuz - Chaikin Oscillator - Uptrend

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

Chaikin Oscillator - Uptrend penceresi

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

Grafiğe eklenmiş Chaikin Oscillator - Uptrend

Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:

Mevcut verilerle Veri Penceresi ve güçlü yükseliş trendi sinyali:

Mevcut verilerle Veri Penceresi ve güçlü yükseliş trendi sinyali

Önceki verilerle Veri Penceresi ve güçlü yükseliş trendi sinyali:

Önceki verilerle Veri Penceresi ve güçlü yükseliş trendi sinyali

Yukarıdaki görüntülerden görebileceğimiz gibi, program aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

  •  Güçlü yükseliş trendi.
  • Mevcut yüksek değeri.
  • Önceki yüksek değeri.
  • Mevcut Chaikin Oscillator değeri.
  • Önceki Chaikin Oscillator değeri.

Mevcut verilerle Veri Penceresi ve ayı türü diverjans sinyali:

Mevcut verilerle Veri Penceresi ve ayı türü diverjans sinyali

Önceki verilerle Veri Penceresi ve ayı türü diverjans sinyali:

Önceki verilerle Veri Penceresi ve ayı türü diverjans sinyali

Yukarıdaki görüntülerden görebileceğimiz gibi, program aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

Ayı türü diverjans.

Mevcut yüksek değeri.

Önceki yüksek değeri.

Mevcut Chaikin Oscillator değeri.

Önceki Chaikin Oscillator değeri.

  • Üçüncü strateji: Chaikin Oscillator - Düşüş trendi:

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

//+------------------------------------------------------------------+
//|                               Chaikin Oscillator - Downtrend.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 chaiArray[];
   MqlRates priceArray[];

   ArraySetAsSeries(chaiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


   double currentLowVal=NormalizeDouble(priceArray[2].low,6);
   double prevLowVal=NormalizeDouble(priceArray[1].low,6);

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

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

Güçlü düşüş trendi:

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Boğa türü diverjans:

   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

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

Kılavuz - Chaikin Oscillator - Downtrend

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

Chaikin Oscillator - Downtrend penceresi

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

Grafiğe eklenmiş Chaikin Oscillator - Downtrend

Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:

Mevcut verilerle Veri Penceresi ve güçlü düşüş trendi sinyali:

Mevcut verilerle Veri Penceresi ve güçlü düşüş trendi sinyali

Önceki verilerle Veri Penceresi ve güçlü düşüş trendi sinyali:

Önceki verilerle Veri Penceresi ve güçlü düşüş trendi sinyali

Yukarıdaki görüntülerden görebileceğimiz gibi, program aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

  • Güçlü düşüş trendi.
  • Mevcut düşük değeri.
  • Önceki düşük değeri.
  • Mevcut Chaikin Oscillator değeri.
  • Önceki Chaikin Oscillator değeri.

Mevcut verilerle Veri Penceresi ve boğa türü diverjans sinyali:

Mevcut verilerle Veri Penceresi ve boğa türü diverjans sinyali

Önceki verilerle Veri Penceresi ve boğa türü diverjans sinyali:

Önceki verilerle Veri Penceresi ve boğa türü diverjans sinyali 

Yukarıdaki görüntülerden görebileceğimiz gibi, program aşağıdaki değerleri grafikte yorum olarak görüntülemektedir:

  • Boğa türü diverjans.
  • Mevcut düşük değeri.
  • Önceki düşük değeri.
  • Mevcut Chaikin Oscillator değeri.
  • Önceki Chaikin Oscillator değeri.


Sonuç

Bu makalede Chaikin Oscillator göstergesi hakkında konuştuk. İlk olarak, ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını ve MetaTrader 5’te bulunan yerleşik Chaikin Oscillator göstergesinin nasıl kullanılacağını öğrendik. Devamında, ana konseptine dayanan bazı basit stratejileri ele alarak onu ticaretimizde nasıl kullanabileceğimizi gördük:

  • Chaikin Oscillator - Çaprazlama: gösterge değerinin sıfır seviyesinin üzerinde veya altında olmasına dayalı olarak alış veya satış sinyalleri almak için.
  • Chaikin Oscillator hareketi: göstergenin hareketine dayalı olarak Chaikin Oscillator yükseliyor veya Chaikin Oscillator düşüyor şeklinde sinyaller almak için.
  • Chaikin Oscillator - Yükseliş trendi: göstergenin hareketinin yüksek fiyatının hareketiyle ilişkisine dayalı olarak güçlü yükseliş trendi veya ayı türü diverjans şeklinde sinyaller almak için.
  • Chaikin Oscillator - Düşüş trendi: göstergenin hareketinin düşük fiyatının hareketiyle ilişkisine dayalı olarak güçlü düşüş trendi veya boğa türü diverjans şeklinde sinyaller almak için.

Sonrası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 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.

Ve daha önce de söylediğim gibi şunu tekrar 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. Burada ayrıca şunu da belirtmek istiyorum: programlama becerilerinizi geliştirmek istiyorsanız, okuduklarınızı kendi başınıza tekrarlı bir şekilde pratik yapmanız gerekir, çünkü pratik yapmak her türlü öğrenme yolundaki en önemli faktörlerden biridir. Bu makaleyi beğendiyseniz, yararlı bulduysanız 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. Bir sonraki makalede görüşmek dileğiyle.

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

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.
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 5 işlem platformunda kullanılmak üzere en popüler teknik göstergelere dayalı ticaret sistemleri geliştirdiğimiz serimizin yeni makalesindeyiz. Bu yeni makalede, Standard Deviation göstergesine dayalı bir ticaret sisteminin nasıl tasarlanacağını öğreneceğiz.
Popülasyon optimizasyon algoritmaları: Parçacık sürüsü optimizasyonu (Particle Swarm Optimization, PSO) Popülasyon optimizasyon algoritmaları: Parçacık sürüsü optimizasyonu (Particle Swarm Optimization, PSO)
Bu makalede, popüler parçacık sürüsü optimizasyonu (Particle Swarm Optimization, PSO) algoritmasını ele alacağız. Bir önceki makalede, optimizasyon algoritmalarının yakınsama, yakınsama oranı, kararlılık, ölçeklenebilirlik gibi önemli özelliklerini tartıştık, ayrıca bir test ortamı geliştirdik ve en basit RNG algoritmasını inceledik.
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.