라파엘시오니 추진 동향 전략

저자:차오장, 날짜: 2023-12-13 14:59:34
태그:

img

전반적인 설명

이 전략은 RafaelZioni에 의해 만들어진 SuperB 지표에 기반합니다. 이 지표는 동력 지표를 통해 트렌드를 식별하고 트렌드 다음 전략에 속하는 상승 및 하락 트렌드를 자동으로 추적합니다.

전략 논리

이 전략은 라파엘 지오니 (RafaelZioni) 가 만든 슈퍼B 지표를 사용하여 가격 트렌드를 식별합니다. 슈퍼B 지표는 가격 변동 범위, 거래량 및 오픈 및 클로즈 가격 사이의 가격 차이에 기반하여 스프레드 볼 인디케이터를 계산합니다. 스프레드 볼 인디케이터는 가격의 모멘텀 특성을 반영합니다. 이 전략은 스프레드 볼 인디케이터의 이동 평균과 표준 편차를 사용하여 임계치를 결정합니다. 스프레드 볼이 상단 레일 위에있을 때 상승 추세입니다. 하단 레일 아래에있을 때 하향 추세입니다.

이 전략은 높은 가격과 낮은 가격을 추적함으로써 트렌드 반전을 실시간으로 판단합니다. 상승 추세에서는 지속적인 상승을 나타내는 새로운 최고가 계속됩니다. 가격이 일정 비율로 최대 가격 이하로 떨어지면 하락 추세로 전환됩니다. 판단 방법은 하락 추세와 유사합니다. 이것은 트렌드 반전 지점의 신속한 판단을 허용합니다.

장점

이 전략은 동력 지표를 결합하여 트렌드 방향을 결정하고, 최고와 최저 가격을 실시간으로 추적합니다. 이는 새로운 트렌드 방향을 빠르게 식별하고 자동으로 상승 및 하락 트렌드를 추적하여 구매 포인트와 과소 구매 포인트의 위험을 피합니다.

RafaelZioni의 SuperB 지표는 가격 변화의 강도와 속도를 반영하고 진정한 트렌드를 정확하게 파악하여 가짜 브레이크를 효과적으로 필터 할 수 있습니다. 판단 규칙은 간단하고 명확하며 이해하기 쉽고 확인 할 수 있습니다.

그것은 단지 거래 비용을 줄이고 빈번한 거래로 인한 미끄러짐 손실을 줄이기 위해 긴 포지션을 합니다.

위험성

이 전략은 브레이크오웃 전에 통합 영역에서 여러 가지 잘못된 거래에 유연합니다. 매개 변수는 통합 영역에 대한 민감도를 줄이기 위해 최적화 할 수 있습니다.

스톱 로스 라인은 트렌드 쇼크 도중 발동될 가능성이 높습니다. 스톱 로스 범위는 더 긴 홀딩 기간 동안 적절하게 느려질 수 있습니다.

장기 및 단위 사이로 전환 할 때, 포지션은 적시에 전환해야합니다. 전환이 적시에 이루어지지 않으면 더 큰 손실로 이어질 수 있습니다.

최적화 제안

슈퍼B 지표의 매개 변수를 최적화하여 더 나은 매개 변수 조합을 찾고 지표의 안정성을 향상시킵니다.

최대 및 최저 가격의 추적 비율 인수를 최적화하여 통합 영역에 대한 민감도를 줄이십시오.

트렌드 쇼크 때 중단되는 것을 피하기 위해 유지 시간 기준을 높여

요약

이 전략은 라파엘 지오니 (RafaelZioni) 가 개발한 슈퍼B 지표를 사용하여 가격 트렌드 방향을 결정하고, 실시간으로 높은 가격과 낮은 가격을 추적하여 트렌드 반전을 판단하며, 상승 및 하락 트렌드의 자동 추적을 실현하고, 구매 포인트를 놓치고 과잉 구매 위험을 피합니다. 트렌드 다음 특성을 가진 모멘텀 전략에 속합니다. 이 전략은 단순하고 명확한 규칙으로 진정한 트렌드를 결정하기 위해 모멘텀 지표를 결합합니다. 최적화 제안에 따라 더 향상되고 최적화 될 수 있으며 연구와 적용 가치가 있습니다.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-08-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(shorttitle='SuperB', title='SuperB By RafaelZioni', overlay=true)
long_only = input(title="Only Long?", defval=true)

hilow = ((high - low)*100)
openclose = ((close - open)*100)
vol = (volume / hilow)
spreadvol = (openclose * vol)
VPT = spreadvol + cum(spreadvol)
window_len = 28

v_len = 14
price_spread = stdev(high-low, window_len)

vp =  spreadvol + cum(spreadvol)
smooth = sma(vp, v_len)
v_spread = stdev(vp - smooth, window_len)
shadow = (vp - smooth) / v_spread * price_spread

out = shadow > 0 ? high + shadow : low + shadow
//

len = input(10)



vpt=ema(out,len)

// INPUTS //
st_mult   = input(1,   title = ' Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(10, title = ' Period',     minval = 1)

// CALCULATIONS //
up= vpt - (st_mult * atr(st_period))
dn = vpt + (st_mult * atr(st_period))
c5=close
//

factor = input(title="Factor", defval=0.05, minval=0.01, maxval=5, step=0.01, type=input.float)

hb = 0.00 ,hb := nz(hb[1])
hl = 0.000, hl := nz(hl[1])

lb = 0.00 ,lb := nz(lb[1])
l1 = 0.000,l1 := nz(l1[1])

c = 0
c := nz(c[1]) + 1

trend = 0,trend := nz(trend[1]),n = dn,x =up


if barstate.isfirst
    c := 0
    lb := n
    hb := x                      
    l1 := c5  
    hl := c5
    hl
if c == 1
    if x >= hb[1]
        hb := x
        hl := c5
        trend := 1  
        trend
    else
        lb := n
        l1 := c5 
        trend := -1 
        trend

if c > 1

    if trend[1] > 0  
        hl := max(hl[1], c5)
        if x >= hb[1] 
            hb := x
            hb
        else

            
            if n < hb[1] - hb[1] * factor 
                lb := n
                l1 := c5

                trend := -1  
                trend
    else

       
        l1 := min(l1[1], c5 )

        if n <= lb[1] 
            lb := n 
            lb
        else

           
            if x > lb[1] + lb[1] * factor
                hb := x 
                hl := c5

                trend := 1  
                trend



v = trend == 1 ? hb : trend == -1 ? lb : na
plot(v, color=trend == 1 ? color.blue : color.yellow, style=plot.style_circles, linewidth=1, title="trend", transp=0, join=true)

//

long = trend == 1 and trend[1] == -1 
short = trend == -1 and trend[1] == 1 
//
last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

buy = crossover(last_long, last_short)
sell = crossover(last_short, last_long)

/////////////// Positions ////////////// 
if long
    strategy.entry("Buy", long=true)
    if long_only == false
        strategy.close("Sell")

if short
    if long_only == false
        strategy.entry("Sell", long=false)
    strategy.close("Buy")

/////////////// Plotting /////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

더 많은