
이 전략은 부린 밴드 (Bollinger Bands) 를 기반으로 한 고급 수량 거래 시스템으로, 동적 스톱 스톱 손실 메커니즘을 결합합니다. 전략의 핵심은 부린 밴드 (Bollinger Bands) 의 하향 경로를 통해 시장 동력을 포착하는 것이며, 점수 (Pips) 를 기반으로 한 스톱 스톱 손실을 도입하여 위험을 관리합니다. 이 전략은 다양한 거래 품종에 적합하며, 파라미터를 최적화하여 다른 시장 환경에 적응 할 수 있습니다.
이 전략은 다음과 같은 핵심 원칙에 기초하고 있습니다.
이것은 잘 설계된 양적 거래 전략으로, 브린 띠의 돌파구를 통해 시장 기회를 포착하고, 과학적 위험 관리 시스템으로 보완된다. 전략은 좋은 확장성과 적응성을 가지고 있으며, 제안된 최적화 방향에 의해 그 성능을 더욱 향상시킬 수 있다. 중장기 경향 거래에 관심이 있는 투자자에게 적합하다.
/*backtest
start: 2022-02-09 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced Bollinger Bands Strategy with SL/TP", overlay=true,
slippage=2)
// 入力パラメータの改善
length = input.int(20, "SMA Length", minval=1)
mult = input.float(2.0, "Standard Deviation Multiplier", minval=0.001, maxval=50)
enableLong = input.bool(true, "Enable Long Positions")
enableShort = input.bool(true, "Enable Short Positions")
pipValue = input.float(0.0001, "Pip Value", step=0.00001)
slPips = input.float(10, "Stop Loss (Pips)", minval=0)
tpPips = input.float(20, "Take Profit (Pips)", minval=0)
showBands = input.bool(true, "Show Bollinger Bands")
showSignals = input.bool(true, "Show Entry Signals")
// ボリンジャーバンド計算
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
// 可視化
plot(showBands ? basis : na, "Basis", color=color.blue)
u = plot(showBands ? upper : na, "Upper", color=color.red)
l = plot(showBands ? lower : na, "Lower", color=color.green)
fill(u, l, color=color.new(color.purple, 90))
// エントリー条件の改善
longCondition = ta.crossover(close, lower) and close > lower and enableLong
shortCondition = ta.crossunder(close, upper) and close < upper and enableShort
// ポジション管理
calcSlPrice(price, isLong) => isLong ? price - slPips * pipValue : price + slPips * pipValue
calcTpPrice(price, isLong) => isLong ? price + tpPips * pipValue : price - tpPips * pipValue
// エントリー&エグジットロジック
if longCondition
strategy.entry("Long", strategy.long, limit=lower)
strategy.exit("Long Exit", "Long",
stop=calcSlPrice(lower, true),
limit=calcTpPrice(lower, true))
if shortCondition
strategy.entry("Short", strategy.short, limit=upper)
strategy.exit("Short Exit", "Short",
stop=calcSlPrice(upper, false),
limit=calcTpPrice(upper, false))
// シグナル可視化
plotshape(showSignals and longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(showSignals and shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)