최적화된 트렌드 추적기

저자:차오장, 날짜: 2022-05-06 23:35:19
태그:OTT

MOST (Moving Stop Loss) 인디케이터 Anıl Özekşi의 개발자로부터 완전히 새로운 지표입니다.

최적화된 트렌드 트래커 OTT는 트레이더들에게 기존 트렌드를 찾아주는 지표입니다. 즉, 우리가 현재 트렌드의 어느 쪽에 있는지 확인할 수 있습니다.

우리는 상승 추세의 영향을 받고 있습니다. 하락 추세의 영향으로, 가격이 OTT보다 낮을 때 우리는 그렇게 말할 수 있습니다.

두 개의 매개 변수로 설정된 OTT 지표의 첫 번째 매개 변수는 기간/길이입니다.

OTT는 트렌드 움직임에 훨씬 민감할 것입니다. 만약 그것이 더 작다면. 그리고 반대로, 더 길으면 덜 민감할 것입니다.

기간이 길어질수록 작은 추세와 가격 움직임에 대한 민감도가 낮아집니다.

이 방법으로, 당신의 기간 선택은 당신이 관심있는 어떤 종류의 추세와 밀접하게 관련이있을 것입니다.

OTT의 % 매개 변수는 최적화 계수입니다. 작은 값은 단기 변동을 더 잘 파악하는 반면 큰 값은 장기적인 추세에 더 적합할 것입니다.

또한, OTT를 사용 하 여 지원 라인, 구매 및 판매 신호 생산적인 지표가 될 것입니다.

OTT 기본 알람과 구매 판매 신호를 사용할 수 있습니다.

1- OTT 보다 높은 가격에 구매합니다. OTT보다 낮은 가격에서 팔자

2- OTT 지원 라인이 OTT 라인을 넘을 때 구매합니다. OTT 지원 라인이 OTT 라인을 넘을 때 판매합니다.

3- OTT 라인이 초록색이 되면 더 높게 구매합니다. OTT 라인이 빨간색이 되면 팔고, 낮은 하락점을 만듭니다.

참고: 영어 자막이 있는 작은 보도는 곧 제 유튜브 채널에서 볼 수 있습니다.재검토

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)
  
  


관련

더 많은