양성 트렌드 추적 전략은 EMA 라인과 ATR 스톱 로스를 기반으로하는 트렌드 추적 전략이다. EMA 라인을 사용하여 전체 시장 트렌드 방향을 판단하고, 트렌드 수익을 잠금하고 수익을 극대화하기 위해 ATR로 동적으로 스톱 로스를 추적합니다.
이 전략은 다음과 같은 주요 부분으로 구성됩니다.
주요 트렌드를 결정하기 위한 EMA 라인
13일, 50일 및 100일 라인을 사용하여 상승/하락 편향을 형성하고 주요 트렌드 방향을 판단합니다.
ATR 동적 스톱 손실
ATR 인디케이터를 사용하여 현재 기간의 가격 이동 범위를 계산하고 수익을 잠금하기 위해 스톱 로스 가격을 설정합니다.
신호 평형화
잘못된 신호를 피하기 위해 SMA를 사용하여 일정 기간 동안 순탄한 폐쇄 가격을 유지합니다.
상승/하락 신호
가격이 EMA 라인을 넘어서면 길게, 밑으로 넘어가면 짧게, 동적 ATR 후속 스톱 로스를 설정합니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
또한 몇 가지 위험이 있습니다.
이러한 위험은 매개 변수 최적화, 적응력 테스트 등을 통해 줄일 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
요약하자면, 이것은 트렌드 다음 개념을 기반으로 설계된 양성 전략이다. EMA와 함께 트렌드 방향을 결정하고 동적 ATR 스톱 로스를 사용합니다. 트렌드 수익을 캡처하는 동안 인하를 효과적으로 제어 할 수 있습니다. 지속적인 최적화와 반복은 향상된 결과를 창출 할 수 있습니다.
/*backtest start: 2023-12-27 00:00:00 end: 2024-01-03 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Combined Strategy", overlay=true) // Input variables for EMA Crossover ema13_length = input(13, title="EMA 13 Length") ema50_length = input(50, title="EMA 50 Length") ema100_length = input(100, title="EMA 100 Length") ema200_length = input(200, title="EMA 200 Length") // Calculate EMAs for EMA Crossover ema13 = ema(close, ema13_length) ema50 = ema(close, ema50_length) ema100 = ema(close, ema100_length) ema200 = ema(close, ema200_length) // Plot EMAs for EMA Crossover plot(ema13, color=color.blue, title="EMA 13") plot(ema50, color=color.orange, title="EMA 50") plot(ema100, color=color.green, title="EMA 100") plot(ema200, color=color.red, title="EMA 200") // Input variables for LinReg Candles signal_length = input(title="Signal Smoothing", type=input.integer, minval=1, maxval=200, defval=11) sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true) lin_reg = input(title="Lin Reg", type=input.bool, defval=true) linreg_length = input(title="Linear Regression Length", type=input.integer, minval=1, maxval=200, defval=11) // Calculate LinReg Candles bopen = lin_reg ? linreg(open, linreg_length, 0) : open bhigh = lin_reg ? linreg(high, linreg_length, 0) : high blow = lin_reg ? linreg(low, linreg_length, 0) : low bclose = lin_reg ? linreg(close, linreg_length, 0) : close r = bopen < bclose signal = sma_signal ? sma(bclose, signal_length) : ema(bclose, signal_length) plotcandle(r ? bopen : na, r ? bhigh : na, r ? blow: na, r ? bclose : na, title="LinReg Candles", color=color.green, wickcolor=color.green, bordercolor=color.green, editable=true) plotcandle(r ? na : bopen, r ? na : bhigh, r ? na : blow, r ? na : bclose, title="LinReg Candles", color=color.red, wickcolor=color.red, bordercolor=color.red, editable=true) plot(signal, color=color.white) // Input variables for UT Bot Alerts a = input(1, title="Key Value. 'This changes the sensitivity'") c = input(10, title="ATR Period") h = input(false, title="Signals from Heikin Ashi Candles") // Calculate UT Bot Alerts xATR = atr(c) nLoss = a * xATR src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=false) : close 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) above = crossover(ema, xATRTrailingStop) below = crossover(xATRTrailingStop, ema) buy = src > xATRTrailingStop and above sell = src < xATRTrailingStop and below barbuy = src > xATRTrailingStop barsell = src < xATRTrailingStop strategy.entry("Buy", strategy.long, when=buy) strategy.close("Buy", when=sell) strategy.entry("Sell", strategy.short, when=sell) strategy.close("Sell", when=buy) 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) barcolor(barbuy ? color.green : na) barcolor(barsell ? color.red : na) alertcondition(buy, "UT Long", "UT Long") alertcondition(sell, "UT Short", "UT Short")