볼린저 밴드 스윙 트레이딩 전략


생성 날짜: 2024-02-21 14:39:14 마지막으로 수정됨: 2024-02-21 14:39:14
복사: 0 클릭수: 578
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드 스윙 트레이딩 전략

개요

브레이킹 부린 띠 흔들림 거래 전략은 시장이 흔들림 상태에 있을 때 거래하는 전략이다. 이 전략은 부린 띠 지표를 사용하여 시장의 흔들림 상태를 판단하고, 가격이 부린 띠를 만져 하향 궤도에 올랐을 때 거래 신호를 발산한다. 전통적인 추세를 따르는 전략과는 달리, 이 전략은 수평 정리된 시장 환경에 더 적합하다.

전략 원칙

이 전략은 주로 부린띠 지표에 기반하여 구현된다. 부린띠는 중간, 상단, 하단으로 구성된다. 가격이 상단 또는 하단으로 가까워지면 시장이 지나치게 부진하거나 하락하는 것을 나타냅니다. 이때 반전이 일어날 가능성이 높습니다.

구체적으로, 이 전략은 먼저 DMI 지표를 사용하여 시장이 흔들리는 상태에 있는지 판단한다. + DMI와 - DMI의 차이는 20보다 작으면 시장이 가로 변동 상태에 있다고 간주한다. 이 조건에서, 가격이 상단 궤도를 통과 할 때 더 많이하고, 가격이 하단 궤도를 돌파 할 때 공백한다.

전략적 이점

트렌드 따라하는 전략에 비해, 이 전략은 수평 변동의 시장 환경에 더 적합하며, 추세를 따라가는 데 이자를 잃지 않습니다. 전통적인 변동 거래 전략에 비해, 이 전략은 부린 밴드 지표를 사용하여 시장의 과매매 상황을 더 정확하게 판단하여 입금 가능성을 높인다.

전략적 위험

이 전략은 주로 부린带 판단 시장의 흔들림과 과매매 과매매 상황을 의존한다. 부린带 분산 또는 수축이 비정상적일 때, 잘못된 신호를 초래한다. 또한, 중단 지점 가까이, 단일 중지 손실이 더 클 수 있다. 자본 관리 최적화 중지 전략을 채택하는 것이 권장된다.

전략 최적화 방향

입시 신호를 필터링하는 다른 지표와 결합하여 입시 정확도를 높이는 것을 고려할 수 있습니다. 또한, 단독으로 큰 손실을 피하기 위해 손실을 막는 전략을 최적화하는 것이 중요합니다. 또한, 저시장 코인과 같은 전략에 더 적합한 거래 품종을 선택할 수 있습니다.

요약하다

이 전략은 전체적으로 흔들리는 시장에 적합하며, 트렌드 전략이 실패했을 때 사용할 수 있습니다. 그러나 시장 상태를 판단하는 지표에 의존하는 효과는 여전히 최적화 할 여지가 있습니다. 다중 지표 조합, 재원 관리 등의 방법을 통해 이 전략을 더 개선하여 효과는 더 안정적으로 우수하게 만들 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works on ETHUSD 3h, 1h, 2h, 4h

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 12,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 31,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true

[pos_dm, neg_dm, adx] = dmi(14, 14)


lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

sideways = (abs(pos_dm - neg_dm) < 20)



//Stop_loss= ((input (3))/100)
//Take_profit= ((input (2))/100)

//longStopPrice  = strategy.position_avg_price * (1 - Stop_loss)
//longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

//closeLong = close < longStopPrice or close > longTakeProfit or StopRSI


//Entry 
strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window())


//Exit
strategy.close("long", when = (crossunder(close, upper)))