TradingView
KivancOzbilgic
1 Feb 2021 pukul 21.26

Forecast Oscillator 

BIST 100 IndexBIST

Huraian

The Forecast Oscillator is a technical indicator that compares a security close price to its time series forecast. The time series forecast function name is "tsf" and it calculates the projection of the price trend for the next bar.

The Forecast Oscillator and therefore the time series forecast are based on linear regression. The time series forecast indicator is equal to the sum of two other indicators: the linear regression (LinearReg) and the linear regression slope (LinearReg_Slope).


If the Forecast Oscillator stays above the zero line for an extended period, then it signals that the price may rise in the future and if it stays below the zero line for an extended period, then it signals a coming fall in the security price.


The indicator name is "Forecast Oscillator" and it accepts two arguments. The first argument is the time series that is used in the next bar forecast (It is usually the close price) and the second one is the period that will be passed to the time series forecast function during calculation . The technical analysis indicator returns a value in percentage that corresponds to the close price minus the previous value of the time series forecast, multiplied by 100 and divided by the close price.


Author's Note:
Just look at the exaggerated movements of the oscillator especially in trend changes. Some examples can be experienced on the chart in rectangles.
Kıvanç Özbilgiç

Komen
Noldo
Teşekkürler👏
uaozcan06
strategy("Twin Optimized Trend Tracker","TOTT", overlay=true)
src = input(close, title="Source")
length=input(40, "OTT Period", minval=1)
percent=input(1, "Optimization Constant", type=input.float, step=0.1, minval=0)
coeff=input(0.001, "Twin OTT Coefficient", type=input.float, step=0.001, minval=0)
showsupport = input(title="Show Support Line?", type=input.bool, defval=true)
showsignalsk = input(title="Show Signals?", type=input.bool, defval=true)
mav = input(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)

Burası, aslında bir kısım. Burada input ile giriş bilgileri yazılıyor. Burada kaç zaman değeri olacağı yazıyor.
uzunluğun başlangıç değeri 1, bitiş değeri 40. Anladığım kadarıyla 1 dahil, 40 dahil.
mav = kısmında tam takım değer girişler bulunuyor. Eğer bunlar yazılmazsa, kodlar yazıldığı taktirde hata verecektir. input bool, var ya da yok. Başlangıçta
ise var kabul ediliyor.

Var_Func(src,length)=>
valpha=2/(length+1)
vud1=src>src[1] ? src-src[1] : 0
vdd1=src<src[1] ? src[1]-src : 0
vUD=sum(vud1,9)
vDD=sum(vdd1,9)
vCMO=nz((vUD-vDD)/(vUD+vDD))
VAR=0.0

Burası şöyle açıklanır:
Değer fonksiyonu(kaynak, uzunluk)=>
Başta gösterilen kaynak ve uzunluk alınmış. Bu, tek satır olarak anlamsız gözükse de aşağısıyla bağlantılıdır en çok:
valpha=2/(length+1)
yeni bir değer tanılıyor. length'in 1 fazlasını 2 ye bölüyor.

vud1=src>src[1] ? src-src[1] : 0
vdd1=src<src[1] ? src[1]-src : 0
vUD=sum(vud1,9)
vDD=sum(vdd1,9)
vCMO=nz((vUD-vDD)/(vUD+vDD))
VAR=0.0
Burada vud1 değeri; src, src'nin 1 önceki değerinden büyükse, src'nin 1 önceki elemanı; değilse de 0 ı ele alıyor.
ardından yeni bir değer açıyor ve o da şuna eşit:
bu sefer de yukarının tam tersini yaparak bir sistem oluşuyor. Her iki ihtimal de değerlendiriliyor.
nihai sonuçlar şöyle değerlendiriliyor:
V(u)D ve V(d)D. Bu ikisi aynı değeri kullansa da; yukarıda 3 koşul var. Dolayısıyla 2 koşul değerlendiriliyor. Bir tanesinin kullanılmamasının nedeni 0'dır. Öyle ya da
böyle, sıfırı kullanırsa iki şıkkı elemiş olup, bir tane soldan şık geriye seçilecektir.

VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
Wwma_Func(src,length)=>
wwalpha = 1/ length
WWMA = 0.0
WWMA := wwalpha*src + (1-wwalpha)*nz(WWMA[1])
WWMA=Wwma_Func(src,length)
Zlema_Func(src,length)=>
zxLag = length/2==round(length/2) ? length/2 : (length - 1) / 2
zxEMAData = (src + (src - src[zxLag]))
ZLEMA = ema(zxEMAData, length)
ZLEMA=Zlema_Func(src,length)
Tsf_Func(src,length)=>
lrc = linreg(src, length, 0)
lrc1 = linreg(src,length,1)
lrs = (lrc-lrc1)
TSF = linreg(src, length, 0)+lrs
TSF=Tsf_Func(src,length)

Burada çizim işlemine geçiliyor.
Burada anladığım kadarıyla ilk satırda bir koşul, altta da yeni bir koşul var.
temel "var", var fonksiyonunda (ilk kısımda yazılan) değerin
uaozcan06
@uaozcan06, bir öğrencim var bu u yazdı..lisede.. sizce olmuş mu..
aydin_bulent
@uaozcan06, Olmuş güzel olmuş birde 1 saat ve altı için uygun parametre hangisi olurdu bu daha güzel olurdu.
Man1di5buk3
@uaozcan06, Bunu biz nasil kullanabiliriz ki!
KivancOzbilgic
@uaozcan06, dalga falan mı geçiyorsunuz siz benimle???

Maile de atmışsınız "Bir algoritma geliştirdik.. olmuş mu diye size yazdık.. bakarsanız seviniriz..Lise öğrencisi yazdı.." diye!
Neyin algosu neyin geliştirmesi, kod kopyalanmış aynen!

2 gün önce paylaştığım kodu noktasına virgülüne dokunmadan öğrencim yazdı liseli diye utanmadan benimle paylaşıyorsunuz!

Şaka gibi gerçekten, şaka olmalı bu!
uaozcan06
@KivancOzbilgic, sayın kıvanç bey amacım o değildi.bir öğrenciye umut olmaktı..o daha bir ergen.. meslek seçmek istiyor.. yanlış anlasildiysam özür diledim.. Ben konut yazmadan anlamam .. öğrencim ben yazdım diyince ben de size bir danışayım dedim.. kusura bakmayın.. sizi yıllardır takip ederim..algoritma ve indikatorlerinizi kullanırım.. bu yanlış anlaşılmadan ötürü de özür dilerim..
KivancOzbilgic
@uaozcan06, özür dilemenize gerek yok, bir yanlış anlama olmuş, kodu aynen yazıp biz geliştirdik bir bakar mısınız deyince mailde dalga geçmek için yazdınız sandım, buraya da yazınca canım sıkıldı, öğrenciniz yazılan kodlamanın açıklamasını yazmış ama bence lise öğrencisi için o da bir başarıdır
uaozcan06
@KivancOzbilgic, sağolun teşekkürler... Zaten sonradan sordum.. komutlara yorum yaptığını söyledi..ben o yazdı zannettim... heyecanlandım birden.. iyi günler..
borsaendeks2
KIVANÇ BEY SİZİ ANLATAN EN İYİ TAMLAMA.."TEK KİŞİLİK DEV KADRO" TEŞEKKÜR EDERİZ
Lebih