MFI göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?
Giriş
Bu makale, en popüler teknik göstergelere dayalı basit ticaret sistemlerinin nasıl tasarlanacağına ilişkin makale serimizin devamıdır. Nihai hedef, MQL5 dilinde kodlamayı öğrenmektir. Bu sefer ise Money Flow Index (MFI) teknik göstergesini ele alacağız. Onu ayrıntılı olarak inceleyeceğiz ve arkasındaki konsept çerçevesinde basit bir ticaret sistemi geliştireceğiz. Bu amaçla aşağıdaki konular üzerinden ilerleyeceğiz:
- MFI göstergesinin tanımı
- MFI göstergesi stratejileri
- MFI göstergesine dayalı ticaret sisteminin planı
- MFI göstergesine dayalı ticaret sistemi
- Sonuç
Serideki diğer makaleleri okuduysanız, buradaki bilgilerin de aynı şekilde düzenlendiğini fark etmişsinizdir. Bu konularda, bu kez MFI göstergesi hakkında konuşacağız ve onun stratejilerine ilişkin yeni kodları analiz edeceğiz. Amacımız, yeni ticaret konseptleri keşfederken MQL5'le nasıl kod yazılacağını öğrenmektir. İlk olarak, MFI göstergesinin ne olduğunu, neyi ölçtüğünü ve manuel olarak nasıl hesaplandığını (bir örnekle birlikte) irdeleyeceğiz. Elbette bunlar sadece temel bilgilerdir. Devamında, göstergenin arkasındaki konsepti göz önünde bulundurarak bazı basit stratejileri ele alacağız. Ardından, bu stratejiler için ticaret sistemini oluştururken bize yardımcı olması adına ilgili her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırlayacağız. Son olarak da hazırladığımız bu 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.
Bu makaledeki tüm kodları kendi başınıza yazmanızı tavsiye ederim, böylece daha sonra kendi stratejilerinize, deneyimlerinize dayalı olarak kendi ticaret sistemlerinizi oluştururken daha tecrübeli ve rahat olabilirsiniz. Sadece okumakla yetinmeyin, okuduklarınızı uygulayın ve her bir kodu kendiniz yazın. Fonksiyonlar ve programlama kavramları hakkında daha fazla bilgi edinmek için araştırmalar yapın, çünkü bu birçok konuda daha da fazla bilgi sahibi olmanızı sağlayacaktır. Unutmayın ki başarılı bir programcının en önemli becerilerinden biri, pratik yapmanın yanı sıra etkili bir şekilde nasıl arama yapılacağını bilmesidir. Bu iki şey, herhangi bir öğrenme veya gelişme sürecinde çok ama çok önemlidir.
Ayrıca, herhangi bir stratejiyi kullanmadan önce tam anlamıyla test ettiğinizden emin olmalısınız. Herkes için uygun tek bir strateji yoktur. Dolayısıyla, benim için yararlı olabilecek bir şey sizin için yararlı olmayabilir.
Bu makale boyunca, kodlarımızı yazmak için MetaQuotes Language 5 (MQL5) programlama dilini ve MetaTrader 5 işlem platformunda yerleşik MetaEditor kod düzenleyicisini kullanacağız. MetaTrader 5'in nasıl kurulacağı ve MetaEditor’ın nasıl kullanılacağı hakkında daha fazla bilgi edinmek istiyorsanız, önceki makalelerimden birinde yer alan "MetaEditor'da MQL5 kodu yazma" bölümünü okuyabilirsiniz.
Sorumluluk reddi: Sağlanan tüm bilgiler 'olduğu gibi' yalnızca bilgilendirme amaçlıdır, ticaret tavsiyesi değildir. Bu bilgiler herhangi bir sonucu garanti etmemektedir. Bu materyalleri herhangi bir işlem hesabında kullanırsanız, ortaya çıkabilecek tüm riskler size ait olacaktır.
Şimdi ticaret cephaneliğimizdeki araç sayısını artırmak adına yeni bir aracı daha öğrenmek için konularımıza başlayalım.
MFI göstergesinin tanımı
Bu bölümde, hacme dayalı göstergelerden biri olan Money Flow Index (MFI) göstergesinin arkasındaki konsepti anlayabilmek için onu ayrıntılı olarak açıklayacağız. Ne olduğunu, neyi ölçtüğünü ve manuel olarak nasıl hesaplandığını (bir örnekle birlikte) göreceğiz.
Daha önceki makalelerde de bahsettiğimiz gibi ticarette hacim çok önemli bir faktördür. Kapsamlı hacim analizi, piyasanın ondan etkilenebileceği birçok yönü olduğundan, ticarette bize avantaj sağlar. Piyasaya ne kadar çok perspektiften bakarsak o kadar iyi kararlar verebiliriz, çünkü edindiğimiz bilgiler kanıtların ağırlığını artırır ve bizi karar verme konusunda daha doğru yöne yönlendirir.
Eğer bir varlık yoğun alış ve satışa maruz kalıyorsa, bu varlık daha az işlem gören bir varlığa kıyasla daha büyük bir öneme sahiptir. Finansal piyasalarda hacim, belirli bir süre boyunca işlem gören hisse veya sözleşme sayısıdır. Fiyat yükseliş trendi sırasında direnci veya düşüş trendi sırasında desteği kırarken yüksek hacmin eşlik etmesi iyidir, çünkü bu, fiyat hareketinin güçlü olduğuna işaret eder. Hacim trendle belirli bir ilişkiyle hareket etmelidir: Yükseliş trendi varlığında, fiyat yükselirken hacim artmalı, fiyat düzeltme yaparken de hacim azalmalıdır ve düşüş trendi varlığında ise fiyat düşerken hacim artmalı, fiyat düzeltme yaparken de hacim azalmalıdır. Trendle hacim arasındaki bahsettiğim ilişkinin aynı şekilde devam etmesi mevcut trendin güçlü kalacağının önemli işaretlerinden biridir.
Money Flow Index (MFI) göstergesi, Gene Quong ve Avrum Soudack tarafından oluşturulmuştur. Hacme dayalı bir göstergedir ve hesaplamasında alış ve satış baskısını ölçmek için fiyat ve hacmi kullanır. Sıfır ile 100 arasında hareket eder. MFI göstergesinde artış olması, alış baskısı olduğu anlamına gelir ve tersi şekilde, MFI'da düşüş olması da satış baskısı olduğu anlamına gelir. Trendin devamlılığını teyit edebilir veya terse dönüş için uyarı sağlayabilir. Trend hakkında daha fazla bilgi edinmek istiyorsanız, daha önce yayınladığım bir makalemde yer alan "Trendin tanımı" bölümünü okuyabilirsiniz.
MFI göstergesinin manuel olarak hesaplanması aşağıdaki adımlardan oluşur:
- Tipik fiyatı (Typical Price, TP) hesapla = (yüksek+düşük+kapanış)/3
- Ham para akışını (Money Flow, MF) hesapla = hacim * TP
- TP'nin hareketini belirle: yukarı veya aşağı. Mevcut TP > önceki TP ise = yukarı, mevcut TP < önceki TP ise = aşağı.
- (1 +MF)’leri hesapla = yukarı periyotların ham para akışları.
- (1 -MF)’leri hesapla = aşağı periyotların ham para akışları.
- (14 +MF)’i hesapla = 14 periyot için (1 +MF)’lerin toplamı.
- (14 -MF)’i hesapla = 14 periyot için (1 -MF)’lerin toplamı.
- (14 MF oranı)’nı hesapla = (14 +MF)/(14 -MF)
- MFI’ı hesapla = 100-(100/(1+(14 MF oranı)))
Şimdi bu hesaplama adımlarını bir örnek üzerinde görelim. Bir finansal enstrüman için aşağıdaki verilere sahip olduğumuzu varsayalım:
Gün | Yüksek | Düşük | Kapanış | Hacim |
---|---|---|---|---|
1 | 55 | 53 | 54 | 12000 |
2 | 56 | 54 | 55 | 10000 |
3 | 61 | 59 | 60 | 15000 |
4 | 67 | 64 | 65 | 20000 |
5 | 63 | 58 | 60 | 10000 |
6 | 58 | 52 | 55 | 5000 |
7 | 64 | 58 | 60 | 7000 |
8 | 52 | 47 | 50 | 7500 |
9 | 52 | 48 | 48 | 8000 |
10 | 50 | 48 | 49 | 5000 |
11 | 49 | 47 | 48 | 6000 |
12 | 48 | 47 | 47 | 7500 |
13 | 50 | 46 | 48 | 9000 |
14 | 52 | 45 | 47 | 10000 |
15 | 55 | 46 | 49 | 7000 |
16 | 53 | 45 | 47 | 7500 |
17 | 51 | 43 | 46 | 6000 |
18 | 50 | 42 | 44 | 5000 |
19 | 50 | 43 | 45 | 15000 |
Bu veri tablosuna dayanarak MFI göstergesini hesaplayalım:
Tipik fiyatı (Typical Price, TP) hesapla = (yüksek+düşük+kapanış)/3
Ham para akışını (Money Flow, MF) hesapla = hacim * TP
TP'nin hareketini belirle: yukarı veya aşağı.
(1 +MF)’leri hesapla = yukarı periyotların ham para akışları.
(1 -MF)’leri hesapla = aşağı periyotların ham para akışları.
(14 +MF)’i hesapla = 14 periyot için (1 +MF)’lerin toplamı.
(14 -MF)’i hesapla = 14 periyot için (1 -MF)’lerin toplamı.
(14 MF oranı)’nı hesapla = (14 +MF)/(14 -MF)
MFI’ı hesapla = 100-(100/(1+(14 MF oranı)))
Böylece MFI göstergesini manuel olarak hesapladık. Neyse ki, MetaTrader 5 platformuyla standart olarak gelen hazır bir gösterge bulunduğundan, MFI'ı manuel olarak hesaplamamıza gerek yoktur. Göstergenin arkasındaki konsepti anladığımıza göre, şimdi MetaTrader 5'te bulunan yerleşik MFI göstergesini kullanabiliriz. Tek yapmamız gereken mevcut göstergeler arasından onu seçmektir:
MetaTrader 5'i açın --> Ekle sekmesine tıklayın --> Göstergeler --> Hacim --> Money Flow Index
Gösterge seçildiğinde, aşağıdaki gösterge parametreleri penceresi açılacaktır:
1. Periyot sayısı.
2. Hacim türü (Tik veya Gerçek).
3. MFI çizgisinin rengi.
4. MFI çizgisinin stili.
5. MFI çizgisinin kalınlığı.
Gösterge için uygun parametreleri ayarladıktan sonra gösterge aşağıdaki gibi grafiğe eklenecektir:
MFI göstergesi stratejileri
Bu bölümde, MFI göstergesini ticarette nasıl kullanabileceğimizden bahsedeceğiz. Şimdi, kullanılabilecek bazı basit stratejileri ele alalım.
- Birinci strateji: MFI - OB ve OS:
Bu stratejiye göre, aşırı alış (OB) ve aşırı satış (OS) bölgelerini belirleyeceğiz. 20 seviyesi ve aşağısı OS bölgesi, 80 seviyesi ve yukarısı ise OB bölgesi olacaktır. Aşırı satış bölgesinde fiyatın yukarı yönlü hareket potansiyeli artarken, aşırı alış bölgesinde de tam tersine fiyatın aşağı yönlü hareket potansiyeli artar.
Yani bunu şu şekilde ifade edebiliriz:
MFI <= 20 --> OS
MFI >= 80 --> OB
- İkinci strateji: MFI - Yükseliş trendi - Alış:
Bu stratejiye göre, MFI'ın 50 seviyesine eşit veya aşağısında olmasını bekleyeceğiz - bu, alış sinyali olacaktır. Devamında, 70 seviyesine ulaşması da kârı al sinyali olacaktır. Bu stratejinin arkasındaki mantık, MFI'ın yükseliş trendi sırasında çoğu zaman 50 ila 70 seviyesi arasında hareket etmesidir.
Böylece,
MFI <= 50 --> Alış sinyali
MFI >= 70 --> Kârı al sinyali
- İkinci strateji: MFI - Düşüş trendi - Satış:
Bu strateji, bir önceki stratejinin (MFI - Yükseliş trendi - Alış) tersi olacaktır. Bu stratejiye göre, MFI'ın 50 seviyesine eşit veya yukarısında olmasını bekleyeceğiz - bu, satış sinyali olacaktır. Devamında, 30 seviyesine ulaşması da kârı al sinyali olacaktır. Bu stratejinin arkasındaki mantık ise MFI'ın düşüş trendi sırasında çoğu zaman 50 ila 30 seviyesi arasında hareket etmesidir.
Böylece,
MFI >=50 --> Satış sinyali
MFI <= 30 --> Kârı al sinyali
- Üçüncü strateji: MFI - Yükseliş trendi veya ayı türü diverjans:
Bu stratejide gösterge, yükseliş trendinin güçlü olup olmadığını doğrulayacaktır. Bu bilgiyi edinmek amacıyla, mevcut MFI ve önceki MFI değerlerini ve mevcut yüksek ve önceki yüksek değerlerini karşılaştıracağız. Bu karşılaştırmaya göre, gösterge ya trendi doğrulayacak ya da diverjansın varlığına işaret edecektir. Dolayısıyla, yükseliş trendi sırasında, mevcut MFI değeri önceki MFI değerinden daha yüksekse ve bununla birlikte mevcut yüksek değeri de önceki yüksek değerinden daha yüksekse, bu, yükseliş trendinin güçlü olduğu anlamına gelir, ancak mevcut MFI değeri önceki MFI değerinden daha düşükken mevcut yüksek değeri önceki yüksek değerinden daha yüksekse, bu da fiyat hareketinde ayı türü diverjans meydana geldiği anlamına gelir. Karşılaştırılacak değerlerin birbirine uzaklıklarını ayarlayarak stratejiyi optimize edebilirsiniz.
Böylece,
Mevcut MFI > Önceki MFI ve Mevcut yüksek > Önceki yüksek --> Güçlü yükseliş trendi
Mevcut MFI < Önceki MFI ve Mevcut yüksek > Önceki yüksek --> Ayı türü diverjans
- Üçüncü strateji: MFI - Düşüş trendi veya boğa türü diverjans:
Bu strateji bir önceki stratejinin (MFI - Yükseliş trendi veya ayı türü diverjans) tersidir: düşüş trendini doğrular ya da diverjansın varlığına işaret eder. Dolayısıyla, düşüş trendi sırasında, mevcut MFI değeri önceki MFI değerinden daha düşükse ve bununla birlikte mevcut düşük değeri de önceki düşük değerinden daha düşükse, bu, düşüş trendinin güçlü olduğu anlamına gelir, ancak mevcut MFI değeri önceki MFI değerinden daha yüksekken mevcut düşük değeri önceki düşük değerinden daha düşükse, bu da fiyat hareketinde boğa türü diverjans meydana geldiği anlamına gelir.
Yani daha basit ifadeyle,
Mevcut MFI < Önceki MFI ve Mevcut düşük < Önceki düşük --> Güçlü düşüş trendi
Mevcut MFI > Önceki MFI ve Mevcut düşük < Önceki düşük --> Boğa türü diverjans
MFI göstergesine dayalı ticaret sisteminin planı
Bu bölümde, ele aldığımız stratejiler için ticaret sistemini oluştururken bize yardımcı olması adına ilgili her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırlayacağız. Ama öncesinde, temel olması adına basit bir ticaret sisteminin planını tasarlayalım. Bu basit sistem, mevcut MFI değerini grafik üzerinde yorum olarak görüntüleyecektir. Bu amaçla bilgisayar her tikte MFI değerini kontrol etmeli ve sonrasında da bu değeri grafikte yorum olarak görüntülemelidir. Bu ticaret sisteminin planı aşağıda gösterilmektedir:
Şimdi stratejilerin planının hazırlayalım.
- Birinci strateji: MFI - OB ve OS:
Bu stratejiye göre, ticaret sistemi her tikte MFI değerini kontrol etmeli ve belirli seviyelerle (20 ve 80) 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. MFI değeri 20 seviyesine eşit veya daha düşükse: iki satır halinde olacak şekilde, üst satırda aşırı satış sinyali yorumu ve alt satırda mevcut MFI değeri yorumu yazılmalıdır. MFI değeri 80 seviyesine eşit veya daha yüksekse: iki satır halinde olacak şekilde, üst satırda aşırı alış sinyali yorumu ve alt satırda mevcut MFI değeri yorumu yazılmalıdır. MFI 20'nin üzerinde ve 80'in altındaysa, yalnızca mevcut MFI değeri ifade edilmelidir. Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
- İkinci strateji: MFI - Yükseliş trendi - Alış:
Bu stratejiye göre, ticaret sistemi her tikte MFI değerini kontrol etmeli ve belirli seviyelerle (50 ve 70) karşılaştırmalıdır. MFI değeri 50 seviyesine eşit veya daha düşükse, alış sinyali yorumu görüntülenmelidir. MFI değeri 70 seviyesine eşit veya daha yüksekse, kârı al sinyali yorumu görüntülenmelidir. Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
- İkinci strateji: MFI - Düşüş trendi - Satış:
Bu stratejiye göre, ticaret sistemi her tikte MFI değerini kontrol etmeli ve belirli seviyelerle (50 ve 30) karşılaştırmalıdır. MFI değeri 50 seviyesine eşit veya daha yüksekse, satış sinyali yorumu görüntülenmelidir. MFI değeri 30 seviyesine eşit veya daha düşükse, kârı al sinyali yorumu görüntülenmelidir. Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
- Üçüncü strateji: MFI - Yükseliş trendi veya ayı türü diverjans:
Bu stratejiye göre, ticaret sistemi her tikte dört değeri (mevcut MFI, önceki MFI, mevcut yüksek ve önceki yüksek) kontrol etmeli ve koşullarına uygun olarak sinyali grafik üzerinde görüntülemelidir.
Mevcut MFI > Önceki MFI ve Mevcut yüksek > Önceki yüksek --> Güçlü yükseliş trendi
Mevcut MFI < Önceki MFI ve Mevcut yüksek > Önceki yüksek --> Ayı türü diverjans
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
- Üçüncü strateji: MFI - Düşüş trendi veya boğa türü diverjans:
Bu strateji bir önceki stratejinin tersidir. Bu stratejiye göre, ticaret sistemi her tikte yine aynı dört değeri (mevcut MFI, önceki MFI, mevcut yüksek ve önceki yüksek) kontrol etmeli ve koşullarına uygun olarak ilgili sinyali grafik üzerinde görüntülemelidir.
Mevcut MFI < Önceki MFI ve Mevcut düşük < Önceki düşük --> Güçlü düşüş trendi
Mevcut MFI > Önceki MFI ve Mevcut düşük < Önceki düşük --> Boğa türü diverjans
Aşağıda, bu strateji için bir program geliştirmemize yardımcı olacak adım adım plan yer almaktadır:
MFI göstergesine dayalı ticaret sistemi
Şimdi en ilgi çekici bölüme geçiyoruz, 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, mevcut MFI değerini grafik üzerinde yorum olarak görüntüleyecek basit bir program oluşturarak başlayalım.
- Değerlerin kesirli olarak ifade edilmesi için double fonksiyonunu kullanarak MFI için bir dizi oluşturalım.
double MFIArray[];
- ArraySetAsSeries fonksiyonunu kullanarak MFI dizisini mevcut veriden başlayarak sıralayalım - başarılı olması durumunda true, aksi takdirde false geri döner (bool türü). Parametreleri şunlardır: array[] ve bayrak.
ArraySetAsSeries(MFIArray,true);
- MFIDef için int türü değişken oluşturduktan sonra iMFI fonksiyonunu kullanarak MFI'ı tanımlayalım. iMFI fonksiyonu MFI göstergesinin tanıtıcısını geri döndürür. Parametreleri şunlardır: sembol, periyot, MA periyodu ve uygulanan hacim.
int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK);
- CopyBuffer fonksiyonunu kullanarak MFIArray dizisini MFIDef değerleriyle dolduralım.
CopyBuffer(MFIDef,0,0,3,MFIArray);
- MFIValue 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 MFI değerini hesaplayalım.
double MFIValue=NormalizeDouble(MFIArray[0],5);
- Comment fonksiyonunu kullanarak mevcut MFI değerini grafikte yorum olarak görüntüleyelim.
Comment("MFI Value is: ",MFIValue);
Mevcut MFI değerini grafikte yorum olarak görüntüleyen programın kodu aşağıdadır:
//+------------------------------------------------------------------+ //| Simple MFI.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() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //creating a comment with MFI value Comment("MFI Value is: ",MFIValue); } //+------------------------------------------------------------------+
Uzman Danışmanı oluşturduktan sonra onu Kılavuz penceresinden bulabiliriz:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:
Böylece, gösterge mevcut MFI değerini grafik üzerinde yorum olarak görüntüleyecektir:
Programımızdaki değerlerin MetaTrader 5'teki yerleşik MFI göstergesi tarafından görüntülenen değerlerle aynı olup olmadığını da kontrol edebiliriz:
- Birinci strateji: MFI - OB ve OS:
Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:
//+------------------------------------------------------------------+ //| MFI - OB&OS.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() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //Conditions of OS&OS //OS if(MFIValue<=20) { Comment("Oversold","\n","MFI value is : ",MFIValue); } //OB if(MFIValue>=80) { Comment("Overbought","\n","MFI value is : ",MFIValue); } //no signal if(MFIValue>20 && MFIValue<80 ) { Comment("MFI value is : ",MFIValue); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Aşırı alış ve aşırı satış koşulları://Conditions of OS&OS //OS if(MFIValue<=20) { Comment("Oversold","\n","MFI value is : ",MFIValue); } //OB if(MFIValue>=80) { Comment("Overbought","\n","MFI value is : ",MFIValue); } //no signal if(MFIValue>20 && MFIValue<80 ) { Comment("MFI value is : ",MFIValue); }
Derledikten sonra, programın dosyasını Kılavuz penceresinden bulabiliriz:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:
Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları görüntüleyecektir:
Aşırı satış sinyali:
Aşırı alış sinyali:
Sinyal yok:
- İkinci strateji: MFI - Yükseliş trendi - Alış:
Bu strateji için ticaret sistemi kodu aşağıdaki gibi olacaktır:
//+------------------------------------------------------------------+ //| MFI - Uptrend - Buy.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() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //Buy signal if(MFIValue<=50) { Comment("Buy signal"); } //TP if(MFIValue>=70) { Comment("Take profit"); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Sinyal koşulları:
Alış sinyali:
//Buy signal if(MFIValue<=50) { Comment("Buy signal"); }
Kârı al sinyali:
//TP if(MFIValue>=70) { Comment("Take profit"); }
Derlendikten sonra, ticaret sisteminin dosyası Kılavuz penceresinde görünecektir:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:
Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları görüntüleyecektir:
Alış sinyali:
Kârı al sinyali:
- İkinci strateji: MFI - Düşüş trendi - Satış:
Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:
//+------------------------------------------------------------------+ //| MFI - Downtrend - Short.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() { //Create an array for MFI double MFIArray[]; //sorting the array from the current data ArraySetAsSeries(MFIArray,true); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current MFI value double MFIValue=NormalizeDouble(MFIArray[0],5); //Sell signal if(MFIValue>=50) { Comment("Sell signal"); } //TP if(MFIValue<=30) { Comment("Take profit"); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Sinyal koşulları:
Satış sinyali:
//Sell signal if(MFIValue>=50) { Comment("Sell signal"); }
Kârı al sinyali:
//TP if(MFIValue<=30) { Comment("Take profit"); }
Derlendikten sonra, ticaret sisteminin dosyası Kılavuz penceresinde görünecektir:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:
Devamında program onun için belirlediğimiz koşullara uygun olarak yorumları gösterecektir:
Satış sinyali:
Kârı al sinyali:
- Üçüncü strateji: MFI - Yükseliş trendi veya ayı türü diverjans:
Bu stratejiye dayalı Uzman Danışmanın tam kodu aşağıda gösterilmektedir:
//+------------------------------------------------------------------+ //| MFI - Uptrend 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() { //Create arrays for MFI and price double MFIArray[]; MqlRates PriceArray[]; //sorting arrays from the current data ArraySetAsSeries(MFIArray,true); int Data=CopyRates(_Symbol,_Period,0,3,PriceArray); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the MFI array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current and previous MFI values double MFICurrentValue=NormalizeDouble(MFIArray[0],5); double MFIPrevValue=NormalizeDouble(MFIArray[1],5); //calculating current and previous highs double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5); double PrevHighValue=NormalizeDouble(PriceArray[1].high,5); //conditions of strong move or divergence //strong up if(MFICurrentValue>MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Strong up move"); } //bearish divergence if(MFICurrentValue<MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Bearish divergence"); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Fiyat, hacim ve spread bilgilerini depolayan MqlRates fonksiyonunu kullanarak MFI ve fiyatlar için diziler oluşturuyoruz:
double MFIArray[]; MqlRates PriceArray[];
Dizileri sıralıyoruz:
MFI için, daha önce olduğu gibi ArraySetAsSeries fonksiyonunu kullanıyoruz.
Fiyatlar için ise MqlRates'in geçmiş verilerini almak için CopyRates fonksiyonunu kullanıyoruz. Parametreleri şunlardır: sembol adı, zaman dilimi, başlangıç zamanı, bitiş zamanı ve veri dizisi.
ArraySetAsSeries(MFIArray,true); int Data=CopyRates(_Symbol,_Period,0,3,PriceArray);
Mevcut MFI değerini ve önceki MFI değerini hesaplıyoruz:
double MFICurrentValue=NormalizeDouble(MFIArray[0],5); double MFIPrevValue=NormalizeDouble(MFIArray[1],5);
Mevcut yüksek değerini ve önceki yüksek değerini hesaplıyoruz:
double CurrentHighValue=NormalizeDouble(PriceArray[2].high,5); double PrevHighValue=NormalizeDouble(PriceArray[1].high,5);
“MFI - Yükseliş trendi veya ayı türü diverjans” stratejisinin koşulları:
Güçlü yükseliş trendi:
if(MFICurrentValue>MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Strong up move"); }
Ayı türü diverjans:
if(MFICurrentValue<MFIPrevValue&&CurrentHighValue>PrevHighValue) { Comment("Bearish divergence"); }
Uzman Danışmanın kodunu derliyoruz, böylece onu MetaTrader 5 terminalinde Kılavuz penceresinde bulabiliriz:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:
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:
Önceki verilerle Veri Penceresi ve güçlü yükseliş trendi sinyali:
Mevcut verilerle Veri Penceresi ve ayı türü diverjans sinyali:
Önceki verilerle Veri Penceresi ve ayı türü diverjans sinyali:
- Üçüncü strateji: MFI - Düşüş trendi veya boğa türü diverjans:
Aşağıda bu stratejinin kodu yer almaktadır.
//+------------------------------------------------------------------+ //| MFI - Downtrend 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() { //Create arrays for MFI and price double MFIArray[]; MqlRates PriceArray[]; //sorting arrays from the current data ArraySetAsSeries(MFIArray,true); int Data=CopyRates(_Symbol,_Period,0,3,PriceArray); //defining MFI int MFIDef=iMFI(_Symbol,_Period,24,VOLUME_TICK); //filling the array CopyBuffer(MFIDef,0,0,3,MFIArray); //calculating current and previous MFI values double MFICurrentValue=NormalizeDouble(MFIArray[0],5); double MFIPrevValue=NormalizeDouble(MFIArray[1],5); //calculating current and previous highs double CurrentLowValue=NormalizeDouble(PriceArray[2].low,5); double PrevLowValue=NormalizeDouble(PriceArray[1].low,5); //conditions of strong move or divergence //strong down if(MFICurrentValue<MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Strong down move"); } //bullish divergence if(MFICurrentValue>MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Bullish divergence"); } } //+------------------------------------------------------------------+
Bu koddaki farklılıklar şunlardır:
Bu stratejiye dayalı olarak üretilen sinyallerin koşulları:
Güçlü düşüş trendi:
if(MFICurrentValue<MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Strong down move"); }
Boğa türü diverjans:
if(MFICurrentValue>MFIPrevValue&&CurrentLowValue<PrevLowValue) { Comment("Bullish divergence"); }
Uzman Danışmanın kodunu derliyoruz, böylece onu MetaTrader 5 terminalinde Kılavuz penceresinde bulabiliriz:
Programa çift tıklayarak veya onu grafiğe sürükleyerek başlatıyoruz. Devamında, aşağıdaki pencere açılacaktır:
Tamama tıkladıktan sonra, program aşağıdaki gibi grafiğe eklenecektir:
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:
Önceki verilerle Veri Penceresi ve güçlü düşüş trendi sinyali:
Mevcut verilerle Veri Penceresi ve boğa türü diverjans sinyali:
Önceki verilerle Veri Penceresi ve boğa türü diverjans sinyali:
Sonuç
Bu makalede Money Flow Index (MFI) göstergesi hakkında konuştuk. Ticaret sonuçlarımızı iyileştirebilecek yeni bilgileri keşfettik: Hacmin ne olduğunu, ticarette neden çok önemli olduğunu, MFI göstergesinin ne olduğunu, neyi ölçtüğünü, manuel olarak nasıl hesaplandığını ve hazır yerleşik MFI göstergesinin nasıl kullanılacağını öğrendik. MFI göstergesinin temellerini öğrendikten ve arkasındaki konsepti kavradıktan sonra, bazı basit stratejileri ele aldık. Bu stratejileri kısaca hatırlayalım. Birinci strateji, aşırı alış ve aşırı satış bölgelerini belirten stratejiydi. İkinci strateji, yükseliş trendi sırasında alış sinyali / kârı al sinyali ve düşüş trendi sırasında satış sinyali / karı al sinyali sağlayan stratejiydi. Ve üçüncü strateji de yükseliş trendinin güçlü olup olmadığını / ayı türü diverjans meydana gelip gelmediğini ve düşüş trendinin güçlü olup olmadığını / boğa türü diverjans meydana gelip gelmediğini ifade eden stratejiydi.
Devamında, ele aldığımız stratejiler için ticaret sistemini oluştururken bize yardımcı olması adına ilgili her strateji için olmak üzere adım adım ifadeler içeren bir plan hazırladık. Son olarak da hazırladığımız bu plan çerçevesinde, MetaTrader 5 işlem platformunda kullanılmak üzere, ele aldığımız stratejilere dayalı olarak MQL5 dili aracılığıyla bir ticaret sistemi oluşturduk. Oluşturduğumuz bu ticaret sistemi, insan müdahalesi olmadan otomatik ve hassas bir şekilde çalışacak, ticaret süreçlerini verimli hale getirecek ve bu sayede ticaretimizi kolaylaştırarak zamandan tasarruf etmemize olanak sağlayacaktır.
Umarım bu makale boyunca öğrendiklerinizi kendiniz de uygulamaya ve pratik yapmaya çalışmışsınızdır. Bu makalenin, ister mevcut konuyla ilgili ister ilgili herhangi bir konuda olsun, ticaret hakkında size yeni fikirler sağlayacağına inanıyorum. Daha önce de söylediğim gibi, herhangi bir stratejiyi bir gerçek hesapta kullanmadan önce onu tam anlamıyla test ettiğinizden emin olmalısınız. Bu makalenin temel amacı, yeni başlayanlara basit ticaret stratejilerini kendi başlarına nasıl kodlayacaklarını öğretmek amacıyla bilgi sağlamaktır. Dolayısıyla, bu makalede ele aldığımız tüm stratejilerin optimize edilmesi, üzerinde ek ayarlamalar yapılması gerekebilir. Ya da onların başka bir teknik araçla kombine edilmesi daha iyi sonuçlar verebilir. Genel olarak, farklı teknik araçların birbirleriyle kombine edilmesi, piyasayı farklı bakış açılarından değerlendirmeye olanak tanıdığından, mümkün olan en uygun kararı verebilmek adına çok etkili bir yaklaşımdır. Teknik araçların kombinasyonuyla basitten karmaşığa kadar her türde ticaret sistemleri elde edilebileceğinden kombinasyonlara dayalı ticaret sistemleri de oluşturulabilir. Bu, ticaret hedeflerine ulaşırken engel oluşturabilecek öznellik sorununun da üstesinden gelerek tam olarak ihtiyaç duyulana ulaşılmasını sağlayacaktır. Programlama, ihtiyacımız olan şeyleri kolay, hassas ve sorunsuz bir şekilde elde etmemize yardımcı olan harika bir araçtır. Diğer birçok kullanışlı özelliğinin yanı sıra, bizi her seferinde aynı görevleri yapmaktan da kurtarır.
Bu makaleyi beğendiyseniz, yararlı bulduysanız ve buna benzer daha fazla makale okumak istiyorsanız, en popüler teknik göstergelere dayalı ticaret sistemlerinin nasıl geliştirileceğini öğrenme konulu bu serideki diğer makaleleri de okuyabilirsiniz. Umarım, her biri ticaret sonuçlarınızı geliştirmenize yardımcı olur. Bir sonraki makalede görüşmek dileğiyle.
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/11037
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz