
이 전략은 부린띠 지표에 기초하여, 종결 가격이 상향 궤도를 돌파할 때 다단위 포지션을 개설하고, 종결 가격이 하향 궤도를 돌파할 때 공백 포지션을 개설한다. 다단위 포지션은 가격이 중도 궤도를 돌파하고, 공백 포지션은 가격이 중도 궤도를 돌파하는 것을 조건으로 한다. 이 전략은 부린띠 상향 하향 궤도에 대한 가격에 대한 경향 방향을 판단하고, 공백 포지션을 개설하는 시간을 이용한다.
이 전략은 전형적인 트렌드 추적형 전략으로, 브린을 통해 트렌드 상황을 포착한다. 전략 논리는 명확하고, 장점은 분명하지만, 또한 약간의 위험이 존재한다. 전략의 성능을 개선하고, 적응력을 높일 수 있는 방법은, 스톱 로드, 포지션 관리 및 포지션 개설 필터 등을 최적화하는 것이다. 그러나 모든 전략에는 한계가 있으며, 실제 시장 상황과 결합하여 유연하게 적용되어야 한다.
/*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))