이 전략은 볼링거 밴드 지표에 기초한다. 종료 가격이 상단위권 이상으로 넘어갈 때 긴 포지션에 들어가고 종료 가격이 하단위권 아래로 넘어갈 때 짧은 포지션에 들어간다. 긴 포지션의 출구 조건은 가격이 중단위권 아래로 떨어질 때이며, 짧은 포지션의 출구 조건은 가격이 중단위권 이상으로 넘어갈 때이다. 전략은 입출과 출출의 방향과 타이밍을 결정하기 위해 볼링거 밴드의 상단 및 하단위권에 대한 가격의 위치를 사용합니다.
이 전략은 볼링거 밴드를 사용하여 트렌드 시장을 포착하는 고전적인 트렌드-추천 전략이다. 전략 논리는 명확하고 이점은 분명하지만 특정 위험도 있습니다. 스톱-러스, 수익 취득, 포지션 관리 및 엔트리 필터를 최적화함으로써 전략 성능을 향상시키고 적응력을 향상시킬 수 있습니다. 그러나 모든 전략에는 한계가 있으며 실제 시장 조건과 함께 유연하게 적용되어야합니다.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0 // This displays the traditional Bollinger Bands, the difference is // that the 1st and 2nd StdDev are outlined with two colors and two // different levels, one for each Standard Deviation strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true) src = input(close) length = input.int(20, minval=1, title = "Length") mult = input.float(2.0, minval=0.001, maxval=50, title = "Multiplier") basis = ta.sma(src, length) dev = ta.stdev(src, length) dev2 = mult * dev upper1 = basis + dev lower1 = basis - dev upper2 = basis + dev2 lower2 = basis - dev2 // Strategy long_condition = ta.crossover(close, upper1) short_condition = ta.crossunder(close, lower1) if (long_condition) strategy.entry("Long", strategy.long) if (short_condition) strategy.entry("Short", strategy.short) // Exit conditions exit_long_condition = ta.crossunder(close, basis) exit_short_condition = ta.crossover(close, basis) if (exit_long_condition) strategy.close("Long") if (exit_short_condition) strategy.close("Short") colorBasis = src >= basis ? color.blue : color.orange pBasis = plot(basis, linewidth=2, color=colorBasis) pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles) pUpper2 = plot(upper2, color=color.new(color.blue, 0)) pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles) pLower2 = plot(lower2, color=color.new(color.orange, 0)) fill(pBasis, pUpper2, color=color.new(color.blue, 80)) fill(pUpper1, pUpper2, color=color.new(color.blue, 80)) fill(pBasis, pLower2, color=color.new(color.orange, 80)) fill(pLower1, pLower2, color=color.new(color.orange, 80))