볼링거 밴드 기반의 중장기 양적 거래 전략

저자:차오장, 날짜: 2023-09-14 20:09:13
태그:

이 문서에서는 볼링거 밴드를 사용하는 중장기 양적 거래 전략을 자세히 설명합니다. 볼링거 밴드를 통해 가격 브레이크를 식별하여 거래 신호를 생성합니다.

I. 전략 논리

이 전략은 주로 다음과 같은 볼링거 밴드 지표를 사용합니다.

  1. 특정 기간 동안의 기본값으로 이동 중위값을 계산합니다.

  2. 가격 표준편차를 계산하고 범위를 인수분해합니다.

  3. 중간 ± 범위는 상위와 하위 대역을 구성합니다.

  4. 가격 간격을 넘어서면 거래 신호가 생성됩니다.

구체적인 거래 논리는 다음과 같습니다.

가격이 하위 범위를 넘어가면, 구매 신호가 생성되어 긴 포지션을 취합니다.

가격이 상단 범위를 넘으면, 판매 신호가 생성되어 단위 포지션을 취합니다.

이윤을 취하고 손실을 멈추는 것은 수익과 손실을 차단하기 위해 고정된 비율로 설정됩니다.

전체적으로, 이 전략은 볼린거 밴드의 가격 파장을 감지함으로써 중장기 동향을 파악합니다.

II. 전략의 장점

이 전략의 주요 장점은 다음과 같습니다.

첫째, 볼링거 밴드는 중장기 동향을 파악하기 위해 가격 파업과 역전을 식별할 수 있습니다.

둘째, 직접적인 스톱 로스 및 수익 설정은 신중한 돈 관리에 도움이 됩니다.

마지막으로 간단하고 명확한 규칙은 이 전략을 쉽게 구현하고 최적화 할 수 있습니다.

III. 잠재적 위험

그러나 다음과 같은 위험 요소가 주목되어야합니다.

첫째, 대역은 안정적인 신호를 위해 정확하게 최적화되어야 합니다.

두 번째로, 너무 작은 스톱 로즈로 위험은 적고, 너무 큰 스톱 로즈로 수익은 적고, 너무 큰 스톱 로즈로 위험은 증가합니다.

마지막으로 과도하게 빈번한 거래는 방지되어야 합니다.

IV. 요약

요약하자면,이 기사는 트렌드 추적을 위해 볼링거 밴드를 사용하는 중장기 양적 거래 전략을 설명했습니다. 그것은 중장기간에 대한 가격 트렌드를 추적 할 수 있지만 밴드 간격과 스톱 로스 수준을 정밀 조정해야합니다. 전반적으로 비교적 간단하고 직관적인 트렌드 추적 접근 방식을 제공합니다.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//------------------------------------
//
// 『おすすめストラテジーSS1』
// 『BitMEX XBTUSD 30分足向け中長期用ストラテジー』
//  本番用ストラテジーファイル
//
//
//
//------------------------------------
//【説明】
// 『おすすめストラテジーSS1』のPineスクリプトです。
//------------------------------------
 
//@version=3
// strategy(title = "『おすすめストラテジーSS1』", shorttitle="Strategy1", initial_capital=1200000, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.05, overlay=true)
 
 
//------------------------------------
//
//ストラテジーロジック
//
//------------------------------------
 
 
source = close
 
length = input(51, minval = 1, title = "移動平均")
mult = input(3.01, minval = 0.001,step=0.01, maxval = 10, title = "マルチ")
 
Rikaku = input(14.2, minval = 0.1, step=0.1,maxval = 100, title = "利確(%)")
Songiri = input(99, minval = 0.1, maxval = 100, title = "損切(%)")
 
base = sma(source, length)
range = mult * stdev(source, length)
 
upper = base + range
lower = base - range
 
short_cond = crossover(source, lower)
long_cond = crossunder(source, upper)
 
 
cl = 0.0
cl := na(cl[1]) ? sma(source, length) : (cl[1] * (length - 1) + source) / length
 
plot(cl, color=black)
 
up_plot = plot(upper, color=blue)
low_plot = plot(lower, color=red)
 
fill(up_plot, low_plot,color=#009900)
 
//------------------------------------
//
//オーダー処理
//
//------------------------------------
 
 
if (long_cond)
 
	strategy.entry("Long_Entry", strategy.long, oca_name="BollingerBands", comment="Long")
 
	//BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
	//strategy.exit("LE Exit", "BBandLE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
	strategy.exit("Long_Exit", "Long_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="LongClose")
 
if (short_cond)
 
	strategy.entry("Short_Entry", strategy.short, oca_name="BollingerBands",  comment="Short")
 
    //BitFlyerのようなJPY建ての場合は以下のコードを使います。他の通貨ペアにする場合も1ティックが異なるため桁数の変更が必要です。
    //strategy.exit("SE Exit", "BBandSE", profit = close*(Rikaku/100)*100, loss = close*(Songiri/100)*100, comment="Close")
    strategy.exit("Short_Exit", "Short_Entry", profit = close*(Rikaku/100)*10, loss = close*(Songiri/100)*10, comment="ShortClose")

더 많은