스마트 양적 하위 역전 거래 전략

저자:차오장, 날짜: 2023-12-08 10:45:49
태그:

img

전반적인 설명

이 전략은 암호화폐를 위해 고안된 지능형 양적 하위 반전 거래 전략이다. 이는 다중 시간 프레임 기술과 적응성 RSI 지표를 사용하여 잠재적인 단기 시장 바닥을 식별하고 과도한 수익을 달성하기 위해 하위 근처에서 반전을 입력합니다.

전략 원칙

우선, 전략은 적응성 RSI 지표를 계산하기 위해 가격 및 거래 부피의 변화를 사용하여 가능한 단기 시장 바닥을 판단합니다. 다음으로, 멀티 타임프레임 기술과 결합하여 더 큰 시간 프레임에서 바닥 신호를 확인합니다. 적응성 RSI 라인이 0 수준을 넘을 때 구매 신호가 생성됩니다.

구체적으로, 적응성 RSI 지표는 다음과 같이 계산됩니다. 먼저 각 촛불의 가격 변화를 계산하고 그 촛불의 거래량을 계산합니다. 두 개를 곱하여 그 촛불의 정량화 된 모멘텀을 얻습니다. 정량화 된 모멘텀에 RSI 계산을 적용하고 최종 적응성 RSI 지표를 얻기 위해 N 기간 평균을 취합니다. 이 지표는 시장 바닥을 명확하게 식별 할 수 있습니다.

그 위에,이 전략은 더 높은 시간 프레임에서 신호를 판단하기 위해 멀티 타임프레임 기술을 통합하여 단기 시장 소음의 간섭을 피합니다. 더 높은 시간 프레임에서 이동 평균이 바닥에서 전환하면이 전략의 구매 타이밍으로 간주됩니다.

이점 분석

이 전략의 가장 큰 장점은 적응성 RSI 지표를 사용하여 단기 시장 바닥을 정확하게 식별하는 데 있습니다. 이는 바닥 반전 거래를위한 효과적인 신호를 제공합니다. 또한, 멀티 타임프레임 기술을 통합하는 것은 단기 소음의 간섭을 피함으로써 신호 품질을 향상시킵니다.

전통적인 RSI 지표와 비교하면 적응성 RSI 지표는 계산에 정량화 된 추진력을 도입하여 빠르게 변화하는 암호화폐 시장에 더 민감하게 반응하고 따라서 더 일찍 더 정확하게 바닥을 식별 할 수 있으며 바닥 역전 거래에 앞서 있습니다.

또한 이 전략은 트렌드 추적 및 리버스 트레이딩의 장점을 결합합니다. 불확실한 시장 조건에서 리버스 트레이딩에서 이익을 얻을 수 있습니다. 명확한 황소 시장에서는 트렌드를 따라갈 수 있습니다.

위험 분석

이 전략의 주요 위험은 바닥 식별의 정확성이 100% 보장 될 수 없다는 것입니다. 단기간에 시장에서 엄청난 비합리 변동이 발생할 수 있습니다. 바닥이 더 낮아지면 큰 스톱 로스 위험이 발생할 수 있습니다.

또한, 다른 시간 프레임 사이에 오차가 발생할 수 있습니다. 더 높은 시간 프레임에서 신호가 늦어지면 거래 손실로 이어질 수 있습니다.

위험을 제어하기 위해 이 전략은 상대적으로 보수적인 스톱 로스 메커니즘을 채택하고, 수익을 대량으로 취하고, 점진적으로 수익을 최적화한다. 또한, 적응성 RSI의 매개 변수는 바닥 판단의 정확성을 최적화하기 위해 조정될 수 있다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 시장 바닥 판단의 정확성을 향상시키기 위해 적응성 RSI의 매개 변수를 최적화하십시오. 다른 기간 매개 변수를 테스트 할 수 있습니다.

  2. 부피 지표와 결합하는 것과 같은 잘못된 신호를 피하기 위해 확인을 위해 다른 지표를 추가합니다.

  3. 스톱 로스 메커니즘을 최적화하여 더 넓은 스톱 로스 범위를 허용하고 동시에 더 많은 트렌드 이윤을 확보하기 위해 좋은 리스크-어워드 비율을 보장합니다.

  4. 더 큰 규모에서 신호 신뢰성을 보장하기 위해 시간 프레임 선택을 최적화하십시오. 매일, 주간 또는 더 높은 시간 프레임이 테스트 될 수 있습니다.

  5. 이 전략을 다른 암호화폐 제품에서 테스트하고 가장 좋은 제품을 선택하세요.

요약

이 스마트 양적 바닥 역전 거래 전략은 적응성 RSI 지표와 멀티 타임프레임 기술을 사용하여 잠재적 인 단기 바닥을 식별합니다. 역전 성격은 불확실한 시장 조건에서 과도한 이익을 가능하게하며 명확한 추세를 따라갈 수 있습니다. 지속적인 최적화로이 전략은 더 신뢰할 수있는 거래 신호를 생성하고 장기적으로 안정적인 이익을 얻을 수 있습니다.


/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy(title = "Low Scanner strategy crypto", overlay = false, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
leng=1
p1=close[1]
min=input(10)
len55 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
tf3 = input("60", type=input.resolution)
ti = change( time(tf3) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
min1 =input(1)
len100 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min1 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange
plot(zx,color=col,linewidth=1)
//

tf10 = input("60", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(24, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)


a = security(syminfo.tickerid, tf10, hma(close, length))
b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


//plot(linear_reg, color=color.blue, title="LR", linewidth=3)

buy=crossover(linear_reg, b) 
sell=crossunder(linear_reg, b) 
//
l = crossover(zx,0) or buy
        
if l 
    strategy.entry("buy", strategy.long)

per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=10, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=1, minval=0.01)
tp2=input(title=" Take profit2", defval=2, minval=0.01)
tp3=input(title=" Take profit3", defval=3, minval=0.01)
tp4=input(title=" Take profit4", defval=5, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)


더 많은