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

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

MetaTrader 5Ticaret | 3 Temmuz 2023, 10:36
318 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

En popüler teknik göstergelere dayalı ticaret sistemleri geliştirdiğimiz serimizin yeni makalesindeyiz. Bu makalemizde, Force Index göstergesiyle bir ticaret sisteminin nasıl geliştirileceğini öğreneceğiz. Bu amaçla aşağıdaki konular üzerinden ilerleyeceğiz:

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

Bu konular aracılığıyla Force Index teknik göstergesi hakkında ayrıntılı bilgi sahibi olacağız. İlk olarak, “Force Index 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. Bu sayede, göstergenin arkasındaki konsepti iyi bir şekilde anlamış olacağız. Devamında, "Force Index göstergesi stratejileri" bölümünde, göstergenin bu konseptine dayanan bazı basit stratejileri ele alarak onu ticaretimizde bize fayda sağlayacak şekilde nasıl kullanabileceğimizden bahsedeceğiz. Herhangi bir strateji için bir ticaret sistemi oluşturmak söz konusu olduğunda, onu sorunsuz bir şekilde hayata geçirmek için fikirlerimizi düzenlememiz gerektiğini biliyoruz. Bu nedenle, hedefimize rahat ve etkili bir şekilde ulaşmamıza yardımcı olması adına, “Force Index göstergesine dayalı ticaret sisteminin planı” bölümünde, ilgili her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırlayacağız. Fikirlerimizi bir plan üzerinde düzenledikten sonra da “Force Index göstergesine dayalı ticaret sistemi” bölümünde, hazırladığımız bu plan çerçevesinde, ele aldığımız stratejilere dayalı olarak MetaTrader 5’te otomatik ve hassas ş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. Okuduğunuz bilgilerin kalıcı olmasını sağlamak için makaledeki her şeyi kendi başınıza uygulayarak pratik yapmanızı tavsiye ederim. Ayrıca 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.

Şimdi, Force Index göstergesine ilişkin bilgimizi derinleştirmek adına konularımıza başlayalım.


Force Index göstergesinin tanımı

Bu bölümde, Force Index göstergesinin ne olduğunu, neyi ölçtüğünü ve manuel olarak nasıl hesaplandığını öğreneceğiz. Bir konuyu öğrenirken, her zaman şu yaklaşımı kullanmaya özen gösteriyorum: öğrenmek istediğimiz konunun köklerine inmeli ve içeriğini orada anlamalıyız, böylece onu sadece etkili bir şekilde kullanmakla kalmayıp, aynı zamanda onla ilgili daha fazla fikri nasıl geliştirebileceğimiz konusunda daha fazla içgörüye sahip olacağız. Force Index, Alexander Elder tarafından geliştirilmiştir ve onu "Trading for a Living" adlı muhteşem kitabında sunmuştur. Gösterge, hareketin gücünü ölçer veya potansiyel terse dönüş noktalarını tanımlar. Force Index göstergesi, hesaplamasında fiyat ve hacmi kullanır. Bu, piyasadaki herhangi bir hareketin gücünü ölçmeye olanak tanır.

Force Index göstergesinin manuel olarak hesaplanması aşağıdaki iki adımdan oluşur:

1- 1 periyotluk Force Index = (mevcut kapanış - önceki kapanış) * hacim

2- 13 periyotluk Force Index = 1 periyotluk Force Index’in 13 periyotluk EMA'sı

Günümüzde, MetaTrader 5 platformuyla standart olarak gelen hazır bir gösterge bulunduğundan, Force Index'i 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 --> Osilatörler --> Force Index

Force Index göstergesini ekleme

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

Force Index göstergesi parametreleri

1- Force Index göstergesinin istenen periyodunu ayarlamak için. Göstergenin varsayılan ayarını (13) kullanacağız.

2- Hareketli ortalamanın türünü ayarlamak için. Üssel olanı kullanacağız.

3- Hacim türünü ayarlamak için. Tik olanı kullanacağız.

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

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

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

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

Grafikte Force Index göstergesi

Yukarıdaki görüntüde, Force Index 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.


Force Index göstergesi stratejileri

Bu bölümde, Force Index göstergesini ana konseptine uygun olarak bazı basit stratejilerle nasıl kullanabileceğimizi göreceğiz. Bu stratejilerin burada sunulmasının ana amacı, Force Index göstergesinin ticarette nasıl kullanılabileceğini ve ona dayalı olarak bir ticaret sisteminin nasıl tasarlanacağını anlamaktır. Dolayısıyla, bu stratejilerden herhangi birini gerçek hesabınızda kullanmadan önce, onu tam anlamıyla test ettiğinizden emin olmalısınız.

  • Birinci strateji: Force Index - Trend tanımlayıcı:

Bu stratejiye göre, mevcut Force Index 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 Force Index değeri sıfır seviyesinin üzerindeyse, bu, yükseliş hareketi sinyali olacaktır. Tersi şekilde, Mevcut Force Index değeri sıfır seviyesini altındaysa, bu da düşüş hareketi sinyali olacaktır.

Daha basit ifadeyle,

Mevcut Force Index > Sıfır seviyesi --> Yükseliş hareketi

Mevcut Force Index < Sıfır seviyesi --> Düşüş hareketi

  • İkinci strateji: Force Index - Yükseliş trendi veya ayı türü diverjans:

Bu stratejiye göre, mevcut yüksek değerini önceki yüksek değeriyle ve ayrıca mevcut Force Index değerini de önceki Force Index 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 Force Index değeri de önceki Force Index 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 Force Index değeri önceki Force Index değerinden daha düşükse, bu da ayı türü diverjans olacaktır.

Daha basit ifadeyle,

Mevcut yüksek > Önceki yüksek ve Mevcut Force Index > Önceki Force Index --> Güçlü yükseliş trendi

Mevcut yüksek > Önceki yüksek ve Mevcut Force Index < Önceki Force Index --> Ayı türü diverjans

  • İkinci strateji: Force Index - Düşüş trendi veya boğa türü diverjans:

Bu stratejiye göre, mevcut düşük değerini önceki düşük değeriyle ve ayrıca mevcut Force Index değerini de önceki Force Index 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 Force Index değeri de önceki Force Index 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 Force Index değeri önceki Force Index değerinden daha yüksekse, bu da boğa türü diverjans olacaktır.

Daha basit ifadeyle,

Mevcut düşük < Önceki düşük ve Mevcut Force Index < Önceki Force Index --> Güçlü düşüş trendi

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

  • Üçüncü strateji: Force Index sinyalleri:

Bu stratejiye göre, belirli koşullara bağlı olarak alış veya satış sinyalleri alacağız. Mevcut kapanış fiyatı, mevcut EMA değerinden daha yüksekse ve aynı zamanda önceki Force Index değeri sıfır seviyesinin altındayken, mevcut Force Index değeri sıfır seviyesinin üzerine çıktıysa, bu, alış sinyali olacaktır. Tersi şekilde, mevcut kapanış fiyatı, mevcut EMA değerinden daha düşükse ve bununla beraber önceki Force Index değeri sıfır seviyesinin üzerindeyken, mevcut Force Index değeri sıfır seviyesinin altına indiyse, bu da satış sinyali olacaktır.

Daha basit ifadeyle,

Mevcut kapanış > Mevcut EMA, Önceki Force Index < Sıfır seviyesi ve Mevcut Force Index > Sıfır seviyesi --> Alış sinyali

Mevcut kapanış < Mevcut EMA, Önceki Force Index > Sıfır seviyesi ve Mevcut Force Index < Sıfır seviyesi --> Satış sinyali


Force Index 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:  Force Index - Trend tanımlayıcı:

Bu stratejiye göre, ticaret sistemi her tikte mevcut Force Index 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 Force Index değeri sıfır seviyesinin üzerindeyse, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir: yükseliş hareketi ve mevcut Force Index değeri. Öte yandan, mevcut Force Index 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 ve mevcut Force Index değeri.

Force Index - Trend tanımlayıcı planı

  • İkinci strateji: Force Index - Yükseliş trendi veya ayı türü diverjans:

Bu stratejiye göre, ticaret sistemi her tikte dört değeri (mevcut yüksek, önceki yüksek, mevcut Force Index ve önceki Force Index) 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 Force Index değeri de önceki Force Index 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 Force Index değeri
  • Önceki Force Index değeri

Eğer mevcut yüksek değeri önceki yüksek değerinden daha yüksekken mevcut Force Index değeri önceki Force Index 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 Force Index değeri
  • Önceki Force Index değeri

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

Force Index - Yükseliş trendi veya ayı türü diverjans planı

  • İkinci strateji: Force Index - Düşüş trendi veya boğa türü diverjans:

Bu stratejiye göre, ticaret sistemi her tikte dört değeri (mevcut düşük, önceki düşük, mevcut Force Index ve önceki Force Index) 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 Force Index değeri de önceki Force Index 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 Force Index değeri
  • Önceki Force Index değeri

Eğer mevcut düşük değeri önceki düşük değerinden daha düşükken mevcut Force Index değeri önceki Force Index 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 Force Index değeri
  • Önceki Force Index değeri

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

Force Index - Düşüş trendi veya boğa türü diverjans planı

  • Üçüncü strateji: Force Index sinyalleri:

Bu stratejiye göre, ticaret sistemi her tikte dört değeri (mevcut kapanış, mevcut EMA, mevcut Force Index ve önceki Force Index) 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 kapanış fiyatı, mevcut EMA değerinden daha yüksekse ve aynı zamanda önceki Force Index değeri sıfır seviyesinin altındayken, mevcut Force Index değeri sıfır seviyesinin üzerine çıktıysa, şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

  • Alış sinyali
  • Mevcut kapanış fiyatı
  • Mevcut EMA değeri
  • Mevcut Force Index değeri
  • Önceki Force Index değeri

Tersi şekilde, mevcut kapanış fiyatı, mevcut EMA değerinden daha düşükse ve bununla beraber önceki Force Index değeri sıfır seviyesinin üzerindeyken, mevcut Force Index değeri sıfır seviyesinin altına indiyse, bu kez de şu ifadeleri ayrı satırlar halinde grafik üzerinde yorum olarak görüntülemelidir:

  • Satış sinyali
  • Mevcut kapanış fiyatı
  • Mevcut EMA değeri
  • Mevcut Force Index değeri
  • Önceki Force Index değeri

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

Force Index sinyalleri planı

Force Index 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 Force Index değerini grafik üzerinde yorum olarak görüntüleyecek basit bir program yazalım.

  • double fonksiyonunu kullanarak Force Index için bir dizi oluşturalım:
double fiArray[];
  • ArraySetAsSeries fonksiyonunu kullanarak Force Index 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(fiArray,true);
  • fiDef için int türü değişken oluşturduktan sonra iForce fonksiyonunu kullanarak Force Index’i tanımlayalım. iForce fonksiyonu Force Index göstergesinin tanıtıcısını geri döndürür. 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 - Varsayılan olarak 13 ayarlayacağız.
    • Moving Average yöntemi - Exponential Moving Average (MODE_EMA) kullanacağız.
    • Uygulanacak hacim - Tik hacmini (VOLUME_TICK) kullanacağız.
int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
  • CopyBuffer fonksiyonunu kullanarak fiArray dizisini fiDef değerleriyle dolduralım. Fonksiyonunun parametreleri şunlardır:
    • Gösterge tanıtıcısı - fiDef gösterge tanımını kullanacağız.     
    • Gösterge arabellek numarası - 0 ayarlayacağız.
    • Başlangıç konumu - 0 ayarlayacağız.         
    • Kopyalanacak veri miktarı - 13 ayarlayacağız.                
    • Hedef dizi - fiArray ayarlayacağız.
CopyBuffer(fiDef,0,0,3,fiArray);
  • fiVal 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 Force Index değerini hesaplayalım. Fonksiyonunun parametreleri şunlardır:
    • Normalleştirilmiş sayı - fiArray[0] kullanacağız.
    • Ondalık basamak sayısı - 6 ayarlayacağız.
double fiVal = NormalizeDouble(fiArray[0],6);
  • Comment fonksiyonunu kullanarak mevcut Force Index değerini grafikte yorum olarak görüntüleyelim:
Comment("Force Index Value is ",fiVal);

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

//+------------------------------------------------------------------+
//|                                           Simple Force Index.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 fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   Comment("Force Index Value is ",fiVal);

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

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

Kılavuz - Simple Force Index

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

Simple Force Index penceresi

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

Grafiğe eklenmiş Simple Force Index

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

Grafikte mevcut Force Index değeri

Yukarıdaki görüntüden görebileceğimiz gibi, Uzman Danışman mevcut Force Index değerini grafiğin sol üst köşesinde yorum olarak görüntülemektedir.

Programımızdaki değerlerin MetaTrader 5'teki yerleşik Force Index 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 Force Index göstergesiyle beraber grafik üzerinde çalıştıralım:

Simple Force Index ile yerleşik Force Index 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 Force Index Uzman Danışmanın eklendiğini, sol üst köşede ise Uzman Danışman tarafından yazılan -0.369378 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: Force Index - Trend tanımlayıcı:

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

//+------------------------------------------------------------------+
//|                               Force Index - Trend Identifier.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,100,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

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

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

Yükseliş hareketi:

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

Düşüş hareketi:

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

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

Kılavuz - Force Index - Trend Identifier

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

Force Index - Trend Identifier penceresi

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

Grafiğe eklenmiş Force Index - Trend Identifier

Gördüğümüz üzere, grafiğin sağ üst köşesinde Uzman Danışmanın grafik üzerinde çalıştığına dair bir ifade ortaya çıktı.

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

Yükseliş hareketi:

Force Index - Trend Identifier - Yükseliş hareketi

Yukarıdaki görüntüden görebileceğimiz gibi, Force Index değeri sıfır seviyesinin üzerinde seyrettiğinden Uzman Danışman yükseliş hareketi sinyali yazmaktadır.

Düşüş hareketi:

Force Index - Trend Identifier - Düşüş hareketi

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

  • İkinci strateji: Force Index - Yükseliş trendi veya ayı türü diverjans:

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

//+------------------------------------------------------------------+
//|                               Force Index - Up or Divergence.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 fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

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

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

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

İki dizi oluşturuyoruz: daha önce yaptığımız gibi double fonksiyonunu kullanarak Force Index için ve fiyat, hacim ve makas bilgilerini depolayan MqlRates fonksiyonunu kullanarak fiyatlar için:

   double fiArray[];
   MqlRates pArray[];

Oluşturulan bu dizileri sıralıyoruz. fiArray için daha önce yaptığımız gibi ArraySetAsSeries fonksiyonunu kullanacağız. pArray için de MqlRates geçmiş verilerini almak için 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ıç zamanı - 0 ayarlayacağız.
  • Bitiş zamanı - 3 ayarlayacağız.
  • Hedef dizi - pArray ayarlayacağız.
   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Mevcut ve önceki Force Index değerlerini tanımlıyoruz:

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

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

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

Stratejinin koşulları:

Güçlü yükseliş trendi:

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Ayı türü diverjans:

 
   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

Kılavuz - Force Index - Up or Divergence

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

Force Index - Up or Divergence penceresi

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

Grafiğe eklenmiş Force Index - Up or Divergence

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:

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

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

  • İkinci strateji: Force Index - Düşüş trendi veya boğa türü diverjans:

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

//+------------------------------------------------------------------+
//|                             Force Index - Down or Divergence.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 fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

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

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

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

Mevcut ve önceki düşük değerlerini tanımlıyoruz:

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

Stratejinin koşulları:

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

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Boğa türü diverjans:

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

Kılavuz - Force Index - Down or Divergence

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

Force Index - Down or Divergence penceresi

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

Grafiğe eklenmiş Force Index - Down or Divergence

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:

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

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

  • Üçüncü strateji: Force Index sinyalleri:

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

//+------------------------------------------------------------------+
//|                                          Force Index signals.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"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];
   double maArray[];
   MqlRates pArray[];



   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);


   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);


   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

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

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

fiArray, maArray ve pArray dizilerini oluşturuyoruz:

   double fiArray[];
   double maArray[];
   MqlRates pArray[];

fiArray ve maArray dizilerini sıralıyoruz:

   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);

Force Index için fiDef’i, Moving Average için de maDef’i tanımlıyoruz:

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

CopyRates fonksiyonunu kullanarak pArray’i sıralıyoruz:

int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Dizileri dolduruyoruz:

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

Mevcut Force Index, önceki Force Index, mevcut Moving Average ve mevcut kapanış fiyatı olmak üzere dört değeri tanımlıyoruz:

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);

Stratejinin koşulları:

Alış sinyali:

   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

Satış sinyali:

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

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

Kılavuz - Force Index signals

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

Force Index signals penceresi

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

Grafiğe eklenmiş Force Index signals

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

Mevcut verilerle Veri Penceresi ve alış sinyali:

Mevcut verilerle Veri Penceresi ve alış sinyali

Önceki verilerle Veri Penceresi ve alış sinyali:

Önceki verilerle Veri Penceresi ve alış sinyali

Mevcut verilerle Veri Penceresi ve satış sinyali:

Mevcut verilerle Veri Penceresi ve satış sinyali

Önceki verilerle Veri Penceresi ve satış sinyali:

 Önceki verilerle Veri Penceresi ve satış sinyali


Sonuç

Force Index göstergesi, doğru kararlar almamız için bize önemli bilgiler sağlayan harika bir teknik araçtır. Makalede ilk olarak, Force Index göstergesinin ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını öğrendik. Sonrasında, bazı basit stratejileri ele alarak onu ticaretimizde nasıl kullanabileceğimizi gördük:

  • Force Index - Trend tanımlayıcı: yükseliş veya düşüş hareketi şeklinde sinyaller almak için.
  • Force Index - Yükseliş trendi veya ayı türü diverjans: güçlü yükseliş trendi veya ayı türü diverjans şeklinde sinyaller almak için.
  • Force Index - Düşüş trendi veya boğa türü diverjans: güçlü düşüş trendi veya boğa türü diverjans şeklinde sinyaller almak için.
  • Force Index sinyalleri: Alış veya satış sinyalleri almak için.

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.

Şunu her zaman olduğu gibi 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. Umarım bu makale süresince öğrendiklerinizi kendiniz başınıza pratik yapmaya çalışmışsınızdır, çünkü pratik yapmak herhangi bir öğrenme sürecindeki en önemli faktörlerden biridir. Ayrıca, bu göstergeyi başka bir göstergeyle kombine etmek daha iyi ticaret kararları ve sonuçlar verebilir. Birden çok göstergenin bir arada kullanılması teknik analizin önemli özelliklerindendir. 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.

Farklı alanlarda önemi her geçen gün artan programlamayı öğrenmenin ya da en azından bu konuda belirli düzeyde bir bilgiye sahip olmanın önemli olduğunu düşünüyorum. Ticaret söz konusu olduğunda, programlamanın bizi onu kullanmaya iten birçok özelliği vardır; örneğin, bizim için ticaret yapan veya en azından verimli bir şekilde ticaret yapmamıza yardımcı olan programlar sayesinde bize zaman kazandırır. Buna ek olarak programlama, kodladıklarımıza dayalı olarak hassas sinyaller almamıza yardımcı olur. En faydalı özelliklerinden biri de zararlı duygulardan kaçınmamıza olanak tanımasıdır.

Umarım bu makaleyi ticaret sonucunuzu geliştirmeniz ve bu konu veya ilgili herhangi bir konu hakkında yeni fikirler edinmeniz için yararlı bulursunuz. Bu makaleyi 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üşünceye kadar hoşça kalın.

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

Bear’s Power göstergesine dayalı bir ticaret sistemi nasıl geliştirilir? Bear’s Power göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?
En popüler teknik göstergelere dayalı ticaret sistemlerinin nasıl geliştirileceğine ilişkin serimizin yeni makalesine hoş geldiniz. Bu makalemizde Bear’s Power teknik göstergesine odaklanacağız.
Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 19): Yeni emir sistemi (II) Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 19): Yeni emir sistemi (II)
Bu makalede, grafiksel bir emir sistemi geliştireceğiz. Ama sıfırdan başlamayacağız, ticaret yaptığımız varlığın grafiğine daha fazla nesne ve olay ekleyerek mevcut sistemi değiştireceğiz.
Popülasyon optimizasyon algoritmaları: Karınca kolonisi optimizasyonu (Ant Colony Optimization, ACO) Popülasyon optimizasyon algoritmaları: Karınca kolonisi optimizasyonu (Ant Colony Optimization, ACO)
Bu sefer karınca kolonisi optimizasyonu algoritmasını analiz edeceğiz. Bu algoritma çok ilginç ve karmaşıktır. Makalede, yeni bir ACO türü oluşturma girişiminde bulunacağız.
Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 18): Yeni emir sistemi (I) Sıfırdan bir ticaret Uzman Danışmanı geliştirme (Bölüm 18): Yeni emir sistemi (I)
Bu makale, yeni emir sisteminin ilk kısmıdır. Uzman Danışmanımızı makalelerimizde belgelemeye başladığımızdan beri, çeşitli değişiklikler ve iyileştirmelerden geçti, ancak aynı grafik üzeri emir sistemi modelini korudu. Artık yeni bir emir sistemine ihtiyacımız vardır.