
Stochastic Oscillator göstergesine dayalı bir ticaret sistemi nasıl geliştirilir?
Giriş
Teknik analizle ticaret yapmanın en güzel yanlarından biri, çok sayıda araca sahip olmamız ve onları bize yarar sağlayacak şekilde tek tek veya kombine ederek kullanabilmemizdir. Ek olarak, ticaret sonuçlarımızı ve performansımızı artırmada bize çok fayda sağlayabilecek harika bir aracımız daha vardır. Bu araç, koşullarımıza uygun şekilde istediğimiz eylemleri otomatik olarak gerçekleştirmesi için bilgisayara talimatlar verdiğimiz ve böylece programlar oluşturmamıza olanak sağlayan programlamadır.
Bu makale, teknik analizle ticaret ve kârlı ticaret stratejilerinin programlanması bağlamında nelerin yararlı olabileceğini öğrenmeye yönelik başka bir adımdır. Bu amaçla, bu makalede de, ticaretimizde bize avantaj sağlayabilecek yeni bir göstergeyi inceleyeceğiz, bu, en popüler teknik analiz araçlarından biri olan Stochastic Oscillator göstergesidir. Diğer makalelerimi okuduysanız, tüm detayları ve nasıl çalıştığını anlamak adına mümkün olduğunca konuların köklerine inmeyi sevdiğimi biliyorsunuzdur. Ve bu sefer de yine aynı çalışma tekniğiyle konuları irdelemeye devam edeceğiz. Bu makalede şu konuları ele alacağız:
- Stochastic Oscillator göstergesinin tanımı
- Stochastic Oscillator göstergesi stratejileri
- Stochastic Oscillator göstergesine dayalı ticaret sisteminin planı
- Stochastic Oscillator göstergesine dayalı ticaret sistemi
- Sonuç
"Stochastic Oscillator göstergesinin tanımı" bölümünde, Stochastic Oscillator göstergesini ayrıntılı olarak tanıyacağız, ne olduğunu ve neyi ölçtüğünü öğreneceğiz. Ardından, "Stochastic Oscillator göstergesi stratejileri" bölümünde, kullanabileceğimiz bazı basit stratejileri ele alacağız. Sonrasında, “Stochastic Oscillator göstergesine dayalı ticaret sisteminin planı” bölümünde, ele aldığımız basit stratejileri MQL5'te kodlamamıza yardımcı olacak bir plan hazırlayacağız. Ve son olarak da bu plan çerçevesinde bir ticaret sistemi yazacağız.
Bu makalede de, MetaTrader 5 işlem platformunu ve platformda yerleşik olan MetaQuotes Language Düzenleyicisini kullanacağız. MetaTrader 5'i şu linkten indirebilirsiniz: https://www.metatrader5.com/en/download
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 öğrenme yolculuğumuza bir başka bilgi bloğu daha eklemeye başlayalım.
Stochastic Oscillator göstergesinin tanımı
Bu bölümde, en popüler teknik göstergelerden biri olan Stochastic Oscillator göstergesi hakkında daha fazla bilgi edineceğiz. Gösterge, George Lane tarafından geliştirilmiştir ve Perry J. Kaufman'ın "New Trading Systems and Methods" adlı kitabında bahsedilmiştir. Ancak bu konuda başka görüşler de mevcuttur, bunlardan biri Stochastic Oscillator göstergesinin kimin yarattığının kesin olarak belli olmadığıdır, bu Charles D. Kirkpatrick ve Julie R. Dahlquist tarafından yazılmış olan "Technical Analysis, The Complete Resource for Financial Market Technicians" adlı kitapta belirtilmiştir; diğer görüş ise John J. Murphy tarafından yazılmış olan "Technical Analysis of The Financial Markets" adlı kitapta belirtildiği üzere göstergenin George Lane tarafından popüler hale getirildiğidir.
Stochastic Oscillator göstergesinin arkasındaki ana fikir şöyledir: yükseliş trendi sırasında, mevcut çubuğun kapanış fiyatının periyodun fiyat aralığının üst kısmına daha yakın olma eğiliminde olduğu ve tersi olarak da, düşüş trendi sırasında mevcut çubuğun kapanış fiyatının periyodun fiyat aralığının alt kısmına daha yakın olma eğiliminde olduğu gözlemlenmiştir. Yani gösterge, mevcut kapanış fiyatı ile belirli bir periyodun en yüksek ve en düşük fiyatları arasındaki ilişkiyi ölçer.
Stochastic Oscillator göstergesi iki çizgiden oluşur ve bu iki çizgi sıfır ile 100 arasında salınır:
- %K çizgisi hızlı olandır.
- %D çizgisi ise yavaş olandır, yumuşatılmıştır.
Göstergenin birden fazla versiyonu mevcuttur. En popüleri şu ikisinin tek bir göstergede (Stochastic Oscillator) birleşmiş versiyonudur:
- Hızlı Stochastic Oscillator.
- Yavaş Stochastic Oscillator.
Bu ikisi arasındaki fark, hesaplanma şekilleridir.
Stochastic Oscillator göstergesi aşağıdaki adımlarla hesaplanır:
- Göstergenin hesaplanacağı periyodu belirle.
- Belirlenen periyodun en yüksek fiyatını al.
- Belirlenen periyodun en düşük fiyatını al.
- Hızlı Stochastic Oscillator’ın %K değerini al = 100*((mevcut kapanış-periyodun en düşük fiyatı)/(periyodun en yüksek fiyatı-periyodun en düşük fiyatı)).
- Hızlı Stochastic Oscillator’ın %D değerini al = Hızlı Stochastic Oscillator’ın %K değerinin 3 periyotluk MA’sı
- Yavaş Stochastic Oscillator’ın %K değerini al = Hızlı Stochastic Oscillator’ın %D değeri
- Yavaş Stochastic Oscillator’ın %D değerini al = Yavaş Stochastic Oscillator’ın %K değerinin (yani, hızlı Stochastic Oscillator’ın %D değerinin) 3 periyotluk MA’sı
Şimdi, Stochastic Oscillator’ı elde etmek üzere bu hesaplamaların nasıl uygulanacağına dair bir örnek görelim. Şu verilere sahip olduğumuzu varsayalım:
Gün | Kapanış | Yüksek | Düşük |
---|---|---|---|
1 | 100 | 110 | 90 |
2 | 130 | 140 | 120 |
3 | 140 | 160 | 120 |
4 | 130 | 150 | 110 |
5 | 120 | 140 | 100 |
6 | 140 | 150 | 130 |
7 | 160 | 170 | 150 |
8 | 170 | 180 | 160 |
9 | 155 | 170 | 150 |
10 | 140 | 170 | 130 |
11 | 160 | 180 | 155 |
12 | 180 | 190 | 175 |
13 | 190 | 220 | 190 |
14 | 200 | 230 | 200 |
15 | 210 | 215 | 205 |
16 | 200 | 200 | 190 |
17 | 190 | 195 | 180 |
18 | 185 | 105 | 180 |
19 | 195 | 210 | 185 |
20 | 200 | 220 | 190 |
Stochastic Oscillator göstergesini hesaplamak adına yukarıda bahsettiğimiz adımları takip edeceğiz, dolayısıyla:
- Hesaplama periyodunu belirliyoruz, 14 olacak. Yani göstergeyi hesaplamaya başlamak için 14 periyoda ihtiyacımız var.
- Son 14 periyodun en yüksek fiyatını belirleyelim, verilere göre bu fiyat 230’dur; aşağıdaki görüntüden verileri tablo şeklinde görebilirsiniz:
- Son 14 periyodun en düşük fiyatını belirleyelim, verilere göre bu fiyat 90’dır; aşağıdaki görüntüden verileri tablo şeklinde görebilirsiniz:
- Hızlı Stochastic Oscillator’ın %K değerini alalım = 100*((mevcut kapanış-periyodun en düşük fiyatı)/(periyodun en yüksek fiyatı-periyodun en düşük fiyatı)).
- Hızlı Stochastic Oscillator’ın %D değerini alalım = Hızlı Stochastic Oscillator’ın %K değerinin 3 periyotluk MA’sı
- Aşağıdaki görüntüden verileri tablo şeklinde görebilirsiniz:
- Yavaş Stochastic Oscillator’ın %K değerini alalım = Hızlı Stochastic Oscillator’ın %D değeri
- Yavaş Stochastic Oscillator’ın %D değerini alalım = Yavaş Stochastic Oscillator’ın %K değerinin (yani, hızlı Stochastic Oscillator’ın %D değerinin) 3 periyotluk MA’sı
- Aşağıdaki görüntüden verileri tablo şeklinde görebilirsiniz:
Bu adımlar aracılığıyla Stochastic Oscillator göstergesini manuel olarak hesapladık. Neyse ki, MetaTrader 5 işlem terminalinde kullanıma hazır yerleşik bir göstergeye sahip olduğumuz için onu her seferinde manuel olarak hesaplamamıza gerek yok. Aşağıdaki görüntüde gösterildiği gibi, MetaTrader 5'te Ekle sekmesindeki Göstergeler > Osilatörler listesinden Stochastic Oscillator göstergesini kolayca seçebilirsiniz:
Stochastic Oscillator seçildikten sonra aşağıdaki pencere görüntülenecektir:
Göstergenin parametreleri:
- Periyodu belirler
- Hızlı Stochastic Oscillator’ın %D değeri için hareketli ortalama periyodunu belirler
- Yavaş Stochastic Oscillator’ın %D değeri için hareketli ortalama periyodunu belirler
- İlişkiyi ölçmede kullanılacak fiyat aralığı türünü belirler
- Hesaplamada kullanılacak hareketli ortalama türünü belirler
- %K çizgisinin rengini, stilini ve kalınlığını belirler
- %D çizgisinin rengini, stilini ve kalınlığını belirler
Tercihlerinize göre parametreleri belirledikten sonra, gösterge grafiğe eklenecek ve aşağıdaki gibi görünecektir:
Yukarıdaki görüntüye bakarsak, alt pencerede sıfır ile 100 arasında salınan ve 2 çizgiye (%K ve %D) sahip olan Stochastic Oscillator göstergesini görebiliriz:
- Stoch(14, 3,3): göstergenin adını ve seçilen parametreleri temsil eder: Periyot 14, hızlı Stochastic Oscillator’ın %D değeri için hareketli ortalama periyodu 3 ve yavaş Stochastic Oscillator’ın %D değeri için hareketli ortalama periyodu 3.
- 36.85: %K değerini temsil eder.
- 38.28: %D değerini temsil eder.
Hesaplamasına dayalı olarak, Stochastic Oscillator göstergesi çoğu zaman piyasa yönünde hareket edecektir, çünkü daha önce de belirttiğimiz gibi fiyatlar, piyasa hareketine bağlı olarak periyodun üst veya alt aralığına yakın şekilde kapanma eğilimindedir.
Yükseliş trendi sırasında:
Yükseliş trendi, alıcıların/boğaların kontrolünün olduğu ve fiyatların yukarı yönlü olarak hareket ettiği bir piyasa yönüdür. Bu piyasa yönünde, fiyatlar daha yüksek pikler ve daha yüksek çukurlar oluşturur. Bu piyasayı boğa piyasası olarak da adlandırabiliriz.
Yükseliş trendi sırasında çoğu zaman, fiyatların periyodun fiyat aralığının üst kısmına yakın şekilde kapanma eğiliminde olduğunu ve göstergenin de 50 ile 100 seviyesi arasında salınma eğiliminde olduğunu görebiliriz. Bu durumun bir örneği aşağıdaki görüntüde gösterilmektedir:
Düşüş trendi sırasında:
Düşüş trendi, satıcıların/ayıların kontrolünün olduğu ve fiyatların aşağı yönlü olarak hareket ettiği bir piyasa yönüdür. Bu piyasa yönünde, fiyatlar daha düşük dipler ve daha düşük çukurlar oluşturur. Bu piyasayı ayı piyasası olarak da adlandırabiliriz.
Düşüş trendi sırasında çoğu zaman, fiyatların periyodun fiyat aralığının alt kısmına yakın şekilde kapanma eğiliminde olduğunu ve göstergenin de 50 ile 0 seviyesi arasında salınma eğiliminde olduğunu görebiliriz. Bu durumun bir örneği aşağıdaki görüntüde gösterilmektedir:
Yatay hareket sırasında:
Yatay hareket, yukarı veya aşağı yönü net olmayan fiyat hareketidir. Alıcılar/boğalar ve satıcılar/ayılar arasında bir denge olarak düşünülebilir. Bu, yükseliş trendi veya düşüş trendi ile ilişkilendirilemeyen herhangi bir harekettir.
Yatay hareket sırasında çoğu zaman, fiyatların periyodun fiyat aralığının orta kısmına yakın şekilde kapanma eğiliminde olduğunu ve göstergenin de 20 ile 80 seviyesi arasında salınma eğiliminde olduğunu görebiliriz. Bu durumun bir örneği aşağıdaki görüntüde gösterilmektedir:
Artık Stochastic Oscillator göstergenin farklı piyasa yönlerinde nasıl hareket edebileceğini biliyoruz. Şimdi ise bunu lehimize nasıl kullanabileceğimizi öğrenmemiz gerekiyor. İşte bunu sıradaki konu aracılığıyla öğreneceğiz. Hadi devam edelim.
Stochastic Oscillator göstergesi stratejileri
Bu bölümde basit stratejilerle Stochastic Oscillator göstergesini nasıl kullanabileceğimizden bahsedeceğiz. Gösterge, piyasa yönüne göre sinyal almak için kullanılabilir, bu amaçla yükseliş trendi stratejisi, düşüş trendi stratejisi ve yatay hareket stratejisi düşünebiliriz.
- Birinci strateji: Yükseliş trendi stratejisi
Bu stratejiye dayalı olarak, %K ve %D çizgilerinin konumları kontrol edilecek: 50 seviyesinin altında olmalılar. Eğer öyleyse, devamında %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazladığında alış sinyali üretilecek. Kârı almak için fiyat hareketi (örneğin daha düşük bir dip) gibi başka bir etkili araç kullanılabilir.
%K ve %D < 50 --> %K > %D = Alış sinyali- İkinci strateji: Düşüş trendi stratejisi
Bu stratejiye dayalı olarak, %K ve %D çizgilerinin konumları kontrol edilecek: 50 seviyesinin üzerinde olmalılar. Eğer öyleyse, devamında %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazladığında satış sinyali üretilecek. Kârı almak için fiyat hareketi (örneğin daha yüksek bir pik) gibi başka bir etkili araç kullanılabilir.
%K ve %D > 50 --> %K < %D = Satış sinyali- Üçüncü strateji: Yatay hareket stratejisi
- Alış sinyali
Bu stratejiye dayalı olarak, %K ve %D çizgilerinin konumları kontrol edilecek: 20 seviyesinin altında olmalılar. Eğer öyleyse, devamında %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazladığında alış sinyali üretilecek. %K ve %D çizgisi 80'in üzerindeyken, %K çizgisi %D çizgisinin yukarıdan aşağıya doğru çaprazladığında da kârı al sinyali üretilecek.
%K ve %D < 20 --> %K > %D = Alış sinyali%K ve %D > 80 --> %K < %D = Kârı al sinyali
- Satış sinyali
Bu stratejiye dayalı olarak, %K ve %D çizgilerinin konumları kontrol edilecek: 80 seviyesinin üzerinde olmalılar. Eğer öyleyse, devamında %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazladığında satış sinyali üretilecek. %K ve %D çizgisi 20'nin altındayken, %K çizgisi %D çizgisinin aşağıdan yukarıya doğru çaprazladığında da kârı al sinyali üretilecek.
%K ve %D > 80 --> %K < %D = Satış sinyali
%K ve %D < 20 --> %K > %D = Kârı al sinyali
Stochastic Oscillator için kullanılabilecek basitten karmaşığa birçok stratejinin mevcut olduğunu belirtmek istiyorum. Ayrıca gösterge tek başına kullanılabileceği gibi, daha iyi sonuçlar verebilecek şekilde başka bir araçla da birleştirilebilir. Ancak biz burada Stochastic Oscillator’ın nasıl kullanılabileceğini anlamak adına sadece basit stratejilerden bahsediyoruz.
Stochastic Oscillator göstergesine dayalı ticaret sisteminin planı
Bu bölümde, yukarıda ele aldığımız stratejilere dayalı olarak bir ticaret sistemi oluşturmamıza yardımcı olacak bir plan hazırlayacağız. Bu plan tüm adımları gösterecek ve ortaya çıkacak programın tam olarak ne yapması gerektiğine dair bir kılavuz olarak hizmet edecektir.
- Birinci strateji: Yükseliş trendi stratejisi
%K ve %D < 50 --> %K > %D = Alış sinyali
Öncelikle program %K ve %D çizgilerinin konumunu kontrol edecek ve onların 50 seviyesinin altında olup olmadığını belirleyecek. Eğer 50 seviyesinin altındalarsa, %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazlayana kadar program hiçbir şey yapmadan bekleyecek. %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazladığında da alış sinyali üretecek. Eğer %K ve %D çizgileri 50 seviyesine eşit veya üzerindeyse, program hiçbir şey yapmayacak.
Aşağıdaki görüntü bu stratejinin planını göstermektedir:
- İkinci strateji: Düşüş trendi stratejisi
%K ve %D > 50 --> %K < %D = Satış sinyali
Öncelikle program %K ve %D çizgilerinin konumunu kontrol edecek ve onların 50 seviyesinin üzerinde olup olmadığını belirleyecek. Eğer 50 seviyesinin üzerindelerse, %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazlayana kadar program hiçbir şey yapmadan bekleyecek. %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazladığında da satış sinyali üretecek. Eğer %K ve %D çizgileri 50 seviyesine eşit veya altındaysa, program hiçbir şey yapmayacak.
Aşağıdaki görüntü bu stratejinin planını göstermektedir:
- Üçüncü strateji: Yatay hareket stratejisi
Alış sinyali
%K ve %D < 20 --> %K > %D = Alış sinyali
%K ve %D > 80 --> %K < %D = Kârı al sinyali
Öncelikle program %K ve %D çizgilerinin konumunu kontrol edecek ve onların 20 seviyesinin altında olup olmadığını belirleyecek. Eğer 20 seviyesinin altındalarsa, %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazlayana kadar program hiçbir şey yapmadan bekleyecek. %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazladığında da alış sinyali üretecek. Eğer %K ve %D çizgileri 20 seviyesine eşit veya üzerindeyse, program hiçbir şey yapmayacak. Daha sonra program %K ve %D çizgilerinin konumunu yine kontrol ederek onların 80 seviyesinin üzerinde olup olmadığını belirleyecek. Eğer 80 seviyesinin üzerindelerse, %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazlayana kadar program hiçbir şey yapmadan bekleyecek. %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazladığında da kârı al sinyali üretecek. Alış sinyali sonrası %K ve %D çizgileri 80 seviyesine eşit veya altında olduğu sürece, program hiçbir şey yapmayacak.
Aşağıdaki görüntü bu stratejinin alış için planını göstermektedir:
Satış sinyali
%K ve %D > 80 --> %K < %D = Satış sinyali
%K ve %D < 20 --> %K > %D = Kârı al sinyali
Öncelikle program %K ve %D çizgilerinin konumunu kontrol edecek ve onların 80 seviyesinin üzerinde olup olmadığını belirleyecek. Eğer 80 seviyesinin üzerindelerse, %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazlayana kadar program hiçbir şey yapmadan bekleyecek. %K çizgisi %D çizgisini yukarıdan aşağıya doğru çaprazladığında da satış sinyali üretecek. Eğer %K ve %D çizgileri 80 seviyesine eşit veya altındaysa, program hiçbir şey yapmayacak. Daha sonra program %K ve %D çizgilerinin konumunu yine kontrol ederek onların 20 seviyesinin altında olup olmadığını belirleyecek. Eğer 20 seviyesinin altındalarsa, %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazlayana kadar program hiçbir şey yapmadan bekleyecek. %K çizgisi %D çizgisini aşağıdan yukarıya doğru çaprazladığında da kârı al sinyali üretecek. Satış sinyali sonrası %K ve %D çizgileri 20 seviyesine eşit veya üzerinde olduğu sürece, program hiçbir şey yapmayacak.
Aşağıdaki görüntü bu stratejinin satış için planını göstermektedir:
Şimdiye kadar, Stochastic Oscillator göstergesiyle kullanılabilecek basit stratejileri ele aldık ve bu stratejiler için bir ticaret sistemi oluşturmamıza yardımcı olacak bir plan hazırladık. Bir sonraki bölümde ise, ticaret sistemini nasıl geliştireceğimizi öğreneceğiz.
Stochastic Oscillator göstergesine dayalı ticaret sistemi
Şimdi, ele aldığımız stratejilere dayalı olarak çalışan bir ticaret sisteminin nasıl kodlanacağını öğreneceğimiz belki de bu makalenin en ilginç bölümüne başlıyoruz. Programlama, ticaret kararlarına duyguları dahil etmeden stratejilerimizi disiplinli bir şekilde yürütmemize olanak sağlayarak etkili bir şekilde ticaret yapmamıza yardımcı olan harika bir araçtır ve en önemlisi de herhangi bir stratejiyi gerçek hesapta kullanmadan önce onun test edilmesini mümkün kılar. Hadi ticaret sistemimizi yazmaya başlayalım.
İlk olarak, Stochastic Oscillator çizgilerinin değerlerini grafik üzerinde gösterecek bir program yazalım. Yazarken, ticaret sistemlerinin nasıl oluşturulduğunu tam olarak anlamak adına yazdıklarımızı satır satır analiz edeceğiz.
Öncelikle, %K ve %D çizgileri için diziler oluşturmamız gerekiyor, burada, değerleri kesirli olarak sunan “double”ı kullanacağız:
double Karray[]; double Darray[];
Ardından oluşturulan dizileri mevcut veriden sıralamamız gerekiyor, bunun için “ArraySetAsSeries” fonksiyonunu kullanacağız:
ArraySetAsSeries(Karray, true); ArraySetAsSeries(Darray, true);
Devamında, göstergeyi tanımlamamız gerekiyor. "iStochastic" fonksiyonunu kullanarak, göstergeyi tanımlayacak şekilde "StochDef” adlı bir değişken oluşturuyoruz:
int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH);
Sonrasında, dizileri fiyat verileriyle doldurmamız gerekiyor, bunun için "CopyBuffer" fonksiyonunu kullanacağız:
CopyBuffer(StochDef,0,0,3,Karray); CopyBuffer(StochDef,1,0,3,Darray);
Daha sonra, dizilerdeki verilerin %K ve %D çizgi değerlerini hesaplayacağız, kesirlerin uzunluğunu azaltmak ve yaklaşık olması için "float" kullanacağız:
float KValue = Karray[0]; float DValue = Darray[0];
Kodun son satırı ise, programın %K ve %D çizgilerinin değerini grafik üzerinde iki satır halinde göstermesini sağlayacak, bu amaçla da "Comment" fonksiyonunu kullanacağız:
Comment("%K value is ", KValue,"\n""%D Value is ",DValue);
Aşağıdaki kod yukarıda açıklananla aynıdır, ancak ihtiyacınız olduğunda tek adımda kopyalayabilmeniz adına tek bir blok halinde sunulmuştur:
//+------------------------------------------------------------------+ //| Simple Stochastic System - Lines Value.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 arrays for %K line and %D line double Karray[]; double Darray[]; //sorting arrays from the current data ArraySetAsSeries(Karray, true); ArraySetAsSeries(Darray, true); //defining the stochastic indicator int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH); //filling arrays with price data CopyBuffer(StochDef,0,0,3,Karray); CopyBuffer(StochDef,1,0,3,Darray); //calculating value of %K and %D line of cuurent data float KValue = Karray[0]; float DValue = Darray[0]; //commenting calcualted values on the chart Comment("%K value is ",KValue,"\n" "%D Value is ",DValue); } //+------------------------------------------------------------------+
Şu ana kadar, Stochastic Oscillator çizgilerinin mevcut değerlerini grafik üzerinde görüntüleyebilen bir programın kodunu yazdık. Şimdi ise bu programı MetaTrader 5 işlem terminalinde çalıştırmamız gerekiyor. Kodu editörde derledikten sonra program işlem terminalinin Kılavuz penceresinde görünecektir:
Simple Stochastic System - Lines Value dosyasını grafiğe sürükleyip bıraktıktan sonra aşağıdaki pencere açılacaktır:
Tamam tuşuna bastıktan sonra, program (Uzman Danışman) aşağıdaki görüntüdeki gibi grafiğe eklenecektir:
Böylece, programın aşağıdaki görüntüdeki gibi Stochastic Oscillator çizgilerinin değerlerini ürettiğini görebiliriz:
Şimdi, ele aldığımız stratejilere dayalı ticaret sisteminin kodunu yazmaya geçebiliriz. Oluşturacağımız program ilgili stratejilere karşılık gelen sinyalleri grafik üzerinde yorum olarak gösterecektir. Hadi başlayalım...
- Birinci strateji: Yükseliş trendi stratejisi
%K ve %D < 50 --> %K > %D = Alış sinyali
İşte, göstergenin değerlerini analiz ederek bu stratejiye dayalı olarak grafik üzerinde sinyalleri gösterecek ticaret sisteminin kodu:
//+------------------------------------------------------------------+ //| Simple Stochastic System - 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() { string signal=""; double Karray[]; double Darray[]; ArraySetAsSeries(Karray, true); ArraySetAsSeries(Darray, true); int StochDef = iStochastic(_Symbol,_Period,14,3,3,MODE_SMA,STO_LOWHIGH); CopyBuffer(StochDef,0,0,3,Karray); CopyBuffer(StochDef,1,0,3,Darray); double KValue0 = Karray[0]; double DValue0 = Darray[0]; double KValue1 = Karray[1]; double DValue1 = Darray[1]; if (KValue0<50&&DValue0<50) if ((KValue0>DValue0) && (KValue1<DValue1)) { signal = "BUY"; } Comment("SSS - Uptrend Strategy - Signal is ",signal); } //+------------------------------------------------------------------+
Bir önceki koda kıyasla bu koda eklenenler:
Sonradan hesaplanacağı için boş değerli olarak "signal" adlı bir değişken oluşturuldu:
string signal="";
Mevcut veriler ve bir önceki veriler için olmak üzere (0 ve 1 için) %K değerleri ve %D değerleri adına ikişer değişken oluşturuldu:
double KValue0 = Karray[0]; double DValue0 = Darray[0]; double KValue1 = Karray[1]; double DValue1 = Darray[1];
%K çizgisinin %D çizgisini çaprazlama olaylarının değerlendirilmesine ihtiyacımız vardır: bu strateji için, %K çizgisinin %D çizgisini yukarıya doğru çaprazlama olayları koşullara uygun olarak analiz edilmelidir. Bunu yapmak için “if” ifadesini kullanırız:
if (KValue0<50&&DValue0<50) if ((KValue0>DValue0) && (KValue1<DValue1)) { signal = "BUY"; }
İlgili koşullara uygun olarak bir çaprazlama bulunduğunda, “signal” değişkeni “BUY” olarak ayarlanmalıdır. Devamında, bu sinyal grafikte gösterilmelidir. Bu, şu kod satırıyla gerçekleştirilir:
Comment("SSS - Uptrend Strategy - Signal is ",signal);
Programın kodunu yazdıktan ve derledikten sonra onu Kılavuz penceresinden bulabiliriz:
Dosyayı grafik üzerine sürükleyip bıraktıktan sonra, aşağıdaki pencere görünecektir:
Tamama bastıktan sonra program grafiğe eklenecektir:
Program iyi çalışıyor ve örneğin test sırasında şu şekilde bir sinyal gösterdi:
- İkinci strateji: Düşüş trendi stratejisi
%K ve %D > 50 --> %K < %D = Satış sinyali
Düşüş trendi stratejisine dayalı ticaret sisteminin kodu şu şekildedir:
//+------------------------------------------------------------------+ //| Simple Stochastic System - 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() { string signal=""; double Karray[]; double Darray[]; ArraySetAsSeries(Karray, true); ArraySetAsSeries(Darray, true); int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH); CopyBuffer(StochDef,0,0,3,Karray); CopyBuffer(StochDef,1,0,3,Darray); double KValue0 = Karray[0]; double DValue0 = Darray[0]; double KValue1 = Karray[1]; double DValue1 = Darray[1]; if (KValue0>50&&DValue0>50) if ((KValue0<DValue0) && (KValue1>DValue1)) { signal = "SELL"; } Comment("SSS - Downtrend Strategy - Signal is ",signal); } //+------------------------------------------------------------------+
Farklılıklar şunlardır:
- Çaprazlama koşulları
if (KValue0>50&&DValue0>50) if ((KValue0<DValue0) && (KValue1>DValue1)) { signal = "SELL"; }
- Yorum çıktısı
Comment("SSS - Downtrend Strategy - Signal is ",signal);
Derledikten sonra, programın dosyasını Kılavuz penceresinden bulabiliriz:
Dosyayı grafik üzerine sürükleyip bıraktığınızda aşağıdaki pencere açılacaktır:
Tamam düğmesine bastıktan sonra program grafiğe eklenecektir:
Sinyaller, bu stratejinin koşullarına uygun olarak grafik üzerinde yorum olarak gösterilecektir. Aşağıdaki görüntüde böyle bir sinyalin örneği gösterilmektedir:
- Üçüncü strateji: Yatay hareket stratejisi
- Alış sinyali
%K ve %D < 20 --> %K > %D = Alış sinyali
%K ve %D > 80 --> %K < %D = Kârı al sinyali
Bu stratejiye dayalı olarak sinyaller üretebilen ticaret sisteminin kodu:
//+------------------------------------------------------------------+ //| Simple Stochastic System - Sideways - Buy 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() { string signal=""; double Karray[]; double Darray[]; ArraySetAsSeries(Karray, true); ArraySetAsSeries(Darray, true); int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH); CopyBuffer(StochDef,0,0,3,Karray); CopyBuffer(StochDef,1,0,3,Darray); double KValue0 = Karray[0]; double DValue0 = Darray[0]; double KValue1 = Karray[1]; double DValue1 = Darray[1]; if (KValue0<20&&DValue0<20) if ((KValue0>DValue0) && (KValue1<DValue1)) { signal = "BUY"; } Comment("SSS - Sideways - Buy Strategy - Signal is ",signal); if (KValue0>80&&DValue0>80) if ((KValue0<DValue0) && (KValue1>DValue1)) { signal = "Take Profit"; } Comment("SSS - Sideways - Buy Strategy - Signal is ",signal); } //+------------------------------------------------------------------+
Farklılıklar şunlardır:
- Yatay hareket stratejisinin alış sinyaline uygun çaprazlama koşulları:
if (KValue0<20&&DValue0<20) if ((KValue0>DValue0) && (KValue1<DValue1)) { signal = "BUY"; }
- Yatay hareket stratejisinin alış sinyaline uygun yorum:
Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);
- Yatay hareket stratejisinin kârı al sinyaline uygun çaprazlama koşulları:
if (KValue0>80&&DValue0>80) if ((KValue0<DValue0) && (KValue1>DValue1)) { signal = "Take Profit"; }
- Yatay hareket stratejisinin kârı al sinyaline uygun yorum:
Comment("SSS - Sideways - Buy Strategy - Signal is ",signal);
Derlendikten sonra, ticaret sisteminin dosyası Kılavuz penceresinde görünecektir:
Dosyayı grafik üzerine sürükleyip bıraktığınızda aşağıdaki pencere açılacaktır:
Tamam düğmesine bastıktan sonra program grafiğe eklenecektir:
Sinyaller, bu stratejinin koşullarına uygun olarak grafik üzerinde yorum olarak gösterilecektir. Aşağıdaki görüntü böyle bir sinyalin örneğini göstermektedir:
Kârı al sinyali örneği:
- Yatay hareket stratejisi: Satış sinyali
%K ve %D > 80 --> %K < %D = Satış sinyali
%K, %D < 20 --> %K > %D = Kârı al sinyali
Bu strateji için ticaret sistemi kodu aşağıdaki gibi olacaktır:
//+------------------------------------------------------------------+ //| Simple Stochastic System - Sideways - Sell 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() { string signal=""; double Karray[]; double Darray[]; ArraySetAsSeries(Karray, true); ArraySetAsSeries(Darray, true); int StochDef = iStochastic(_Symbol,_Period,5,3,3,MODE_SMA,STO_LOWHIGH); CopyBuffer(StochDef,0,0,3,Karray); CopyBuffer(StochDef,1,0,3,Darray); double KValue0 = Karray[0]; double DValue0 = Darray[0]; double KValue1 = Karray[1]; double DValue1 = Darray[1]; if (KValue0>80&&DValue0>80) if ((KValue0<DValue0) && (KValue1>DValue1)) { signal = "SELL"; } Comment("SSS - Sideways - Sell Strategy - Signal is ",signal); if (KValue0<20&&DValue0<20) if ((KValue0>DValue0) && (KValue1<DValue1)) { signal = "TAKE PROFIT"; } Comment("SSS - Sideways - Sell Strategy - Signal is ",signal); } //+------------------------------------------------------------------+
Farklılıklar şunlardır:
- Yatay hareket stratejisinin satış sinyaline uygun çaprazlama koşulları:
if (KValue0>80&&DValue0>80) if ((KValue0<DValue0) && (KValue1>DValue1)) { signal = "SELL"; }
- Yatay hareket stratejisinin satış sinyaline uygun yorum:
Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);
- Yatay hareket stratejisinin kârı al sinyaline uygun çaprazlama koşulları:
if (KValue0<20&&DValue0<20) if ((KValue0>DValue0) && (KValue1<DValue1)) { signal = "TAKE PROFIT"; }
- Yatay hareket stratejisinin kârı al sinyaline uygun çaprazlama koşulları:
Comment("SSS - Sideways - Sell Strategy - Signal is ",signal);
Derlendikten sonra, ticaret sisteminin dosyası Kılavuz penceresinde görünecektir:
Dosyayı grafik üzerine sürükleyip bıraktığınızda aşağıdaki pencere açılacaktır:
Tamam düğmesine bastıktan sonra program grafiğe eklenecektir:
Aşağıdaki görüntü, bu stratejiye göre oluşturulmuş bir satış sinyali örneğini göstermektedir:
Aşağıdaki görüntü, bu stratejiye göre oluşturulmuş bir kârı al sinyali örneğini göstermektedir:
Sonuç
Bu makalenin sonunda, ticaret dünyasındaki en popüler göstergelerden biri olan Stochastic Oscillator göstergesini kullanarak basit bir ticaret sisteminin nasıl oluşturulacağının temellerini artık öğrendiğimizi söyleyebiliriz. Umarım Stochastic Oscillator göstergesinin ne olduğunu, neyi ölçtüğünü ve nasıl hesaplandığını anlamışsınızdır - tüm bunlardan ayrıntılı olarak konuştuk. Umarım ele aldığımız basit stratejiler, göstergeyi nasıl kullanabileceğiniz konusunda size yeni fikirler sağlamıştır. Ayrıca makalede, bu basit stratejilere dayalı bir ticaret sistemini kolay ve sorunsuz bir şekilde oluşturmamızda bize kılavuzluk edecek bir plan da hazırladık. Ve makalenin son bölümünde de, böyle bir ticaret sisteminin nasıl tasarlanacağını inceledik.
Umarım bu makale sizin için faydalı olur ve ticaret hedeflerinize ulaşmanıza yardım sağlar. En popüler ve kullanışlı göstergelerden biri olan Stochastic Oscillator’ı analiz ederek yeni fikirler keşfedebileceğinizi umuyorum. Bir sonraki makalede görüşmek üzere!
MetaQuotes Ltd tarafından İngilizceden çevrilmiştir.
Orijinal makale: https://www.mql5.com/en/articles/10692





- Ücretsiz ticaret uygulamaları
- 24 saat boyunca ücretsiz Forex VPS
- Ticaret kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Web sitesi politikasını ve kullanım şartlarını kabul edersiniz