PineScript

Fisher Stratejisi

Paylaştı

on

Merhabalar, bu yazımda Fisher Dönüşünü göstergesi ile genel olarak kullanılan iki stratejiden bahsedeceğim. Bu gösterge iki çizgiden oluşur. Standart versiyonunda aynı RSI’da da olduğu gibi birkaç bölgeye ayrılmıştır. Biz hem bölgeler arası bir strateji yazacağız hem de sadece kesişimlerine göre yazacağız. Diğer strateji yazılarımızdaki kodlarla da harmanlayarak kendinize güzel bir strateji hazırlayabilirsiniz.

Kesişimler

Fisher göstergesindeki iki çizginin kesişimlerine göre işleme girelim. Mavi olan çizgiye Fisher, turuncu olana Trigger diyoruz. Fisher, Trigger’i yukarı kestiğinde LONG açalım. Fisher, Trigger’i aşağı kestiğinde ise SHORT açalım.

Bakın sadece bu iki kesişime strateji kurduğumuzda çok fazla sinyal geliyor. Görsel aşağıdadır.

Strateji kodları aşağıdadır.

//@version=5
strategy(title="Fisher Transform", shorttitle="Fisher", format=format.price, precision=2, overlay=true)
len = input.int(9, minval=1, title="Length")
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]

longCondition = ta.crossover(fish1,fish2)
shortCondition = ta.crossunder(fish1,fish2)

if longCondition
    strategy.entry("LONG",strategy.long)
if shortCondition
    strategy.entry("SHORT",strategy.short)

Kesişimler ve Bölgeler Filtreli

Reklamlar

Bakın sadece kesişimlere göre bir strateji ayarladığımızda çok sinyal alıyoruz. Belki de zarar ediyoruz. Ben bu testerelerden kurtulmak için ne yapmalıyım diye düşünürken aklıma bir fikir geldi. Madem çok kesişim var. Bunları filtrelemeliyim. Fisher değeri yükseldikçe fiyatın da yükseldiğini varsayarak, fisher ve trigger değeri düşük seviyelerde iken yukarı kesişim olduğunda LONG işlem açalım, fisher ve trigger değeri yüksek seviyelerde iken aşağı kesişim geldiğinde de SHORT işlem açalım. Hemen kodlayalım. Siz diğer stratejilerden kontrol ederek stop vs de ekleyebilirsiniz.

Bakın aynı görüntüde işlem sıklığı ne kadar azaldı. Fakat yine hatalı sinyaller görebiliyorum. Bu yüzden indikatörümün ve parametrelerin ayarlarıyla oynayabilirim. Ya da stop ve tp noktaları belirleyerek zararla kapatılan işlemleri lehime çevirebilirim. Bu son halinin kodlarını da aşağıya bırakıyorum.

//@version=5
strategy(title="Fisher Transform", shorttitle="Fisher", format=format.price, precision=2, overlay=true)
len = input.int(9, minval=1, title="Length")
high_ = ta.highest(hl2, len)
low_ = ta.lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / (high_ - low_) - .5) + .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * math.log((1 + value) / (1 - value)) + .5 * nz(fish1[1])
fish2 = fish1[1]
longValue = input.float(-2.)
shortValue = input.float(2.)
longCondition = ta.crossover(fish1,fish2) and fish1<longValue and fish2<longValue
shortCondition = ta.crossunder(fish1,fish2) and fish1>shortValue and fish2>shortValue

if longCondition
    strategy.entry("LONG",strategy.long)
if shortCondition
    strategy.entry("SHORT",strategy.short)

Umarım faydalı olmuştur. Diğer yazılarımda görüşmek üzere.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Trendler

Exit mobile version