리소스 로딩... 로딩...

동적 스톱 로스 및 영업 취득 볼링거 밴드 전략

저자:차오장, 날짜: 2024-05-17 15:11:50
태그:SMA

img

전반적인 설명

이 전략은 볼링거 밴드 기반의 거래 전략이다. 그것은 볼링거 밴드를 사용하여 구매 및 판매 신호를 생성하고 동적으로 스톱 로스 및 영업 수준을 설정합니다. 가격은 하위 밴드 아래로 넘어가면 구매 신호가 생성되며 가격이 상위 밴드 위에 넘어가면 판매 신호가 생성됩니다. 스톱 로스 레벨은 지난 기간 동안 가장 낮거나 가장 높은 가격에 설정되며, 영업 수준은 새로운 신호에 따라 동적으로 조정됩니다.

전략 원칙

  1. 상부, 중부, 하부 볼링거 밴드를 계산합니다.
  2. 판매할 때, 지난 기간 동안 가장 높은 가격에 스톱 로스 수준을 설정하고 아직 이윤을 설정하지 마십시오.
  3. 새로운 구매 또는 판매 신호가 나타나면 수익을 취하는 레벨을 빈 상태로 재설정합니다.

전략적 장점

  1. 볼링거 밴드는 시장 변동성을 효과적으로 파악할 수 있는 성숙하고 널리 사용되는 기술 지표입니다.
  2. 동적 스톱 로스 및 취득 설정은 다른 시장 조건에 적응하여 전략의 적응력을 향상시킬 수 있습니다.
  3. 전략 논리는 명확하고 이해하기 쉽고 구현하기 쉽습니다.

전략 위험

  1. 스톱 로스 레벨의 설정은 역사적 데이터에 기초하고 있으며 미래의 시장 변화에 적응하지 않을 수 있습니다.
  2. 전략은 트렌드 방향에 대한 판단이 부족하고 강한 트렌드 시장에서 기회를 놓칠 수 있습니다.

전략 최적화 방향

  1. 스톱 로스 및 수익 수치를 설정하는 방법을 최적화하여 ATR과 같은 변동성 지표를 사용하여 시장 변화에 더 역동적이고 적응 할 수 있습니다.
  2. 시그널의 신뢰성을 높이기 위해 거래량 및 변동성 등 구매 및 판매 신호에 추가 필터링 조건을 추가합니다.
  3. 가장 좋은 매개 변수 조합을 찾기 위해 볼링거 밴드의 길이와 표준편차 곱하기 등 매개 변수를 최적화합니다.

요약


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands Strategy", overlay=true)

// Bollinger Bands settings
length = 20
src = close
mult = 2.0

// Calculate Bollinger Bands
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Plot Bollinger Bands
plot(basis, color=color.blue, title="Middle Band")
plot(upper, color=color.red, title="Upper Band")
plot(lower, color=color.green, title="Lower Band")

// Trade logic
// Buy when the price crosses below the lower Bollinger Band
buySignal = ta.crossover(lower, src)
// Sell when the price crosses above the upper Bollinger Band
sellSignal = ta.crossover(src, upper)

// Define stop loss and take profit levels
var float stopLoss = na
var float takeProfit = na

// Calculate stop loss and take profit levels
if (buySignal)
    stopLoss := ta.lowest(low, length)
    takeProfit := na
if (sellSignal)
    stopLoss := ta.highest(high, length)
    takeProfit := na

// Update take profit on new signals
if (buySignal)
    takeProfit := na
if (sellSignal)
    takeProfit := na

// Execute trades
if (buySignal)
    strategy.entry("Buy", strategy.long, stop=stopLoss, limit=takeProfit)

if (sellSignal)
    strategy.entry("Sell", strategy.short, stop=stopLoss, limit=takeProfit)

// Plot signals on chart
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", title="Buy Signal")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal")

// Alert conditions
alertcondition(buySignal, title="Buy Alert", message="Buy Signal detected")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal detected")

관련

더 많은