English Русский 中文 Español Deutsch 日本語 Português
preview
Bill Williams MFI göstergesine dayalı bir alım-satım sistemi nasıl geliştirilir?

Bill Williams MFI göstergesine dayalı bir alım-satım sistemi nasıl geliştirilir?

MetaTrader 5Ticaret | 22 Ağustos 2024, 11:39
37 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Giriş

En popüler teknik göstergelere dayalı alım-satım sistemlerinin nasıl oluşturulacağını öğrendiğimiz serinin yeni makalesindeyiz. Bu makalede de alım-satım yolculuğunuzda size faydalı olabilecek başka bir teknik araca değineceğiz: Bill Williams Market Facilitation Index (BW MFI). Bu teknik aracı özellikle diğer teknik araçlarla birlikte kullanmak, piyasada meydana gelen süreçleri daha iyi anlamanıza yardımcı olabilir. Makale boyunca göstergeyi şu konular üzerinden inceleyeceğiz:

  1. BW MFI göstergesinin tanımı
  2. BW MFI göstergesi stratejileri
  3. BW MFI göstergesine dayalı alım-satım sisteminin planı
  4. BW MFI göstergesine dayalı alım-satım sistemi
  5. Sonuç

Önceki tüm makalelerde olduğu gibi, kod ve programlarla çalışmak için MetaTrader 5 işlem platformunu ve MQL5 (MetaQuotes Language 5) IDE’yi, yani MetaEditor’ı 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.

Bu makalede bahsedilen tüm stratejiler yalnızca eğitim amaçlıdır. Eğer bunları gerçek hesabınızda kullanmak isterseniz, önceden iyi bir şekilde test ettiğinizden emin olmalısınız. Ayrıca, bu stratejileri optimize etmeden faaliyete geçirmemelisiniz. Elbette herkese uyacak bir evrensel strateji olmadığından, stratejilerin sizin alım-satım tarzınıza uymayabileceğini unutmayın. Ek olarak, bu makaledeki tüm kodları kendiniz de yazmanızı ve bahsedeceğimiz tüm adımların üzerinden kendiniz de geçmenizi tavsiye ederim. Çünkü böyle bir pratik, programlama becerilerinizi geliştirmenize yardımcı olacaktır.

Sorumluluk reddi: Sağlanan tüm bilgiler ’olduğu gibi’ yalnızca bilgilendirme amaçlıdır, alım-satım 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.


BW MFI göstergesinin tanımı

Bu bölümde, Market Facilitation Index (MFI) göstergesinin ne olduğunu ayrıntılı olarak öğreneceğiz. Bu, ünlü yatırımcı ve yazar Bill Williams tarafından geliştirilen teknik göstergelerden biridir. Fiyat ve hacmi inceleyerek ve analiz ederek piyasanın yönünü ölçmek için tasarlanmıştır. Bu göstergenin bir yatırımcı için faydası nedir - gelecekteki piyasa hareketini önerebilir ve mevcut fiyat hareketinin gücü hakkında fikir verebilir. Bu bilgiye dayanarak, hareketin devam edip etmeyeceği veya fiyatın tersine dönüp dönmeyeceği üzerinde değerlendirme yapabiliriz. Bu, piyasadaki güçlü tarafla beraber alım-satım yapmaya ve bilinçli kararlar almaya yardımcı olabilir.

Piyasadaki durumu anlamak için MFI ve hacmi analiz edebiliriz. Şu seçeneklere sahibiz:

  • BW MFI göstergesi ve hacim artıyorsa, piyasa katılımcılarının bu finansal enstrümana olan ilgisinin arttığını gösterir.
  • BW MFI göstergesi ve hacim azalıyorsa, piyasa katılımcılarının bu finansal enstrümana olan ilgisinin azaldığını gösterir.
  • BW MFI göstergesi artıyor ancak hacim azalıyorsa, bu durum hacmin mevcut hareketi desteklemediğini gösterir.
  • BW MFI göstergesi azalıyor ancak hacim artıyorsa, piyasada alıcılar ve satıcılar arasında bir denge olduğunu gösterir.

Şimdi BW MFI göstergesini manuel olarak nasıl hesaplayabileceğimizi görelim. Göstergenin nasıl hesaplandığını bilmek, arkasındaki konsepti daha iyi anlamanızı sağlar. Aslında, hiçbir şey hesaplamanıza gerek yoktur, çünkü MetaTrader 5'te yerleşik kullanıma hazır bir gösterge vardır. BW MFI’ın değerini hesaplamak için, mumun yüksek ve düşük fiyatları arasındaki farkı hacme bölmemiz gerekir.

BW MFI = (High-Low)/Volume

Tanımlamalar:

High => mumun yüksek fiyatı
Low => mumun düşük fiyatı
Volume => mevcut hacim

Ancak, yukarıda da söylediğim gibi, aslında hiçbir şey hesaplamamıza gerek yoktur. Tek yapmamız gereken, MetaTrader 5'teki listeden kullanıma hazır göstergeyi seçmektir. Aşağıda nasıl yapılacağını görebilirsiniz.

MetaTrader 5 terminalini açın, Ekle menüsünü seçin -> Göstergeler -> Bill Williams -> Market Facilitation Index. Aşağıdaki ekran görüntüsünde gösterilmektedir:

BW MFI göstergesini ekleme

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

BW MFI göstergesi parametreleri

1 - MFI ve hacmin arttığı durumu gösteren renk.

2 - MFI ve hacmin azaldığı durumu gösteren renk.

3 - MFI’ın arttığı, hacmin azaldığı durumu gösteren renk.

4 - MFI’ın azaldığı, hacmin arttığı durumu gösteren renk.

5 - hacim türü (Tik veya Gerçek).

6 - göstergenin çubuklarının kalınlığı.

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

Grafikte BW MFI göstergesi

Yukarıdaki görüntüden görebildiğimiz gibi, gösterge ek bir grafik penceresinde bulunmaktadır. BW MFI göstergesinin hesaplamasına bağlı olarak fiyat ve hacme göre farklı boyut ve renklerde çubuklar olarak görüntülenir. Göstergenin her rengi ve değeri, belirli bir fiyat hareketi durumunu ifade eder.

  • Yeşil çubuk, hem BW MFI hem de hacmin arttığı anlamına gelir ve piyasa katılımcılarının finansal enstrümana olan ilgisinin arttığını gösterir.
  • Kahverengi çubuk, hem BW MFI hem de hacmin azaldığı anlamına gelir ve piyasa katılımcılarının finansal enstrümana olan ilgisinin azaldığını gösterir.
  • Mavi çubuk, BW MFI’ın arttığı, hacmin azaldığı anlamına gelir ve piyasa hareketinin hacim tarafından desteklenmediğini gösterir.
  • Pembe çubuk, BW MFI’ın azaldığı, hacmin arttığı anlamına gelir ve boğalar ile ayılar arasında bir denge olduğunu gösterir.

BW MFI göstergesi stratejileri

Bu bölümde, BW MFI göstergesinin ana fikrine dayanan birkaç basit stratejiye bakacağız. Bir kez daha, tüm stratejilerin yalnızca eğitim amaçlı sunulduğunu hatırlatmak isterim. Sonuç almak için, MFI'ı optimize etmeniz, parametrelerde ayarlamalar yapmanız veya diğer teknik göstergelerle kombine etmeniz gerekecektir. Bu nedenle, bu stratejileri gerçek hesabınızda kullanmadan önce iyice test etmeniz çok önemlidir. Öncelikle bunları alım-satımda avantajınıza kullanabileceğinizden emin olmalısınız.

Birinci strateji: BW MFI - Hareket durumu

Bu strateji, BW MFI göstergesinin hareket durumunu belirleyecektir. Bunu yapmak için, BW MFI ve hacim değerlerini analiz edeceğiz. Yani, toplamda dört durum olabilir:

  • Mevcut BW MFI bir öncekinden daha yüksektir ve aynı zamanda mevcut hacim de bir öncekinden daha yüksektir. Bu durumda gösterge yeşil renkli bir çubuk gösterir. Bu, "yeşil durum” olarak adlandırılır.
  • Mevcut BW MFI bir öncekinden daha düşüktür ve aynı zamanda mevcut hacim de bir öncekinden daha düşüktür. Bu durumda gösterge kahverengi renkli bir çubuk gösterir. Bu, "solma durumu” olarak adlandırılır.
  • Mevcut BW MFI bir öncekinden daha yüksektir, ancak mevcut hacim bir öncekinden daha düşüktür. Bu durumda gösterge mavi renkli bir çubuk gösterir. Bu, "sahte durum” olarak adlandırılır.
  • Mevcut BW MFI bir öncekinden daha düşüktür, ancak mevcut hacim bir öncekinden daha yüksektir. Bu durumda gösterge pembe renkli bir çubuk gösterir. Bu, "squat durumu” olarak adlandırılır.

Daha basit ifadeyle,

  • Mevcut BW MFI > Önceki BW MFI ve Mevcut hacim > Önceki hacim ==> Yeşil durum - Yeşil çubuk
  • Mevcut BW MFI < Önceki BW MFI ve Mevcut hacim < Önceki hacim ==> Solma durumu - Kahverengi çubuk
  • Mevcut BW MFI > Önceki BW MFI ve Mevcut hacim < Önceki hacim ==> Sahte durum - Mavi çubuk
  • Mevcut BW MFI < Önceki BW MFI ve Mevcut hacim > Önceki hacim ==> Squat durumu - Pembe çubuk

İkinci strateji: BW MFI sinyalleri

Bu strateji, BW MFI göstergesinin durumuna göre sinyaller üretecektir. Öncelikle, piyasa durumunu önceki stratejide olduğu gibi belirlememiz gerekir. Ardından, durumlara bağlı olarak sinyaller oluşturulmalıdır. Bu stratejiye göre dört sinyale sahip olacağız:

  • Yeşil durumda, iyi bir giriş bul sinyali olacaktır.
  • Solma durumunda, iyi bir çıkış bul sinyali olacaktır.
  • Sahte durumda, yanlış kırılma olasılığı sinyali olacaktır.
  • Squat durumunda, piyasa dengede sinyali olacaktır.

Üçüncü strateji: MA ile BW MFI

Bu stratejide iki göstergenin performansını birleştireceğiz - BW MFI ve Moving Average. Stratejinin sonucuna bağlı olarak alış veya satış sinyali alacağız. MFI’ın durumu yeşilse ve kapanış fiyatı hareketli ortalamanın üzerindeyse, bu bir alış sinyali olacaktır. Tersi durumda, durum yeşilse ve kapanış fiyatı hareketli ortalamanın altındaysa, bu bir satış sinyali olacaktır. Teknik analiz, farklı perspektiflerden analizler yapmak ve daha bilinçli kararlar almak için farklı araçları birleştirmemize olanak tanır. Bu göstergeyi, üretilen sinyalleri filtreleyecek ve onaylayacak destek ve direnç seviyeleri, MACD vb. diğer araçlarla birleştirebilirsiniz.

Daha basit ifadeyle,

  • Yeşil durum ve Kapanış fiyatı > MA ==> Alış sinyali
  • Yeşil durum ve Kapanış fiyatı < MA ==> Satış sinyali

BW MFI göstergesine dayalı alım-satım sisteminin planı

Makalenin bu bölümünde, herhangi bir alım-satım sisteminin geliştirilmesindeki önemli bir adımı ele alacağız - stratejiler için adım adım ifadeler içeren planlar hazırlama. Böyle bir plan, her bir adımı görselleştirdiği için stratejiyi programa yazarken bize çok yardımcı olacaktır. Dolayısıyla, bu adım gelecekte yazacağımız programın bir planlama aşaması olarak düşünülebilir.

 Birinci strateji: BW MFI - Hareket durumu

Bu stratejiye göre, BW MFI göstergesinin hareketi hakkında sinyaller almak için kullanılabilecek bir alım-satım sistemi oluşturacağız. Bu, gösterge çubuklarının rengi analiz edilerek yapılacaktır; bu da, birbirlerine göre konumlarını belirlemek için her tikte dört değerin karşılaştırılmasıyla belirlenir. Bu dört değer mevcut BW MFI, önceki BW MFI, mevcut hacim ve önceki hacimdir. Program bu değerleri kontrol edecek ve konumlarını belirleyecektir. İlk durum, mevcut BW MFI'ın bir öncekinden daha yüksek olduğu ve aynı zamanda mevcut hacmin de bir öncekinden daha yüksek olduğu durumdur. Bu durumda, alım-satım sistemi grafikte "Yeşil durum - Yeşil çubuk" yorumunu görüntüleyecektir. İkinci durum, mevcut BW MFI'ın bir öncekinden daha düşük olduğu ve aynı zamanda mevcut hacmin de bir öncekinden daha düşük olduğu durumdur. Bu durumda, alım-satım sistemi grafikte "Solma durumu - Kahverengi çubuk" yorumunu görüntüleyecektir. Üçüncü durum, mevcut BW MFI'ın bir öncekinden daha yüksek olduğu ve mevcut hacmin ise bir öncekinden daha düşük olduğu durumdur. Sistem bu durumda grafik üzerinde "Sahte durum - Mavi çubuk" yorumunu görüntüleyecektir. Dördüncü ve son durum, mevcut BW MFI’ın bir öncekinden daha düşük olduğu ve mevcut hacmin ise bir öncekinden daha yüksek olduğu durumdur. Sistem bu durumda da grafik üzerinde "Squat durumu - Pembe çubuk" yorumunu görüntüleyecektir.

Aşağıdaki şema bu stratejinin planını göstermektedir:

BW MFI - Hareket durumu planı

İkinci strateji: BW MFI sinyalleri

Bu stratejiye göre, gösterge çubuklarından piyasa durumunun belirlenmesinin ardından, bu duruma ilişkin sinyali üretmek için kullanılabilecek bir alım-satım sistemi oluşturacağız. Sinyal grafikte yorum olarak görüntülenecektir. Bunu yapmak için, her tikte dört durumu kontrol edecek ve uygun sinyali geri döndürecek bir program yazmamız gerekiyor. Alım-satım sistemi BW MFI göstergesinin yeşil durum gösterdiğini belirlediğinde, program grafikte "İyi bir giriş bul" sinyalini yorum olarak görüntülemelidir. Sistem ikinci durumu (solma) tespit ederse, grafikte "İyi bir çıkış bul" sinyalini içeren yorumu görüntülemelidir. Sistem göstergenin üçüncü - sahte - durumunu tespit ederse, bu kez grafikte “Yanlış kırılma olasılığı” sinyalini yorum olarak görüntülemelidir. Ve son olarak, göstergenin dördüncü - squat - durumunu tespit ederse, bu sefer de grafikte “Piyasa dengede” sinyalini yorum olarak görüntülemelidir.

Aşağıdaki şema bu stratejinin planını göstermektedir:

BW MFI sinyalleri planı

Üçüncü strateji: MA ile BW MFI

Bu strateji üzerinde çalışan sistem, BW MFI göstergesine ve basit hareketli ortalamaya dayalı olarak grafikte alış veya satış sinyalini içeren yorumlar görüntülemelidir. Bunu yapmak için, program her tikte kapanış fiyatını, mevcut basit hareketli ortalama değerini ve BW MFI göstergesinin durumunu sürekli olarak kontrol etmelidir. Kapanış fiyatı mevcut basit hareketli ortalama değerinden daha yüksekse ve BW MFI göstergesinin mevcut durumu yeşilse, alım-satım sistemi grafikte yorum olarak alış sinyalini görüntüleyecektir. Kapanış fiyatı mevcut basit hareketli ortalama değerinden daha düşükse ve BW MFI göstergesinin mevcut durumu yeşilse, bu durumda da alım-satım sistemi grafikte yorum olarak satış sinyalini görüntüleyecektir. Diğer herhangi bir durumda herhangi bir yorum çıktısı almaya gerek yoktur.

Aşağıdaki şema bu stratejinin planını göstermektedir:

MA ile BW MFI planı

BW MFI göstergesine dayalı alım-satım sistemi

Makalenin bu bölümünde, ele alınan her strateji için alım-satım sistemleri oluşturacağız. Grafikte BW MFI göstergesinin mevcut değerini içeren yorum görüntüleyecek basit bir program oluşturarak başlayacağız. Bu programı stratejilerimiz için bir temel olarak kullanacağız. Program oluşturma adımları:

Ondalıklı değerler geri döndürmek için reel türlerden biri olan “double” fonksiyonunu kullanarak BWMFIArray dizisini oluşturalım.

double BWMFIArray[];

“ArraySetAsSeries” fonksiyonunu kullanarak dizileri mevcut veriden başlayarak sıralayalım. Parametreleri şunlardır:

  • array[] - Sıralamanın yapılacağı dizi. (BMWFIArray) kullanacağız.
  • flag - Dizi indeksleme yönü. (true) ayarlayacağız.
ArraySetAsSeries(BWMFIArray,true);

BWMFIDef adında bir tamsayı değişken oluşturalım ve "iBWMFI" fonksiyonunu kullanarak Bill Williams Market Facilitation Index göstergesini tanımlayalım. Bu fonksiyon göstergenin tanıtıcısını geri döndürür ve parametreleri şunlardır:

  • symbol - Sembol adı. Mevcut sembole uygulanmak üzere (_Symbol) kullanacağız.
  • period - Zaman dilimi. Mevcut zaman dilimine uygulanmak üzere (_Period) kullanacağız.
  • applied_volume - Uygulanacak hacim türü. Tik hacmini (VOLUME_TICK) kullanacağız.
int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);

“CopyBuffer” fonksiyonunu kullanarak, tanımladığımız BW MFI göstergesine göre BWMFIArray dizisini dolduralım. Parametreleri şunlardır:

  • indicator_handle - Gösterge tanıtıcısı. (BWMFIDef) kullanacağız.
  • buffer_num - Gösterge arabellek numarası. (0) ayarlayacağız.
  • start_pos - Kopyalamanın başlangıç konumu. (0) ayarlayacağız.
  • count - Kopyalanacak veri miktarı. (3) ayarlayacağız.
  • buffer[] - Kopyalamanın yapılacağı hedef dizi. (BWMFIArray) kullanacağız.
CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);

BWMFIVal için double türü değişken oluşturduktan sonra mevcut BW MFI değerini alalım. Değerin yuvarlanması için “NormalizeDouble” fonksiyonunu kullanacağız.

  • value - Normalleştirilecek değer. Mevcut değer için (BWMFIArray[0]) kullanacağız.
  • digits - Noktadan sonraki basamak sayısı. (5) kullanacağız.
double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);

“Comment” fonksiyonunu kullanarak mevcut BW MFI değerini grafik üzerinde yorum olarak görüntüleyelim.

Comment("BW MFI Value = ",BWMFIVal);

Bu programın tam kodu aşağıda gösterilmektedir:

//+------------------------------------------------------------------+
//|                             Simple Market Facilitation Index.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   ArraySetAsSeries(BWMFIArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   Comment("BW MFI Value = ",BWMFIVal);
  }
//+------------------------------------------------------------------+

Hata olmadığından emin olarak kodu derleyin. Sonrasında, derlenen program MetaTrader 5 işlem terminalinin Kılavuz penceresindeki Uzman Danışmanlar klasörü altında görünecektir:

Kılavuz - Simple Market Facilitation 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 Market Facilitation Index penceresi

"Algoritmik alım-satıma izin ver" seçeneğini etkinleştirip Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:

Grafiğe eklenmiş Simple Market Facilitation Index

Böylece, program mevcut BW MFI değerini grafik üzerinde yorum olarak gösterecektir:

Grafikte mevcut BW MFI değeri

Yukarıdaki grafikte, BW MFI göstergesinin mevcut değerini içeren program tarafından oluşturulan yorum sol üst köşede görüntülenmektedir.

Birinci strateji: BW MFI - Hareket durumu

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

//+------------------------------------------------------------------+
//|                                     BW MFI - Movement Status.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   if(BWMFIVal>BWMFIVal1&&volVal>volVal1)
     {
      Comment("Green State - Green Bar");
     }
   if(BWMFIVal<BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fade State - Brown Bar");
     }
   if(BWMFIVal>BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fake State - Blue Bar");
     }
   if(BWMFIVal<BWMFIVal1&&volVal>volVal1)
     {
      Comment("Squat State - Pink Bar");
     }
  }
//+------------------------------------------------------------------+

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

BWMFIArray ve volArray şeklinde iki dizi oluşturuyoruz ve "ArraySetAsSeries" fonksiyonunu kullanarak bu dizilerdeki verileri sıralıyoruz:

   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
BWMFIDef ve volDef adlı tamsayı değişkenler oluşturuyoruz. “iBWMFI” fonksiyonunu kullanarak BW MFI göstergesini ve “iVolumes” fonksiyonunu kullanarak hacim göstergesini tanımlıyoruz. Bu fonksiyonlar göstergelerin tanıtıcılarını geri döndürür. Parametreleri şunlardır:
  • symbol - Sembol adı. Mevcut sembole uygulanmak üzere (_Symbol) kullanacağız.
  • period - Zaman dilimi. Mevcut zaman dilimine uygulanmak üzere (_Period) kullanacağız.
  • applied_volume - Uygulanacak hacim türü. Tik hacmini (VOLUME_TICK) kullanacağız.
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);

“CopyBuffer” fonksiyonunu kullanarak, tanımladığımız hacim göstergesine göre volArray dizisini dolduruyoruz:

CopyBuffer(volDef,0,0,3,volArray);

BW MFI göstergesinin ve hacmin mevcut ve önceki değerlerini belirliyoruz:

   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);

Stratejinin koşulları:

Yeşil çubuk söz konusu olduğunda,

   if(BWMFIVal>BWMFIVal1&&volVal>volVal1)
     {
      Comment("Green State - Green Bar");
     }

Kahverengi çubuk söz konusu olduğunda,

   if(BWMFIVal<BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fade State - Brown Bar");
     }

Mavi çubuk söz konusu olduğunda,

   if(BWMFIVal>BWMFIVal1&&volVal<volVal1)
     {
      Comment("Fake State - Blue Bar");
     }

Pembe çubuk söz konusu olduğunda,

   if(BWMFIVal<BWMFIVal1&&volVal>volVal1)
     {
      Comment("Squat State - Pink Bar");
     }

Kodu derledikten ve programı Kılavuzdan başlattıktan sonra, Uzman Danışman grafik üzerinde çalışmaya başlayacaktır:

Grafiğe eklenmiş BW MFI - Movement Status

Uzman Danışmanın grafiğe eklendiğini görebiliriz - sağ üst köşede ilgili bir simge görünmektedir. Şimdi bu stratejinin sinyallerini alabiliriz. Örnek sinyaller aşağıda gösterilmiştir:

Yeşil durum sinyali durumunda,

BW MFI - Movement Status - Yeşil durum sinyali

 

Yukarıdaki görüntüde sol üst köşede program tarafından yazılan yeşil durum sinyalini görebiliyoruz.

Solma durumu sinyali durumunda,

BW MFI - Movement Status - Solma durumu sinyali

Grafiğin sol üst köşesinde solma durumu sinyalini içeren bir yorum görüntülenmektedir.

Sahte durum sinyali durumunda,

BW MFI - Movement Status - Sahte durum sinyali

Yine grafik üzerinde bir yorum - bu kez sahte durum sinyalini gösteriyor.

Squat durumu sinyali durumunda,

BW MFI - Movement Status - Squat durumu sinyali

Program tarafından tespit edilen squat durumu sinyali de yine grafiğin sol üst köşesinde yorum olarak görüntülenmektedir. 

İkinci strateji: BW MFI sinyalleri

Bu programın tam kodu aşağıda gösterilmektedir:

//+------------------------------------------------------------------+
//|                                               BW MFI Signals.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;
   
   if(greenState)
     {
      Comment("Find a good entry");
     }
   if(fadeState)
     {
      Comment("Find a good exit");
     }
   if(fakeState)
     {
      Comment("False breakout Probability");
     }
   if(squatState)
     {
      Comment("Market is Balanced");
     }
  }
//+------------------------------------------------------------------+

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

Dört durum için bool değişkenler tanımlıyoruz: her durumun koşullarına göre yeşil, solma, sahte ve squat.

   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;

Stratejinin koşulları:

Yeşil durum söz konusu olduğunda,

   if(greenState)
     {
      Comment("Find a good entry");
     }

Solma durumu söz konusu olduğunda,

   if(fadeState)
     {
      Comment("Find a good exit");
     }

Sahte durum söz konusu olduğunda,

   if(fakeState)
     {
      Comment("False breakout Probability");
     }

Squat durumu söz konusu olduğunda,

   if(squatState)
     {
      Comment("Market is Balanced");
     }

Kodu derleyin ve programı Kılavuz penceresinden çalıştırın. Uzman Danışman grafik üzerinde aşağıdaki gibi çalışacaktır:

Grafiğe eklenmiş BW MFI Signals

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:

İyi bir giriş bul sinyali durumunda:

BW MFI Signals - İyi bir giriş bul sinyali

Gördüğümüz gibi, yukarıdaki grafikte, grafiğin sol üst köşesinde potansiyel piyasaya girişi bildiren bir yorum görüntülenmektedir.

İyi bir çıkış bul sinyali durumunda:

BW MFI Signals - İyi bir çıkış bul sinyali

Gördüğümüz gibi, yukarıdaki grafikte, grafiğin sol üst köşesinde potansiyel piyasadan çıkışı bildiren bir yorum görüntülenmektedir.

Yanlış kırılma olasılığı sinyali durumunda:

BW MFI Signals - Yanlış kırılma olasılığı sinyali

Gördüğümüz üzere, bu kez program grafiğin sol üst köşesinde yanlış kırılma olasılığını bildiren bir yorum göstermektedir.

Piyasa dengede sinyali durumunda:

BW MFI Signals - Piyasa dengede sinyali

Bu sinyalde de program tarafından grafiğin sol üst köşesinde piyasa dengede yorumu görüntülenmektedir.

Üçüncü strateji: MA ile BW MFI

BW MFI ve hareketli ortalamayı birleştirdiğimiz stratejiye dayanan alım-satım sisteminin tam kodu aşağıda verilmiştir:

//+------------------------------------------------------------------+
//|                                               BW MFI with MA.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double BWMFIArray[];
   double volArray[];
   double maArray[];
   MqlRates pArray[];
   ArraySetAsSeries(BWMFIArray,true);
   ArraySetAsSeries(volArray,true);
   ArraySetAsSeries(maArray,true);
   int BWMFIDef=iBWMFI(_Symbol,_Period,VOLUME_TICK);
   int volDef=iVolumes(_Symbol,_Period,VOLUME_TICK);
   int maDef=iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);
   int data=CopyRates(_Symbol,_Period,0,10,pArray);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   CopyBuffer(maDef,0,0,3,maArray);
   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   double maVal=NormalizeDouble(maArray[0],5);
   double closingPrice=pArray[0].close;
   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;
   if(closingPrice>maVal&&greenState)
     {
      Comment("Buy Signal");
     }
   else
      if(closingPrice<maVal&&greenState)
        {
         Comment("Sell signal");
        }
      else
         Comment("");
  }
//+------------------------------------------------------------------+

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

“double” fonksiyonunu kullanarak maArray ve “MqlRates” fonksiyonunu kullanarak pArray adlı iki dizi daha oluşturuyoruz:

   double maArray[];
   MqlRates pArray[];

"ArraySetAsSeries" fonksiyonunu kullanarak maArray dizisindeki verileri sıralıyoruz:

ArraySetAsSeries(maArray,true);

maDef adında bir tamsayı değişken oluşturuyoruz ve "iMA" fonksiyonunu kullanarak Moving Average’ı tanımlıyoruz. Bu fonksiyon göstergenin tanıtıcısını geri döndürür ve parametreleri şunlardır:

  • symbol - Sembol adı. Mevcut sembole uygulanmak üzere (_Symbol) kullanacağız.
  • period - Zaman dilimi. Mevcut zaman dilimine uygulanmak üzere (_Period) kullanacağız. Aynı zamanda mevcut zaman dilimi için (PERIOD_CURRENT) değerini de kullanabilirsiniz.
  • ma_period - Moving Average periyodu. (10) ayarlayacağız.
  • ma_shift - Moving Average kayma miktarı. MA'yı kaydırmamız gerekmediği için (0) ayarlayacağız.
  • ma_method - Moving Average yöntemi. Simple Moving Average (MODE_SMA) kullanacağız.
  • applied_price - Hesaplamada kullanılan fiyat türü. Kapanış fiyatını (PRICE_CLOSE) kullanacağız.
int maDef=iMA(_Symbol,_Period,10,0,MODE_SMA,PRICE_CLOSE);

“CopyRates” fonksiyonunu kullanılarak MqlRates'in geçmiş verilerini alıyoruz:

  • symbol_name - Sembol adı. Mevcut sembole uygulanmak üzere (_Symbol) kullanacağız.
  • timeframe - Zaman dilimi. Mevcut zaman dilimine uygulanmak üzere (_Period) kullanacağız.
  • start_pos - Kopyalamanın başlangıç konumu. Mevcut konumdan başlaması için (0) ayarlayacağız.
  • count - Kopyalanacak veri miktarı. (10) ayarlayacağız.
  • rates_array[] - Kopyalamanın yapılacağı hedef dizi. (pArray) dizisini kullanacağız.
int data=CopyRates(_Symbol,_Period,0,10,pArray);

“CopyBuffer” fonksiyonunu kullanarak, tanımladığımız göstergelere göre BWMFIArray, volArray ve maArray dizilerini dolduruyoruz:

   int data=CopyRates(_Symbol,_Period,0,10,pArray);
   CopyBuffer(BWMFIDef,0,0,3,BWMFIArray);
   CopyBuffer(volDef,0,0,3,volArray);
   CopyBuffer(maDef,0,0,3,maArray);

BW MFI ve hacmin önceki değerlerine ek olarak BW MFI göstergesinin, hacmin, basit hareketli ortalamanın ve kapanış fiyatının mevcut değerlerini alıyoruz:

   double BWMFIVal=NormalizeDouble(BWMFIArray[0],5);
   double BWMFIVal1=NormalizeDouble(BWMFIArray[1],5);
   double volVal=NormalizeDouble(volArray[0],5);
   double volVal1=NormalizeDouble(volArray[1],5);
   double maVal=NormalizeDouble(maArray[0],5);
   double closingPrice=pArray[0].close;

Dört durum için bool değişkenler oluşturuyoruz: yeşil, solma, sahte ve squat.

   bool greenState = BWMFIVal>BWMFIVal1&&volVal>volVal1;
   bool fadeState = BWMFIVal<BWMFIVal1&&volVal<volVal1;
   bool fakeState = BWMFIVal>BWMFIVal1&&volVal<volVal1;
   bool squatState = BWMFIVal<BWMFIVal1&&volVal>volVal1;

Stratejinin koşulları:

Alış sinyali:

   if(closingPrice>maVal&&greenState)
     {
      Comment("Buy Signal");
     }

Satış sinyali:

   else
      if(closingPrice<maVal&&greenState)
        {
         Comment("Sell signal");
        }

Diğer koşullarda:

      else
         Comment("");

Kodu derledikten ve programı grafik üzerinde başlattıktan sonra, Uzman Danışman çalışmaya ve sinyaller üretmeye başlayacaktır:

Grafiğe eklenmiş BW MFI with MA

Alış sinyali:

BW MFI with MA - Alış sinyali

Grafiğin sol üst köşesinde alış sinyalini içeren yorum görüntülenmektedir.

Satış sinyali:

BW MFI with MA - Satış sinyali

Bu grafikte de sol üst köşede program tarafından üretilen satış sinyalini görüyoruz. Böylece, Market Facilitation Index göstergesini kullanarak bir alım-satım sistemi tasarladık.

Sonuç

Bu makalede, Bill Williams tarafından geliştirilen Market Facilitation Index teknik göstergesini inceledik. Göstergenin manuel olarak nasıl hesaplanacağına, MetaTrader 5 işlem platformunda bir grafik üzerinde nasıl çalıştırılacağına ve değerlerinin nasıl yorumlanacağına baktık. Ayrıca alım-satımda nasıl kullanılabileceğini de gördük. Bu amaçla, BW MFI göstergesine dayalı birkaç basit stratejiye göz attık:

  • BW MFI - Hareket durumu stratejisi: gösterge çubuklarının rengine dayalı olarak piyasa koşulları hakkında otomatik sinyaller (yeşil, solma, sahte veya squat durumu) almak için kullanılabilir.
  • BW MFI sinyalleri stratejisi: BW MFI göstergesine dayalı olarak potansiyel fırsatlar hakkında otomatik sinyaller (iyi bir giriş bul, iyi bir çıkış bul, yanlış kırılma olasılığı veya piyasa dengede) almak için kullanılabilir.
  • MA ile BW MFI stratejisi: BW MFI göstergesine ve basit hareketli ortalamaya dayalı olarak alış ve satış sinyalleri almak için kullanılabilir.

Daha iyi sonuçlar almak ve piyasaya ilişkin daha fazla bilgi edinmek için başka teknik araçları da bu göstergeyle kullanmayı denemenizi tavsiye ederim. Ayrıca, bu araçlardan herhangi birini gerçek hesabınızda kullanmadan önce, sizin için uygun olduklarından emin olmak için onları çok iyi bir şekilde test ettiğinizden emin olmalısınız. Bu makalelerde sunulan tüm bilgilerin yalnızca eğitim amaçlı olduğunu unutmayın. Makalede bu stratejilerden bahsettikten sonra, MetaTrader 5 terminalinde çalışacak bir alım-satım sistemi oluşturmayı daha kolay ve daha hızlı hale getiren adım adım ifadelerle bu stratejiler için planlar hazırladık. Son bölümde ise bu planlar çerçevesinde stratejiler için MQL5 dilinde programlar geliştirdik.

Umarım bu makaleyi faydalı bulursunuz ve yeni fikirler bulmanıza ve daha iyi alım-satım sonuçları elde etmenize yardımcı olur. Bu makaledeki tüm kodları kendi başınıza yazmayı, kendi programlarınızı oluşturmayı denediğinizi umuyorum - gördüklerinizi tekrar etmek, her öğrenme sürecinde önemli bir faktördür. Ve bizim durumumuzda, MQL5 programlama becerilerinizi geliştirmenize olanak tanır. Makaleyi beğendiyseniz ve yararlı bulduysanız, çeşitli popüler teknik göstergelere dayalı alım-satım sistemlerinin nasıl geliştirileceğini öğrendiğimiz aynı serideki önceki makalelerimi de okuyabilirsiniz.

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

Sıfırdan bir alım-satım Uzman Danışmanı geliştirme (Bölüm 29): Konuşan platform Sıfırdan bir alım-satım Uzman Danışmanı geliştirme (Bölüm 29): Konuşan platform
Bu makalede MetaTrader 5 platformunu nasıl konuşturacağımızı öğreneceğiz. Uzman Danışmanı daha eğlenceli hale getirmeye ne dersiniz? Finansal piyasalarda alım-satım yapmak genellikle çok monotondur, ancak bu süreci daha eğlenceli hale getirebiliriz. Bu projenin bağımlılık gibi sorunlar yaşayanlar için tehlikeli olabileceğini lütfen unutmayın. Genel olarak alım-satım sürecini daha keyifli hale getireceğiz.
Gator Oscillator göstergesine dayalı bir alım-satım sistemi nasıl geliştirilir? Gator Oscillator göstergesine dayalı bir alım-satım sistemi nasıl geliştirilir?
En popüler göstergelere dayalı alım-satım sistemlerini nasıl oluşturacağımızı öğrendiğimiz serinin yeni makalesi. Bu kez Gator Oscillator göstergesi hakkında konuşacağız ve bu göstergeyi kullanan bazı basit stratejilere dayalı olarak bir alım-satım sistemi oluşturacağız.
Sıfırdan bir alım-satım Uzman Danışmanı geliştirme (Bölüm 30): Bir gösterge olarak alım-satım arayüzü? Sıfırdan bir alım-satım Uzman Danışmanı geliştirme (Bölüm 30): Bir gösterge olarak alım-satım arayüzü?
Bugün yine alım-satım arayüzünü kullanacağız, ancak bu sefer grafikte mevcut olabilecek veya olmayabilecek bir gösterge şeklinde olacaktır.
Scikit-learn kütüphanesinin sınıflandırma modelleri ve bunların ONNX'e aktarılması Scikit-learn kütüphanesinin sınıflandırma modelleri ve bunların ONNX'e aktarılması
Bu makalede, Fisher'ın iris veri kümesinin sınıflandırma görevini çözmek için Scikit-learn kütüphanesinde bulunan tüm sınıflandırma modellerinin uygulanmasını inceleyeceğiz. Bu modelleri ONNX formatına dönüştürmeye ve elde edilen modelleri MQL5 programlarında kullanmaya çalışacağız. Ek olarak, orijinal modellerin doğruluğunu tam iris veri setindeki ONNX versiyonlarıyla karşılaştıracağız.