EMA와 Bollinger Bands Breakout 전략

EMA BB
생성 날짜: 2024-06-03 16:23:06 마지막으로 수정됨: 2024-06-03 16:23:06
복사: 2 클릭수: 961
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

EMA와 Bollinger Bands Breakout 전략

개요

이 전략은 5일 지수 이동 평균 ((EMA) 와 부린 밴드 ((BB) 를 사용하여 시장의 잠재적인 거래 기회를 식별한다. 가격이 부린 밴드를 뚫고 궤도에 오르거나 내려가 특정 조건을 충족하면 전략은 구매 또는 판매 신호를 발생시킨다. 이 전략은 시장의 눈에 띄는 가격 변동을 포착하는 것을 목표로 하며, 위험 관리 및 수익을 극대화하기 위해 스톱 스로프와 목표 가격을 사용합니다.

전략 원칙

이 전략의 핵심은 시장의 추세와 변동성을 판단하기 위해 5일 EMA와 부린을 이용하는 것이다. 가격이 부린대를 뚫고 궤도에 오르면, 전략은 판매 신호를 발생시킨다. 반대로, 가격이 부린대를 뚫고 궤도에 오르면, 전략은 구매 신호를 발생시킨다.

일단 입시 거래가 되면, 전략은 중지 손실과 목표 가격을 설정한다. 입시 가격의 반대 방향으로 중지 손실을 배치하여 잠재적 인 손실을 제한한다. 목표 가격은 고정된 포인트 (예: 1000 포인트) 에 따라 계산되어 예상 수익을 잠금한다. 가격이 중지 손실 또는 목표 가격을 만지면, 전략은 평지 상태에서 거래를 종료한다.

전략적 이점

  1. 또한, EMA와 브린 띠를 활용하여 시장의 추세와 변동성을 보다 포괄적으로 평가할 수 있습니다.
  2. 명확한 입시 조건은 높은 확률의 거래 기회를 식별하는 데 도움이 됩니다.
  3. 스톱로스 및 타겟 가격을 설정하여 위험을 효과적으로 관리하고 수익을 잠금합니다.
  4. 전략의 논리는 명확하고, 이해하기 쉽고, 실행하기 쉽다.

전략적 위험

  1. 시장의 변동성이 커지면, 브린 벨트는 과도한 거래와 수수료 증가로 이어지는 빈번한 거래 신호를 생성할 수 있다.
  2. 시장의 불안정이나 추세가 불명확할 때 이 전략은 잘못된 신호를 만들어 손실을 초래할 수 있다.
  3. 고정된 스톱로즈와 타겟 가격은 다양한 시장 조건에 적응할 수 없으며, 전략의 유연성을 제한한다.

전략 최적화 방향

  1. 전략의 적응성을 높이기 위해 시장의 변동성과 트렌드 강도에 따라 동적으로 조정되는 적응된 정지와 목표 가격을 사용하는 것을 고려하십시오.
  2. 다른 기술 지표 또는 신호 필터링 메커니즘을 도입하십시오. 상대적으로 강한 지수 ((RSI) 또는 평균 실제 파장 ((ATR)) 과 같은 추세를 확인하고 가짜 신호를 줄이기 위해.
  3. 다른 시장 특성 및 거래 품종에 맞게 EMA의 주기, 브린 띠의 표준 격차 배수 등의 파라미터를 최적화하십시오.

요약하다

EMA와 브린 벨트 브레이크 전략은 시장의 눈에 띄는 가격 변동을 포착하기 위해 두 가지 일반적으로 사용되는 기술 지표를 활용합니다. 이 전략은 명확한 진입 조건, 위험 관리 조치 및 수익 목표가 있으며 이해하기 쉽고 실행됩니다. 그러나 전략의 성과는 시장의 변동성과 흐릿한 추세에 영향을 미칠 수 있습니다. 적응 변수, 신호 필터링 메커니즘 및 변수 최적화를 도입함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nifty Bank Strategy", overlay=true)

// Parameters
lengthEMA = 5
lengthBB = 20
multBB = 1.5
targetPoints = 1000

// Calculate 5-day EMA
ema5 = ta.ema(close, lengthEMA)

// Calculate Bollinger Bands (length 20, multiplier 1.5)
basis = ta.sma(close, lengthBB)
dev = multBB * ta.stdev(close, lengthBB)
upperBB = basis + dev
lowerBB = basis - dev

// Define strategy variables
var float entryPrice = na
var float stopLoss = na
var float targetPrice = na
var bool inTrade = false
var bool isLong = false
var float triggerHigh = na
var float triggerLow = na
var float triggerClose = na

if not inTrade
    // Short Entry Trigger Condition
    if low > ema5 and low > upperBB and high > upperBB
        triggerLow := low
        triggerHigh := high
        triggerClose := close
        label.new(bar_index, high, "Waiting for short trigger", color=color.yellow)
    // Long Entry Trigger Condition
    else if high < ema5 and high < lowerBB and low < lowerBB
        triggerHigh := high
        triggerLow := low
        triggerClose := close
        label.new(bar_index, low, "Waiting for long trigger", color=color.yellow)

// Check for Short Entry
if not inTrade and na(triggerClose) == false and close < triggerClose
    if low < triggerLow
        entryPrice := close
        stopLoss := triggerHigh
        targetPrice := entryPrice - targetPoints
        strategy.entry("Short", strategy.short)
        label.new(bar_index, high, "Short", color=color.red, style=label.style_label_down)
        inTrade := true
        isLong := false
        triggerLow := na
        triggerHigh := na
        triggerClose := na

// Check for Long Entry
if not inTrade and na(triggerClose) == false and close > triggerClose
    if high > triggerHigh
        entryPrice := close
        stopLoss := triggerLow
        targetPrice := entryPrice + targetPoints
        strategy.entry("Long", strategy.long)
        label.new(bar_index, low, "Long", color=color.green, style=label.style_label_up)
        inTrade := true
        isLong := true
        triggerLow := na
        triggerHigh := na
        triggerClose := na

// Manage Short Trade
if inTrade and not isLong
    if high >= stopLoss
        strategy.close("Short", comment="SL Hit")
        label.new(bar_index, high, "SL Hit", color=color.red, style=label.style_label_down)
        inTrade := false
    else if low <= targetPrice
        strategy.close("Short", comment="Target Hit")
        label.new(bar_index, low, "Target Hit", color=color.green, style=label.style_label_up)
        inTrade := false

// Manage Long Trade
if inTrade and isLong
    if low <= stopLoss
        strategy.close("Long", comment="SL Hit")
        label.new(bar_index, low, "SL Hit", color=color.red, style=label.style_label_down)
        inTrade := false
    else if high >= targetPrice
        strategy.close("Long", comment="Target Hit")
        label.new(bar_index, high, "Target Hit", color=color.green, style=label.style_label_up)
        inTrade := false

// Plotting
plot(ema5, color=color.orange, title="5-day EMA")
plot(upperBB, color=color.red, title="Upper Bollinger Band")
plot(lowerBB, color=color.purple, title="Lower Bollinger Band")

// Plot trade entry and exit points
plotshape(series=inTrade and isLong ? entryPrice : na, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=inTrade and not isLong ? entryPrice : na, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")