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

Mohamed Abdelmaaboud | 6 Temmuz, 2022

Giriş

Bir önceki makalemde trend tespitinin yani fiyat hareketinin yönünü belirlemenin öneminden bahsetmiştim. Bu önemlidir çünkü trende dayalı olarak uygun ticaret kararları verebiliriz. Dolayısıyla, piyasanın trendini belirlemenin daha bilinçli ticaret kararları vermeye ve ticaret sonuçlarını iyileştirmeye yardımcı olacağını söyleyebiliriz. Bu nedenle piyasanın trendini analiz etmek ve belirlemek çok önemlidir. 

Karar verme sürecini iyileştirebilecek bir diğer faktör de, belirlenen trendin güçlü mü yoksa zayıf mı olduğunu ya da başka bir deyişle trendin devam edip etmeyeceğini belirleme yeteneğidir. Bunu yapabilecek birçok farklı araç vardır. Bu makalede, trend hakkında daha fazla bilgi edinmemize yardımcı olabilecek en önemli araçlardan biri olan, fiyatların ve trendin hızını ölçen Momentum göstergesine odaklanacağız.

Bu makale boyunca, Momentum’u ayrıntılı olarak inceleyeceğiz, nasıl kullanılacağını göreceğiz ve yeteneklerini programlama büyüsü ile tamamlamak adına onunla MQL5'te basit bir ticaret sistemi geliştireceğiz, bu da ticareti daha kolay, daha rahat ve daha verimli hale getirecek. Bu makalede aşağıdaki konuları ele alacağız:

Momentum göstergesi hakkında daha fazla bilgiyi ilk konumuz olan "Momentum göstergesinin tanımı"nda anlatacağım - bu başlık altında momentum göstergesinin ne olduğunu ve nasıl hesaplandığını göreceğiz. Ardından, Momentum göstergesini ve bizim için nasıl yararlı olabileceğini daha iyi anlamamızı sağlayacak basit bir stratejiyle tanışacağız. Sonrasında, MQL5'te kodlamamıza yardımcı olması adına ilgili Momentum ticaret stratejisi için bir ticaret sistemi planı tasarlayacağız. Ve devamında da, bu stratejinin sinyallerini almak için nasıl kodlanacağını ve çalıştırılacağını inceleyeceğiz. 

Bu makalede ticaret sistemi programlarımızı çalıştırmak için MetaTrader 5’i kullanacağız. Kodları MetaTrader 5’te yerleşik olan MetaQuotes Language Düzenleyicisini kullanarak yazacağız. MetaTrader 5'i şu linkten indirebilirsiniz: https://www.metatrader5.com/en/download

Kurulumdan sonra aşağıdaki MetaTrader 5 platformu penceresi görünecektir:

MT5 platformu

Ardından, kodu yazacağımız MetaEditor kod düzenleyicisini açmamız gerekiyor. Bu farklı şekillerde yapılabilir:

Şahsen bunu yapmanın en kolay yolu MetaTrader 5'i açıp F4 tuşuna basmaktır. Böylece, MetaEditor hızlıca açılacaktır.

İkinci yol ise Araçlar sekmesini kullanmaktır:

Metaeditor açılışı

Üçüncü yol ise, MetaTrader 5'te paneldeki IDE düğmesidir:

Metaeditor açılışı

Açılan MetaEditor kod düzenleyicisi penceresi şu şekilde görünecektir:

Metaeditor penceresi

Bu konuda daha fazla bilgi edinmek istiyorsanız bu makale serisinin ilk makalesini okuyabilirsiniz:  Algoritmik Ticaret Sisteminizi Neden ve Nasıl Tasarlayacağınızı Öğrenin

Ayrıca, okuduklarınızı ve öğrendiklerinizi pratik olarak uygulamanızı tavsiye ederim, çünkü bu size, konuları daha iyi anlamanızda ve ilgili veya farklı konularda yeni fikirler bulmanızda yardımcı olacaktır. Bu makalenin ana amacı, harika bir araç olan MQL5'in ticarette size nasıl yardımcı olabileceği hakkında öğrendiklerimi paylaşmaktır.

Lütfen öğrendiğiniz her şeyi kullanmadan önce test etmeniz gerektiğini unutmayın, çünkü bana uygun olan şey size ve ticaret tarzınıza uygun olmayabilir. Bu nedenle, sizin için yararlı olup olmayacağını incelemek adına öğrenmekte olduğunuz her şeyi bir demo hesabı kullanarak test etmek çok önemlidir. 

Sorumluluk reddi: Bu makalenin tüm içeriği yalnızca eğitim amaçlıdır, başka herhangi bir amaca yönelik değildir. Dolayısıyla, bu makalenin içeriğine dayalı olarak gerçekleştireceğiniz her şey, yalnızca kendi sorumluluğunuzda ve riskinizde olacaktır, bu makalenin içeriği herhangi bir sonucu garanti etmemektedir.

Şimdi, bilgi birikimimizde ve gelişmemizde yeni bir blok daha oluşturmak için bu konuyu öğrenmeye başlayalım.


Momentum göstergesinin tanımı

Bu bölümde momentumun ne olduğunu, ne anlama geldiğini, ticaretimiz için nasıl yararlı olabileceğini ve Momentum göstergesinin ne olduğunu ve nasıl hesaplandığını öğreneceğiz. Bütün bunlar, bu aracın kullanışlılığını ve olası kullanım şekillerini anlamada yardımcı olacaktır, çünkü şu çok önemlidir, bir şeyin özünü anladığımızda onunla etkili bir şekilde başa çıkabiliriz.

Momentum kavramı bir şeyin hızını ölçmektir. Burada ise fiyat değişimlerinin hızı ölçülür. Mevcut fiyat bir önceki fiyatla karşılaştırılır ve bu iki fiyat arasındaki değişim oranı ölçülür. Momentum göstergesinin yaptığı da tam olarak budur - fiyat değişimlerinin hızını veya trendin ivmesini ölçer.

Kararlarımızı ona göre alacağımız için önce trendin türünü veya piyasanın yönünü belirlemenin çok önemli olduğunu zaten biliyoruz. Bu nedenle, trendi belirlememiz gerekir: yükseliş trendi mi, düşüş trendi mi yoksa yatay hareket mi?

Daha fazla bilgi için bir önceki makaleme bakabilirsiniz: RSI göstergesine dayalı bir ticaret sistemi nasıl geliştirilir? 

Momentum kavramı, trend hareketinin gücünü gösteren başka bir boyut sağladığı için çok önemlidir. Dolayısıyla artık sadece trendin yönünü belirlemekle kalmayacağız, aynı zamanda momentumu analiz ederek trendin gücünü de ölçebileceğiz.

Momentum göstergesi öncü bir göstergedir, yani grafik değişmeden önce gösterge değeri değişir.

Hesaplamasına dayalı olarak sınırlandırılmamış bir osilatördür, bu da dezavantajlarından biri olarak kabul edilir. Diğer bir dezavantajı ise, hesaplamasına dayalı olarak Momentum göstergesinin mevcut gün ile periyot arasındaki verileri kaçırmasıdır.

Momentum göstergesini hesaplamanın iki yolu vardır:

Bu iki yol da, mevcut fiyatı ve tercih edeceğiniz periyot kadar önceki fiyatı kullanacaktır, varsayılan periyot değeri 14'tür. Şimdi, her iki hesaplama türünde kullanılan formülleri bazı örneklerle görelim.

Hesaplaması çok basittir - mevcut çubuğun kapanış fiyatı ile tercih edilen periyot kadar önceki çubuğun kapanış fiyatı arasındaki farkı buluyoruz.

Momentum = mevcut çubuğun kapanış fiyatı - n. çubuğun kapanış fiyatı

n = 14, bu varsayılan periyot değeridir

Hesaplama, sıfırın üstünde ve altında salınan Momentum göstergesinin çizgisi ile sonuçlanacaktır.

Bu hesaplamayı bir örnekle ele alalım. Şu verilere sahip olduğumuzu varsayalım:

Gün Kapanış fiyatı
1
10
2 12
3 15
4 17
5 19
6 20
7 18
8 16
9 20
10 22
11 24
12 20
13 18
14 17
15 15

Şimdi, 15. gündeki Momentumu hesaplamak istersek, şu şekilde olacaktır:

Momentum = mevcut çubuğun kapanış fiyatı - n. çubuğun kapanış fiyatı

n = 14, yani ilk gün

Momentum = 15 - 10 = 5

Bu fark, sıfırın üzerinde ve 5 hizasında çizilecektir, burada Momentum göstergesi sıfırın üzerinde ve altında salınacaktır. Bu hesaplamadan, daha önce bahsettiğimiz dezavantajları görebiliyoruz: mevcut çubuktan 14 periyot önceki çubuğu çıkardığımız için hesaplanan bu iki veri arasındaki veriler eksik olmaktadır. Diğer bir dezavantaj ise göstergenin limitinin olmamasıdır, yani, maksimum ve minimum değerler için bir sınır belli değildir. 

Momentum göstergesini hesaplamanın bir diğer yolu da oran kullanmaktır. MetaTrader 5'te bu hesaplama kullanılmaktadır. Şu adımlardan oluşur:

Momentum = (mevcut çubuğun kapanış fiyatı / n. çubuğun kapanış fiyatı)*100

n = 14, yani ilk gün

Bu hesaplamayı bir önceki örneğe uyguladığımızda Momentumu aşağıdaki gibi elde ederiz:

Momentum = (15 / 10)*100 = 150

Ardından, değer 100'ün üzerinde ve 150 hizasında çizilecektir, burada Momentum göstergesi 100'ün üzerinde ve altında salınacaktır. Bu makalede, bu hesaplama yöntemini kullanacağız ve strateji buna dayalı olarak uygulanacaktır.

Gösterge zaten MetaTrader 5'te yerleşiktir, bu yüzden sadece onu seçmemiz gerekir, manuel olarak hesaplamaya gerek kalmadan grafikte çalışacaktır. Aşağıdaki bilgiler göstergenin grafiğe nasıl ekleneceğine yöneliktir.

MetaTrader 5'ten, aşağıdaki görüntüde gösterildiği gibi, "Ekle" sekmesinden, "Göstergeler"i, ardından "Osilatörler"i ve devamında da“Momentum”u seçin:

Momentum göstergesini ekleme

Momentum’u seçtikten sonra, Momentum göstergesinin parametreleri için aşağıdaki pencere açılacaktır:

Momentum göstergesi parametreleri

Gösterge parametrelerini ticaret tarzınıza veya ticaret planınıza göre sizin için uygun olacağını düşündüğünüz şekilde ayarlayabilirsiniz. Parametreler şu anlama gelmektedir:

  1. Mevcut çubuğun fiyatıyla karşılaştırılacak periyottur, varsayılan değer 14'tür.
  2. Hesaplamada kullanmak istediğiniz fiyat türü (kapanış, açılış, yüksek, düşük vb.).
  3. Renk, çizgi tipi ve çizgi kalınlığı olarak göstergenin görünmesini istediğiniz stil.

Uygun parametreleri seçin, Tamama tıklayın ve gösterge aşağıdaki görüntüdeki gibi grafikte görünecektir:

Grafikte Momentum göstergesi


Momentum göstergesi stratejisi

Bu bölümde, Momentum göstergesini kullanan basit bir stratejiyi inceleyeceğiz. Momentum'u kullanmanın pek çok faydalı stratejisi ve yolu vardır, ancak amacımız nasıl kullanılacağını öğrenmek ve konunun özünü öğrendikten sonra ortaya çıkabilecek yeni fikirlere kapı açmak olduğu için eğitim adına basit bir stratejiyle çalışacağız. Nihai hedef, bu fikirlerin MQL5 kullanılarak ticaret sistemleri şeklinde nasıl tasarlanacağını öğrenmektir.

Stratejimiz, 100 seviyesini çaprazlayan Momentum çizgisini arayacaktır. Momentum çizgisi 100'ü aşağıdan yukarıya doğru çaprazladığında, bu alış sinyali olacaktır. Momentum çizgisi 100'ü yukarıdan aşağıya doğru çaprazladığında ise, bu satış sinyali olacaktır.

Sinyal, trendin yönüne göre üretilecektir - bu, üretilen sinyal için filtre olacaktır. Momentum göstergesi, üretilen sinyalleri filtrelemek adına kullanılabilecek testere dişi hareketler sağlar.

Strateji şu şekilde olacaktır:

Yükseliş trendi sırasında:

Aşağıdaki görüntü, Momentum göstergesinin 100 seviyesini çaprazlamasına dayalı yükseliş trendi sırasında oluşan sinyal örneğini göstermektedir:

Yükseliş trendi stratejisi

Düşüş trendi sırasında:

Aşağıdaki görüntü, Momentum göstergesinin 100 seviyesini çaprazlamasına dayalı düşüş trendi sırasında oluşan sinyal örneğini göstermektedir:

Düşüş trendi stratejisi

Momentum göstergesine dayalı ticaret sisteminin planı

Bu bölümde, yukarıda bahsettiğimiz Momentum göstergesi stratejisini bir ticaret sistemi olarak tasarlamak için bir plan sunacağım. Bu adım, bilgisayar tarafından çalıştırılabilecek bir program elde etmeye yönelik gelecekteki kodlamanın planlanmasıyla ilgilidir.

Momentum göstergesi yükseliş trendi planı

Momentum göstergesi düşüş trendi planı

Yukarıdaki planları kullanarak, Momentum göstergesi sinyallerini manuel olarak kontrol etmek zorunda kalmadan otomatik olarak sinyal üretecek bir program elde etmek için MQL5’i kullanarak stratejiyi programlayalım. Makalenin bir sonraki bölümünde bunu yapacağız.


Momentum göstergesine dayalı ticaret sistemi

İlk olarak, Momentum göstergesine dayalı bir programın nasıl kodlanabileceğini daha iyi anlamak için, grafik üzerinde göstergenin değerini yorum olarak gösterecek basit bir Momentum sistemi kodlayalım. Bu, aşağıdaki kodda uygulanmaktadır:

//+------------------------------------------------------------------+
//|                                       Simple Momentum System.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()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue>100) Comment("MOMENTUM VALUE IS: ",MomentumValue);
   
  }
//+------------------------------------------------------------------+

Bu programı yazdıktan sonra, MetaTrader 5 işlem platformunda çalıştırmanız gerekmektedir. Bunu yapmak için, MetaTrader 5 işlem terminaline gidin ve Kılavuzdan ilgili dosyayı bulun. Kılavuz penceresi genellikle terminalde açıktır. Değilse, “Görünüm” sekmesine gidin ve “Kılavuzu” seçin veya MetaTrader 5 açıkken Ctrl + N tuşlarına basın.

Aşağıdaki görüntü, dosyanın Kılavuzda nasıl göründüğünü göstermektedir:

Kılavuzda Simple Momentum System

Ardından, bu dosyayı çift tıklayarak veya grafik üzerine sürükleyerek açın. Bu, aşağıdaki program penceresini açacaktır:

Simple Momentum System penceresi

"Algoritmik ticarete izin ver" seçeneğini etkinleştirin ve Tamama tıklayın. Program grafiğe eklenecek ve uygun yorumlar grafikte görüntülenecektir. Aşağıda programın nasıl çalıştığına dair bir örnek bulunmaktadır:

Grafiğe eklenmiş Simple Momentum System

Şimdi, stratejimizi iki tür trendle tasarlamamız gerekiyor - yükseliş trendi ve düşüş trendi. Yani, daha önce tanımladığımız gibi:

Yükseliş trendi sırasında:

Bu, aşağıdaki kodda uygulanmaktadır:

//+------------------------------------------------------------------+
//|                                    Momentum Uptrend Strategy.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue>100) Comment("MOMENTUM UPTREND STRATEGY - BUY");
   if(MomentumValue<100) Comment("MOMENTUM UPTREND STRATEGY - No SIGNAL");
  }
//+------------------------------------------------------------------+

Kodu yazdıktan sonra aynı şekilde işlem terminalinde çalıştırın - program gerekli sinyalleri üretecektir. Kılavuz penceresine gidin ve aşağıdaki görüntüde gösterildiği gibi programı bulun:

Kılavuzda Momentum Uptrend Strategy

Ardından dosyayı çift tıklayarak veya grafiğe sürükleyerek açın. Bu, aşağıdaki parametreler penceresini açacaktır:

Momentum Uptrend Strategy penceresi 

"Algoritmik ticarete izin ver" seçeneğini etkinleştirin ve Tamama tıklayın. Dosya aşağıdaki gibi grafiğe eklenecektir:

Grafiğe eklenmiş Momentum Uptrend Strategy

Program, bu stratejiye göre sinyalleri göstererek grafik üzerinde yorumlar oluşturmaya başlayacaktır.

Momentum Uptrend Strategy - Alış sinyali

Momentum Uptrend Strategy - Sinyal yok

Düşüş trendi sırasında:

Bu, aşağıdaki kodda uygulanmaktadır:

//+------------------------------------------------------------------+
//|                                  Momentum Downtrend Strategy.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnTick()
  {
   //Creating array for prices
   double PriceArray [];
   
   //Identifying Momentum properties
   int MomentumDef = iMomentum(_Symbol,_Period,14,PRICE_CLOSE);
   
   //Sorting price array
   ArraySetAsSeries(PriceArray,true);
   
   //Copying results
   CopyBuffer(MomentumDef,0,0,3,PriceArray);
   
   //Getting Momentum value of current price
   double MomentumValue = NormalizeDouble(PriceArray[0],2);
   
   //Commenting Momentum output on the chart
   if(MomentumValue<100) Comment("MOMENTUM DOWNTREND STRATEGY - SHORT");
   if(MomentumValue>100) Comment("MOMENTUM DOWNTREND STRATEGY - No SIGNAL");
  }
//+------------------------------------------------------------------+

MetaQuotes Language Düzenleyicisinde kodu yazdıktan ve derledikten sonra, programı terminalde grafik üzerinde çalıştırın. Kılavuz penceresinden, Uzman Danışmanlar klasörünün altında, aşağıdaki görüntüde olduğu gibi programı bulun:

Kılavuzda Momentum Downtrend Strategy

Programı grafiğin üzerine sürükleyerek veya çift tıklayarak çalıştırın Bu, program parametrelerini içeren aşağıdaki pencereyi açacaktır:

Momentum Downtrend Strategy penceresi

Tekrar, "Algoritmik ticarete izin ver" seçeneğini etkinleştirin ve Tamama tıklayın. Program grafiğe eklenecek ve aşağıdaki görüntüde gösterildiği gibi çalışacaktır:

Grafiğe eklenmiş Momentum Downtrend Strategy

Bu stratejiye göre üretilen sinyaller aşağıdaki gibi olacaktır.

Momentum Downtrend Strategy - Satış sinyali

Momentum Downtrend Strategy - Sinyal yok

Burada basit bir ticaret stratejisi kullanarak Momentum göstergesini kullanan bir ticaret sistemi tasarladık. Makalede bahsettiğim gibi, Momentum göstergesi ile kullanabileceğimiz birçok strateji vardır, ancak bu makalede basit bir ticaret stratejisini inceledik. Asıl amaç, gösterge kavramını anlamaya ve stratejilerin nasıl programlanacağını öğrenmeye yardımcı olmaktır. Umarım bu konu, MQL5 ile ticareti nasıl geliştirebileceğiniz konusunda yeni fikirler bulmanıza yardımcı olur.


Sonuç

Böylece, bu konuyu da tamamladık. Bu makalede, momentum kavramını öğrendik, bu kavramın ticaretimiz için neden önemli olduğunu ve ticaretimize nasıl başka bir yararlı boyut katabileceğini gördük. Momentum göstergesine, neyi ölçtüğüne ve nasıl hesaplandığına baktık. Ardından Momentum göstergesinin farklı piyasa yönlerinde veya trendlerinde kullanabileceği basit bir strateji keşfettik. Sonrasında da, MQL5'te bir ticaret sisteminin nasıl tasarlanacağını, bu stratejinin nasıl kodlanacağını ve otomatik olarak sinyaller üretecek programın MetaTrader 5 ticaret terminalinde nasıl çalıştırılacağını öğrendik. Bu da nihayetinde bize sorunsuz, kolay ve etkili bir şekilde ticaret yapmamıza yardımcı olabilecektir.

Ve bir kez daha söylemek istiyorum ki, ticaret tarzınıza ve planınıza uygun olduğundan emin olmak için kullanmadan önce öğrendiğiniz her şeyi test etmeniz çok önemlidir. Ayrıca, öğrendiğiniz her şeyi kendiniz pratik olarak geliştirmenizi tavsiye ediyorum çünkü bu adım sadece öğrendiklerinizi özümsemenizi sağlamakla kalmaz, aynı zamanda zihninizi yeni fikirlere açacak ve ilgili veya ilgisiz farklı konular hakkında daha fazla içgörü oluşturacaktır.

Burada bahsetmek istediğim bir başka şey de, kullanılabilecek çok sayıda kârlı stratejinin mevcut olduğudur, ancak şuna çok dikkat ediniz, bir kişi bir stratejiyi kullanırken kâr elde edebilirken, başka bir kişi aynı stratejiyi kullanırken zarar edebilir. Yani, bu mesele sadece stratejiyle ilgili değildir, evet elbette strateji çok ama çok önemlidir, ancak istenen sonuçları elde etmek için gerekli olan başka unsurlar da vardır. Bunlardan en önemlisi disiplindir. Bu disiplini kazanmamız ve korumamız için yararlı ve etkili olabilecek bir aracımız da vardır, bu araç programlamadır. Kârlı bir stratejiyle bir ticaret sistemi oluşturduğumuzda, oyunun kuralları değişir, çünkü bilgisayar stratejinizi anlayacak ve insani duygular olmadan onu çalıştıracaktır. 

Umarım bu makale ticaretinizi daha iyi hale getirmenize yardımcı olur. Hepinize karlı ticaretler diliyorum!