Tracker xu hướng tối ưu

Tác giả:ChaoZhang, Ngày: 2022-05-06 23:35:19
Tags:OTT

Một chỉ số hoàn toàn mới từ nhà phát triển của chỉ số MOST (Moving Stop Loss) Anıl Özekşi.

Optimized Trend Tracker OTT là một chỉ số cung cấp cho các nhà giao dịch để tìm thấy một xu hướng hiện tại hoặc nói cách khác để xem chúng ta đang ở phía nào của xu hướng hiện tại.

Chúng ta đang chịu ảnh hưởng của xu hướng tăng trong những trường hợp mà giá trên OTT, dưới ảnh hưởng của xu hướng giảm, khi giá thấp hơn OTT có thể nói là chúng ta đang ở đó.

Parameter đầu tiên trong chỉ số OTT được thiết lập bởi hai tham số là thời gian/chiều dài.

OTT sẽ nhạy cảm với xu hướng nếu nó nhỏ hơn. Và ngược lại, sẽ ít nhạy cảm hơn khi nó dài hơn.

Khi thời gian kéo dài nó sẽ trở nên ít nhạy cảm hơn với xu hướng nhỏ và hành động giá.

Bằng cách này, sự lựa chọn của bạn về thời gian, sẽ liên quan chặt chẽ đến loại xu hướng nào bạn quan tâm.

Các thông số phần trăm OTT trong OTT là một hệ số tối ưu hóa. Các giá trị nhỏ tốt hơn trong việc nắm bắt biến động ngắn hạn, trong khi các giá trị lớn sẽ phù hợp hơn với xu hướng dài hạn.

Ngoài ra, khi OTT được sử dụng với đường hỗ trợ trong đó, mua và bán tín hiệu nó sẽ trở thành một chỉ số sản xuất.

Bạn có thể sử dụng báo động mặc định OTT và tín hiệu Mua bán như:

1- Mua khi giá cao hơn OTT Bán khi giá thấp hơn OTT

2- Mua khi đường hỗ trợ OTT vượt qua đường OTT. Bán khi OTT hỗ trợ đường băng qua dưới đường OTT.

3- Mua khi đường OTT là màu xanh lá cây và làm cho cao hơn. Bán khi dòng OTT là màu đỏ và làm cho thấp hơn.

Lưu ý: Một bài viết nhỏ với phụ đề tiếng Anh sẽ sớm có trên kênh Youtube của tôi.Kiểm tra lại

img


/*backtest
start: 2022-04-06 00:00:00
end: 2022-05-05 23:59:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic

//created by: @Anil_Ozeksi
//developer: ANIL ÖZEKŞİ
//author: @kivancozbilgic

study("Optimized Trend Tracker","OTT", overlay=true)
src = input(close, title="Source")
length=input(2, "OTT Period", minval=1)
percent=input(1.4, "OTT Percent", type=input.float, step=0.1, minval=0)
showsupport = input(title="Show Support Line?", type=input.bool, defval=true)
showsignalsk = input(title="Show Support Line Crossing Signals?", type=input.bool, defval=true)
showsignalsc = input(title="Show Price/OTT Crossing Signals?", type=input.bool, defval=false)
highlight = input(title="Show OTT Color Changes?", type=input.bool, defval=false)
showsignalsr = input(title="Show OTT Color Change Signals?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
mav = input(title="Moving Average Type", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
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
    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)
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma

    if mav == "TMA"
        ma := sma(sma(src, ceil(length / 2)), floor(length / 2) + 1)
        ma

    if mav == "VAR"
        ma := VAR
        ma

    if mav == "WWMA"
        ma := WWMA
        ma

    if mav == "ZLEMA"
        ma := ZLEMA
        ma

    if mav == "TSF"
        ma := TSF
        ma
    ma
    
MAvg=getMA(src, length)
fark=MAvg*percent*0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop =  MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 
plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line")
OTTC = highlight ? OTT[2] > OTT[3] ? color.green : color.red : #B800D9 
pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0)

buySignalk = crossover(MAvg, OTT[2])
plotshape(buySignalk and showsignalsk ? OTT*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
sellSignallk = crossunder(MAvg, OTT[2])
plotshape(sellSignallk and showsignalsk ? OTT*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)

if buySignalk
    strategy.entry("entry long", strategy.long)
else if sellSignallk
    strategy.entry("entry short", strategy.short)
  
  


Có liên quan

Thêm nữa