더블BB 지표 RSI 양적 거래 전략


생성 날짜: 2024-01-29 10:33:43 마지막으로 수정됨: 2024-01-29 10:33:43
복사: 0 클릭수: 785
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블BB 지표 RSI 양적 거래 전략

개요

이 전략은 볼린저 밴드 지표와 상대적으로 약한 지표 (RSI) 지표에 기반한 양적 거래 전략이다. 이 전략은 기계 학습 방법을 적용하여 파이썬 언어를 통해 1 년의 역사 데이터를 재검토하고 최적화하여 최적의 파라미터 조합을 찾았다.

전략 원칙

이 전략의 거래 신호는 이중 볼린저 밴드 (Bollinger Bands) 및 RSI 지표의 통합 판단에서 비롯된다. 볼린저 밴드 (Bollinger Bands) 지표는 가격의 표준 차등에 따라 계산된 변동 채널이다. 가격이 변동 채널에 접근하거나 접촉할 때 거래 신호가 발생한다.

구체적으로 말해서, 상쇄 가격이 1.0 표준 격차 이하로 경로를 벗어나면 구매 신호가 발생하고 RSI가 42보다 크면 구매 신호가 발생한다. 상쇄 가격이 1.0 표준 격차 이하로 경로를 벗어나면 판매 신호가 발생하고 RSI가 70보다 크면 판매 신호가 발생한다. 또한, 이 전략은 입점 및 상쇄 평소에 각각 BB와 RSI의 두 개의 파라미터를 설정한다.

우위 분석

이 전략의 가장 큰 장점은 매개 변수의 정확도이다. 기계 학습 방법을 통해 각 매개 변수는 전체적으로 재검토되어 최적의 샤르페 비율을 얻는다. 이것은 전략의 수익률을 보장하고 위험을 통제합니다. 또한, 이중 지표 조합은 신호의 정확도와 승률을 향상시킵니다.

위험 분석

이 전략의 위험은 주로 중지점의 설정에서 비롯된다. 중지점의 설정이 너무 크면 손실을 효과적으로 제어할 수 없다. 또한, 중지점과 수수료, 거래 슬라이드 등 다른 거래 비용의 계산이 잘못되면 위험도 증가한다. 위험을 줄이기 위해, 중지폭 파라미터를 조정하고 거래 주파수를 줄이고, 동시에 합리적인 중지 위치를 계산하는 것이 좋습니다.

최적화 방향

이 전략에는 추가적인 최적화 공간이 있습니다. 예를 들어, 볼린저 밴드의 길이 변수를 변경하거나 RSI의 초고가 초고가 되는 경계를 조정할 수 있습니다. 또한 다른 지표를 도입하여 다중 지표 포트폴리오를 구성 할 수 있습니다. 이것은 전략의 수익 공간과 안정성을 향상시킬 수 있습니다.

요약하다

이 전략은 듀얼 BB 지표와 RSI 지표를 결합하여 기계 학습 방법을 통해 최적의 매개 변수를 얻으며 높은 수익률과 제어 가능한 위험 수준을 달성합니다. 이 전략은 지표 포지션 판단과 매개 변수 최적화 두 가지 측면에서 장점을 가지고 있습니다. 지속적인 개선으로 이 전략은 우수한 수량 거래 전략이 될 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © Bunghole 2020
strategy(overlay=true, shorttitle="Flawless Victory Strategy" )

// Stoploss and Profits Inputs
v1 = input(true, title="Version 1 - Doesn't Use SL/TP")
v2 = input(false, title="Version 2 - Uses SL/TP")
stoploss_input = input(6.604, title='Stop Loss %', type=input.float, minval=0.01)/100
takeprofit_input = input(2.328, title='Take Profit %', type=input.float, minval=0.01)/100
stoploss_level = strategy.position_avg_price * (1 - stoploss_input)
takeprofit_level = strategy.position_avg_price * (1 + takeprofit_input)

//SL & TP Chart Plots
plot(v2 and stoploss_input and stoploss_level ? stoploss_level: na, color=color.red, style=plot.style_linebr, linewidth=2, title="Stoploss")
plot(v2 and takeprofit_input ? takeprofit_level: na, color=color.green, style=plot.style_linebr, linewidth=2, title="Profit")

// Bollinger Bands 1
length = 20
src1 = close
mult = 1.0
basis = sma(src1, length)
dev = mult * stdev(src1, length)
upper = basis + dev
lower = basis - dev

// Bollinger Bands 2
length2 = 17
src2 = close
mult2 = 1.0
basis2 = sma(src1, length2)
dev2 = mult2 * stdev(src2, length2)
upper2 = basis2 + dev2
lower2 = basis2 - dev2

// RSI
len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)

// Strategy Parameters
RSILL= 42
RSIUL= 70
RSILL2= 42
RSIUL2= 76

rsiBuySignal = rsi > RSILL
rsiSellSignal = rsi > RSIUL
rsiBuySignal2 = rsi > RSILL2
rsiSellSignal2 = rsi > RSIUL2

BBBuySignal = src < lower
BBSellSignal = src > upper
BBBuySignal2 = src2 < lower2
BBSellSignal2 = src2 > upper2

// Strategy Long Signals
Buy = rsiBuySignal and BBBuySignal
Sell = rsiSellSignal and BBSellSignal
Buy2 = rsiBuySignal2 and BBBuySignal2
Sell2 = rsiSellSignal2 and BBSellSignal2

if v1 == true
    strategy.entry("Long", strategy.long, when = Buy, alert_message = "v1 - Buy Signal!")
    strategy.close("Long", when = Sell, alert_message = "v1 - Sell Signal!")

if v2 == true
    strategy.entry("Long", strategy.long, when = Buy2, alert_message = "v2 - Buy Signal!")
    strategy.close("Long", when = Sell2, alert_message = "v2 - Sell Signal!")
    strategy.exit("Stoploss/TP", "Long", stop = stoploss_level, limit = takeprofit_level)