모멘텀 브레이크아웃 트레이딩 전략


생성 날짜: 2023-11-14 11:19:05 마지막으로 수정됨: 2023-11-14 11:19:05
복사: 3 클릭수: 731
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

모멘텀 브레이크아웃 트레이딩 전략

개요

이 전략은 부린 선과 ATR 지표가 EMA 평평선과 결합되어 판단하여 동력 뚫린 거래 전략을 형성한다. 가격이 부린 상반도를 돌파하고 EMA 평평선을 빠르게 돌파하면 구매 신호를 생성한다. 가격이 부린 하반도를 돌파하고 EMA 평평선을 빠르게 넘어갈 때 판매 신호를 생성한다. 동시에 ATR 지표가 사용된다.

전략 원칙

  1. 브린 선의 중간선, 상반선 및 하반선을 계산한다. 중간선은 n주기의 SMA 평균선이며, 상반선은 중간선 + m이다.*n주기 표준차, 하단 궤도는 중선-m*n주기기준이 다.

  2. ATR 지수를 계산하여, 상쇄 손실을 추적한다.

  3. 1주기 및 n주기 EMA의 평균선을 계산하여 가격 움직임을 판단한다.

  4. 가격이 브린 상위 궤도를 통과하고 n주기 EMA 평균선을 빠르게 통과할 때 구매 신호가 발생한다.

  5. 가격이 브린 하위 궤도를 통과하고 n주기 EMA 평균선을 빠르게 통과하면 판매 신호가 발생한다.

  6. ATR 지표는 스톱로스를 설정하고, 가격의 돌파 방향을 추적하고, 함축되는 것을 피하기 위해 사용됩니다.

우위 분석

  1. 브린 라인은 ATR 상쇄와 결합하여 위험을 효과적으로 제어할 수 있다.

  2. EMA는 천천히 동력 방향을 판단하여 가짜 돌파구를 피한다.

  3. 전략의 매개 변수는 조정할 수 있으며, 다른 시장 환경에 적용된다.

  4. 구매/판매 신호가 명확하고 거래 빈도가 높기 때문에 단선 거래에 적합하다.

  5. ATR 지표를 사용하여 손실을 추적하여 적시에 손실을 막을 수 있습니다.

위험 분석

  1. 브린 라인이 너무 좁으면 더 많은 노이즈 거래가 발생할 수 있습니다.

  2. ATR 매개 변수가 너무 작게 설정되어 있어, 스톱데일리가 너무 가깝게 설정되어 있을 수 있다.

  3. EMA 파라미터는 주기적으로 조정해야 하며, 주기별로 효과는 다르다.

  4. 이번 지진으로 인해 지진이 발생한 지역에서는 거래가 증가할 가능성이 높기 때문에 주의해야 합니다.

  5. 이 경우, 손실을 추적하는 것은 때로는 너무 급진적일 수 있으며, 손실을 확대시킬 수 있습니다.

최적화 방향

  1. 다른 지표와 결합하여 거래 신호를 필터링 할 수 있습니다. 예를 들어 RSI 지표가 과매매를 판단하고, KDJ 지표는 이탈을 판단합니다.

  2. 부린 라인 파라미터를 ATR 동적으로 조정하여 부린 라인을 가격 변동에 더 적합하게 만들 수 있습니다.

  3. 다양한 EMA 주기 변수의 효과를 테스트하여 최적의 변수 조합을 찾을 수 있다.

  4. 변동률에 따라 ATR 파라미터를 지능적으로 조정할 수 있으며, 너무 급진적인 정지 손실을 피한다.

  5. 구매 시점을 판단하는 데 도움이 되는 딥러닝 모델을 고려할 수 있습니다.

요약하다

이 전략의 전체적인 아이디어는 명확하며, 부린 라인을 사용하여 가격 돌파구를 캡처하고, ATR은 손실 범위를 설정하고, EMA는 돌파구 동력의 방향을 판단하고, 돌파구 동력의 전방위 판단을 수행하여, 짧은 라인 가격 추세를 효과적으로 캡처할 수 있습니다. 동시에 여러 지표와 결합하여 통합 판단을 수행하여 신호의 질을 향상시킬 수 있습니다. 그러나 몇 가지 최적화 가능한 방향도 있습니다. 파라미터 조정, 지표 조합 등의 방법을 통해이 전략을 더욱 개선하여 더 안정적이고 탄력적으로 만들 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 
// Inputs
a = input(1,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
// plot(bbr, "Bollinger Bands %B", color=#26A69A)
// band1 = hline(1, "Overbought", color=#787B86, linestyle=hline.style_dashed)
// hline(0.5, "Middle Band", color=color.new(#787B86, 50))
// band0 = hline(0, "Oversold", color=#787B86, linestyle=hline.style_dashed)
// fill(band1, band0, color=color.rgb(38, 166, 154, 90), title="Background")








xATR  = atr(c)
nLoss = a * xATR




xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,1)
emaFast   = ema(src,144)
emaSlow   = ema(src,576)
sma       =  sma(src, c)

above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

smaabove = crossover(src, sma)
smabelow = crossover(sma, src)


buy  = src > xATRTrailingStop and above and (bbr>20  or bbr<80)
sell = src < xATRTrailingStop and below  and  (bbr>20  or bbr<80)

// buy  = src > xATRTrailingStop 
// sell = src < xATRTrailingStop 


barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

// plot(emaFast , color = color.rgb(243, 206, 127), title="emaFast")

plot(xATRTrailingStop, color = color.rgb(233, 233, 232), title="xATRTrailingStop")

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)


// plotshape(buy,  title = "Sell",  text = 'Sell',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
// plotshape(sell, title = "buy", text = 'buy', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

barcolor(barbuy  ? color.green : na)
barcolor(barsell ? color.red   : na)

// strategy.entry("short",   false, when = buy)
// strategy.entry("long ", true, when = sell)


strategy.entry("long",   true, when = buy)
strategy.entry("short ", false, when = sell)