Yeni başlık hayırlı olsun,inşallah faydalanan çok sistemci olur
|
|
Bu başlıkta yeni indikatörleri paylaşabiliriz.Başlangıcı "Oynak İndikatörü" ile yapıyorum.
Oynak İndikatörü: Parametre olarak verilen bar sayısındaki, Ortalama yüzde değişimin 100 katını döndürür.
Bu indikatör piyasa hareketliliğini ölçmek için 1970'lerin sonunda J. Welles Wilder tarafından geliştirilmiş olan ATR(Average True Range) İndikatörünün muadili olarak, ATR nin olumsuz yanlarını kapatmak amacıyla yazıldı.
ATR farklı fiyatların "farkları" alınarak hesaplanıyor, "fiyat seviyesine" duyarlı olduğu için aynı kriter örneğin fiyatın 50 olduğu zaman diliminde farklı 120 olduğu dönemlerde iken ise çok daha farklı anlamlara gelir.
Aynı zamanda diğer sembollerde yine fiyat nedeniyle çok farklı değerlere dönüşür.Haliyle bir RSI da olduğu gibi 30 da al 80 sat denilemez.
Elbette kendi ortalaması ile kıyaslamak gibi yöntemler söz konusudur fakat bu istenilen sonucu almak için yetersizdir, yalnızca oynaklığın artıyormu azalıyormu olduğunu bulursunuz, oynaklığı ölçemezsiniz.
ATR'nin hesaplanışını aşağıda bulabilirsiniz:
https://www.tradingview.com/wiki/Ave...ue_Range_(ATR)
"Oynak İndikatörü" nü yazarken ATR nin aynısını puan yerine yüzde şeklinde hesaplayacaktım fakat algo trade için biraz daha farklılaştırdım. ATR orjinal hesaplamasını oran yöntemiyle hesaplamak da bir alternatif olabilirdi.
Anlık işlem yapan robot geliştiriyor olsamda Robot Sistemleri genelde bar kapanışlı tercih ediliyor.
Haliyle Bar içindeki yüksek ve düşükten ziyade kapanış fiyatı daha önemli bu tip sistemlerde.
Bundan dolayı "Oynak İndikatörü" değişimi yalnızca bar kapanışı ile önceki bar kapanışı farkı üzerinden hesaplıyor.
Bir diğer farklılık ise sayıların kullanıcı dostu olması için sonucun 100 ile çarpılmasıdır.Yani görülen değerler aslında 10.000 de X olan değişimlerdir.
Grafik görüntüsü ise ATR indikatörüne çok benzerdir.
OYNAK vs ATR
-Oynak İndikatörü önceki bar kapanışı üzerinden bar değişimini "oranlayarak" piyasa hareketliliğini ölçer. ATR ise yüksek-düşük, yüksek-kapanış, düşük-kapanış "farklarını" kullanarak piyasa hareketliliğini ölçer.
-Oynak İndikatörü bar kapanışlı intraday algoritmik sistemler için uygundur, sembole yada fiyata göre anlam kayması yaşanmaz, evrenseldir. ATR evrensel değildir, ATR ile uzun süre geçerliliğini koruyan bir algoritmik sistem geliştiremessiniz. Fiyat seviyeleri değiştikçe kriterlerin anlamı değişir.
-Farklı Sembollerin Oynak değerleri kıyaslanarak hangilerinin daha oynak olduğunu gösteren sorgu sistem yazmak mümkündür.Fakat ATR ile bunu yapamazsınız, çünkü sonuçlar standart bir metrik de değildirler.
Oynak İndikatörü iDeal için Açık Kodu:
Aşağıdaki resimde THYAO nun OYNAK ve ATR kıyaslamasını görebilirsiniz.PHP Code:
/*
Oynak İndikatörü: Parametre olarak verilen bar sayısındaki, Ortalama yüzde değişimin 100 katını döndürür.
*/
//Veriler
var C = Sistem.GrafikFiyatSec("Kapanis");
//Oynak İndikatörü---------------------------------------------------------------------------------------------------
int ParamOynakBar= 15;
var Oynak = Sistem.Liste(0);
for (int i = ParamOynakBar; i < C.Count; i++)
{
double MutlakYuzdeToplamlari=0f;
for (int j = 0; j < ParamOynakBar; j++)
{
MutlakYuzdeToplamlari += Math.Abs( ( C[i-j] / C[i-j-1] ) - 1 ) * 100 * 100;
if(j == ParamOynakBar-1) Oynak[i] = (float)(MutlakYuzdeToplamlari / ParamOynakBar);
}
}
//--------------------------------------------------------------------------------------------------------------------
Sistem.Cizgiler[0].Deger =Oynak ; //Panel 2
Sistem.Cizgiler[1].Deger =Sistem.AverageTrueRange(ParamOynakBar); //Panel 3
2017 ocakda de ATR değerleri 0.9 dan 0.1 e 9 kat düşüyorken, OYNAK değerleri hala 200 lerde seyrediyor.Oynak İndikatöründe değişim gerçekten oynaklık değişimidir.
ATR ise fiyat seviyesinden etkilendiği için kriter verilerek kullanılamayacak başarısız bir indikatördür.
Yazdıklarım her türlü eleştiriye açıktır
fırsat buldukça yeni indikatörler paylaşmaya devam edeceğim.
https://prnt.sc/lkj1mv
Yeni başlık hayırlı olsun,inşallah faydalanan çok sistemci olur
ciddi manada fark varmış gerçekten yeni konu başlığın hayırlı olsun.
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
Yeni başlık hayırlı olsun
SM-N910C cihazımdan hisse.net mobile app kullanarak gönderildi.
elinize sağlık... bu tip destekler bizi hedefe götürür.
"Orhan %R" İndikatörü: Kapanış Fiyatlarının, Parametre olarak verilen periyottaki En Düşük veya En Yüksek fiyatlara Yüzdesel uzaklığını döndürür.Periyot ve Ortalama Alınacak Bar Sayısı şeklinde iki parametre alır.
L.Williams tarafından geliştirilen "Williams %R" ve George Lane tarafından geliştirilen "Stochastic" indikatörlerinin birleştirilmesi ve her yönde daha doğru ve simetrik şekilde ölçeklendirilmesi ile meydana gelmiştir.
Williams %R Nasıl Hesaplanıyor: https://www.investopedia.com/terms/w/williamsr.asp
Stochastic Oscillator Nasıl Hesaplanıyor: https://www.investopedia.com/terms/s...oscillator.asp
Orhan%R, Williams%R, StochasticOsc ve StochasticFast indikatörleri aynı işi yaparlar, grafik çıktılar nerdeyse aynıdır fakat ölçekleme şekilleri ile biribirinden ayrılırlar.
Orhan %R değeri sıfırın üzerindeki değerleri StochasticOsc ile birebir aynıdır.
Orhan %R değeri sıfırın altındaki değerleri Williams%R ile birebir aynıdır.
Aşağıdaki Resimde özellik kıyaslamaları görünmektedir.
Orhan %R İndikatörü diğerlerinden daha hassas ve simetrik değer aralığına sahip ve salınımları yumuşatmak için parametre almaktadır.
https://prnt.sc/llgei3
"Orhan %R" iDeal Sistem Kodu
PHP Code:
Sistem.Cizgiler[0].Deger = Lib.OrhanR(Sistem,14,5); //Panel 2
Sistem.Cizgiler[1].Deger = Sistem.WilliamsR(14); //Panel 3
Sistem.Cizgiler[2].Deger = Sistem.StochasticOsc(14, 5); //Panel 4
Sistem.Cizgiler[3].Deger = Sistem.StochasticFast(14, 1); //Panel 5 (ikinci parametre işlevsizdir.)
"Orhan %R" iDeal Lib.cs Kodu
PHP Code:
using System;
using System.IO;
using System.Collections.Generic;
using System.Data;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections.Specialized;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Linq;
namespace ideal
{
public class Lib
{
public List<float> OrhanR(dynamic Sistem, int pRangeCount, int MAPeriod)
{
List<float> C = Sistem.GrafikFiyatSec("Kapanis");
List<float> H = Sistem.GrafikFiyatSec("Yuksek");
List<float> L = Sistem.GrafikFiyatSec("Dusuk");
var orhanR = Sistem.Liste(0);
for (int i = pRangeCount; i < C.Count; i++)
{
float HMAX= H.GetRange(i - pRangeCount + 1, pRangeCount).Max();
float LMIN= L.GetRange(i - pRangeCount + 1, pRangeCount).Min();
float HMAXC= HMAX - C[i];
float HMINC= C[i] - LMIN;
orhanR[i] = (HMINC>HMAXC ? HMINC/(HMINC+HMAXC)*100 : HMAXC/(HMINC+HMAXC)*100*-1 );
}
return MAPeriod<=1 ? orhanR : Sistem.MA(orhanR,"Simple",MAPeriod);
}
}
}
https://prnt.sc/llgez2
Elinize sağlık Orhan Bey,
Yeni başlıkta hayırlı olsun...
Yer İmleri