
볼링거 띠 돌파구와 변동률 필터링 전략은 볼링거 띠 지표에 기반한 거래 전략이다. 그것은 볼링거를 사용하여 이동 평균에 대한 가격의 위치와 변동성을 판단하여 포지션을 개시하고 포지션을 결정한다. 이 전략의 특징 중 하나는 연속적인 K 선의 폭락을 감지하여 시장의 변동성이 큰 시간에 입문 거래를 피하기 위해 변동률 필터를 사용하는 것이다. 또한 이 전략은 수익을 보호하고 위험을 제어하기 위해 중지 및 손실 조건을 설정한다.
이 전략의 핵심은 폴링거 대역 지표를 계산하는 것이다. 폴링거 대역은 세 개의 선으로 구성된다. 중도선은 간단한 이동 평균이며, 상도선과 하도선은 각각 중도선의 기초에 일정 표준 차이를 더하고 줄인다. 표준 차이의 크기는 파라미터 mult에 의해 제어된다.
전략의 개시 조건은 종전 가격에 대한 포링그레드 위치에 기초한다. 거래 방향이 더하기 (tradeDirection> = 0) 로 설정되어 있고, 종전 가격이 하향으로 떨어지는 비율이 (lower_breakout_pct) 있다면, 더 많은 포지션을 개시한다. 거래 방향이 적기 (tradeDirection<= 0) 로 설정되어 있고, 종전 가격이 궤도를 돌파하는 비율이 (upper_breakout_pct) 있다면, 공백 포지션을 개시한다. 여기서의 돌파 비율 변수는 가격이 포링그레드를 약간 돌파하기 전에 포지션을 개시하여 추세를 확인한다.
다른 한편으로, 만약 연속적으로 두 개의 K 선의 폭락이 예상된 변동률 값 ((Volatility) 을 초과한다면, 현재 시장의 변동성이 크다고 판단하여, 전략은 새로운 포지션을 열지 않을 것이다. 이 변동률 필터는 어느 정도 급격한 변동성이 있는 시장 환경을 피할 수 있다.
평지 포지션의 경우, 다중 포지션의 종결 가격이 상반기 근처에 도달하면*long_win_pct), 또는 공백 포지션의 종료 가격이 하위 궤도 근처에 닿았을 때*short_win_pct), 전략은 상응하는 포지션을 상쇄하여 이익을 얻습니다. 또한, 포지션의 부동 손실이 예상 최대 철수 비율 ((max_drawdown_percent) 을 초과하면 전략은 상쇄 상쇄됩니다.
볼링 띠는 오랜 기간 동안 널리 사용되고 있는 기술적인 지표로, 이동 평균과 가격의 변동성에 대한 정보를 통합하고 있다. 볼링 띠를 사용하여 거래 전략을 수립하고, 추세와 변동의 변화를 포착할 수 있다.
이 전략은 동시에 오픈오프와 오픈오피스 논리를 포함하고 있으며, 빈 양방향 시장에서 유연하게 기회를 잡을 수 있다. 폴링거带 돌파점의 설정은 전략의 진입점을 더 확정적으로 만든다.
변동율 필터는 급격히 변동하는 시장에서 포지션을 개시하는 것을 방지하고, 어느 정도 자주 거래와 레버리지의 위험을 감소시킵니다.
전략은 스톱 스과 스로스 메커니즘을 채택하여 포지션을 적극적으로 제어할 수 있으며, 가격이 중요한 위치로 회귀했을 때 포지션을 청산한다. 이것은 이익을 보호하고 회귀를 제어하는 데 도움이 된다.
볼링거 띠는 본질적으로 뒤떨어진 지표이며, 시장의 반응에 약간의 뒤처짐이 있습니다. 트렌드 전환이나 방향 변화의 중요한 순간에 전략은 최적의 입문 시점을 놓칠 수 있습니다.
전략의 매개 변수 설정은 서로 다른 시장 조건에 반드시 적용되지는 않는다. 예를 들어, 변동률 필터의 마이너스 설정은 트렌드형과 충격형 상황에서 차이가 필요할 수 있다. 고정 매개 변수는 전략이 특정 상황에서 포지션을 열 수 없거나 포지션을 너무 자주 열 수 있게 할 수 있다.
스톱로스 조치가 있음에도 불구하고, 시장에서 폭격이 발생했을 때, 전략은 기본 가격으로 거래하지 않을 수 있으며, 더 큰 손실을 초래할 수 있습니다.
이 전략은 포지션을 개시한 후 이동한 스톱을 설정하지 않거나 스톱을 추적하지 않았기 때문에 수익의 일부를 회전시킬 수 있다.
전략의 필터링 조건으로 ATR, 트렌드 지표, 변동률 지표와 같은 더 많은 기술 지표 또는 시장 상태 판단을 도입하는 것이 고려 될 수 있으며, 포지션의 품질과 타이밍을 향상시킬 수 있습니다.
오동율 필터에 대해서는, 동적인 값을 적용하여, 다른 품종이나 다른 시간 주기에 따라 자율적으로 조정하여, 필터링 효과를 향상시킬 수 있다.
스톱 스톱의 경우, 이동 스톱 또는 스톱을 추적하는 메커니즘을 도입하여 트렌드가 지속될 때 전략이 포지션을 유지하도록 할 수 있으며, 조기 평점 포지션을 설정하는 것은 고려할 수 있습니다. 또한 다른 스톱 스톱 비율을 설정하여 위험 수익률을 최적화 할 수 있습니다.
포지션 관리를 더욱 최적화하여, 트렌드 강도, 변동률, 위험도 등의 지표에 따라 포지션 개설 비율을 동적으로 조정하고, 철회 제어할 수 있다. 또한, 포지션을 추가하거나, 포지션을 줄이는 등의 작업을 통해 자금을 더 잘 활용할 수 있다.
볼링거 띠의 돌파구와 변동률 필터링 전략은 가격 위치와 변동성의 볼링거 띠의 도면을 활용하여 양방향 거래 전략을 구성한다. 이 전략의 독특한 점은 변동률 필터가 급격한 변동 시장의 거래를 피하고, 더 간단한 스톱 손실 조건을 설정한다는 것이다. 전체적으로 볼 때, 이 전략은 포지션 개시 논리와 위험 통제를 더 완벽하게 포함하고 있지만, 시장 변화, 매개 변수 적용성, 손실 중단 효과 등에 대한 추가적인 최적화의 여지가 있다.
/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )
// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")
// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower
// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open)
// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility
// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1
// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
strategy.entry("Long", strategy.long)
highestPriceSinceOpen := close
profitableDrawbackCount := 0
if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
strategy.entry("Short", strategy.short)
lowestPriceSinceOpen := close
profitableDrawbackCount := 0
if strategy.position_size > 0 and close > upper - area * long_win_pct
strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
strategy.close("Short", comment = "Take Profit")
// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
strategy.close("Short", comment = "Drawdown Stop Loss")