
EMA와 Supertrend을 결합한 다중 시간 프레임 트렌드 추적 전략은 시장의 추세를 포착하고 거래 신호를 생성하기 위해 주로 다중 이동 평균과 Supertrend 지표의 조합을 통한 종합적인 양적 거래 시스템입니다. 이 전략은 3개의 다른 기간의 지수 이동 평균 (EMA) 을 트렌드 방향의 초기 판단으로 사용하며, ATR (진실 변동폭) 을 기반으로 한 Supertrend 지표를 입출 및 출출의 주요 기초로 결합합니다. 이 전략은 특히 Renko 차트에 적합하며, 이 차트 유형은 시장 소음을 필터링하여 가격 변화의 추세를 더 명확하게 보여줍니다.
이 전략의 핵심 원칙은 다층 기술 지표의 협동 확인 메커니즘에 기반하고 있으며, 다음과 같은 몇 가지 핵심 구성 요소를 포함합니다.
다중 EMA 교차 시스템전략: 세 개의 다른 주기 ((9, 15, 15) 의 지수 이동 평균을 사용하여 시장의 전반적인 경향 방향을 판단합니다. 빠른 EMA ((9 주기) 가 느린 EMA ((15 주기) 위에있을 때 상승 추세로 식별됩니다. 반대로 하향 추세입니다.
슈퍼트렌드 지표ATR ((평균 실제 범위) 를 기반으로 상하 궤도 라인을 계산하고, 가격이 상하 궤도를 돌파 할 때 다중 트렌드로 전환하고, 하하 궤도를 돌파 할 때 하하 트렌드로 전환합니다. 전략은 10 주기의 ATR 및 3.0의 배수 파라미터를 사용합니다.
트렌드 확인 메커니즘이 전략은 EMA 트렌드 방향이 Supertrend 트렌드 방향과 일치하는 경우에만 거래 신호를 생성합니다. 이것은 가짜 신호의 발생 가능성을 감소시킵니다.
신호 생성 논리:
포지션 관리: 전략은 계정의 지분 비율 ((100%) 을 기본 포지션 크기로 사용하고, 이는 계정 규모에 기반한 동적 포지션 조정 메커니즘을 제공합니다.
다중 인증 메커니즘: EMA 트렌드와 Supertrend 신호가 일치하도록 요구함으로써 잘못된 거래 신호의 가능성을 크게 줄이고 전략의 안정성을 향상시킵니다.
트렌드 추적 효과이 전략은 중·장기적 트렌드를 잘 포착하고, 특히 지속성이 강한 시장에서 우수한 성능을 발휘하며, 트렌드를 따라가며 상당한 수익을 얻기 위해 충분히 오래 유지할 수 있습니다.
적응력슈퍼 트렌드 지표는 ATR 계산을 기반으로 시장의 변동성에 따라 자동으로 조정할 수 있으며, 다양한 변동 환경에서 전략을 유효하게 유지합니다.
거래 빈도 균형거래 빈도가 높기 때문에 슬라이포인트와 수수료가 높아지거나, 너무 보수적이어서 중요한 기회를 놓치지 않으면 거래 빈도의 균형이 잘 잡힌다.
시각화 효과전략: 색으로 채워진 지역은 현재의 트렌드 상태를 직관적으로 표시하고, 녹색은 상승 추세를 나타내고, 빨간색은 하락 추세를 나타냅니다. 이는 거래자의 시장 상태에 대한 인식 능력을 향상시킵니다.
렌코 차트와 연동이 전략은 특히 렌코 차트와 함께 사용되며, 시장 소음의 영향을 더욱 줄이고, 신호의 질을 향상시킵니다.
추세 반전 위험: 불안정한 시장에서, 전략은 빈번한 가짜 돌파구를 겪을 수 있으며, 이는 여러 번의 출전과 연속적인 손실을 초래한다. 이에 대해 변동율 필터를 도입하거나 가짜 신호를 줄이기 위해 확인 조건을 추가하는 것을 고려할 수 있다.
매개변수 민감도: 전략 성능은 EMA 주기와 ATR 곱 등과 같은 파라미터 설정에 민감하며, 다른 시장 조건에 따라 최적의 파라미터가 크게 변할 수 있습니다. 다양한 시장 환경에서 재검토를 통해 안정적인 파라미터 조합을 찾는 것이 좋습니다.
뒤처진 문제: 트렌드 추적 전략으로, 약간의 신호 지각이 존재하며, 트렌드 초기에 일부 시장을 놓칠 수 있거나, 트렌드 종료 시 일부 이익을 돌려줄 수 있습니다. 더 민감한 단기 지표를 추가하여 진입 및 출퇴근 시기를 최적화 할 수 있습니다.
포지션 위험: 현재 전략은 고정된 100%의 지분 비율을 포지션 크기로 사용하며, 높은 변동성 시장에서 과도한 위험을 초래할 수 있습니다. 시장의 변동성과 거래 신호의 강도에 따라 포지션 크기를 조정하는 동적 포지션 관리 장치를 도입하는 것이 좋습니다.
손해 방지 장치의 부재: 코드에 명확한 중지 손실 설정이 없으며, 트렌드가 갑자기 역전되면 큰 손실이 발생할 수 있습니다. 단일 거래의 최대 손실을 제한하기 위해 적절한 중지 조건을 추가해야합니다.
다양화 매개 변수 선택현재 전략의 두 개의 EMA 주기는 동일한 값으로 설정되어 있으며, 9, 15, 21과 같은 다른 값으로 구분하는 것이 더 명확한 경향 계층 판단을 제공하기 위해 권장됩니다.
필터링 조건을 추가추가적인 조건들, 예를 들어 양수확인, 변동률 필터링, 또는 시장 구조 판단을 추가로 고려하여 가짜 신호를 더욱 줄일 수 있습니다. 예를 들어, 거래는 특정 범위의 시장 변동률 내에서만 허용됩니다.
포지션 관리를 최적화: ATR 기반의 동적 포지션 관리를 도입하여, 높은 변동성이 있을 때 포지션을 줄이고 낮은 변동성이 있을 때 포지션을 증가시켜서 위험과 수익을 균형을 맞추기 위해.
스톱 및 스톱 메커니즘 추가: ATR 기반의 동적 스톱로드를 설정하고, 리스크 수익률 기반의 스톱 조건을 설정하여, 자금 관리 및 위험 통제를 최적화한다.
시간 필터다양한 시간대의 전략의 성과를 분석하고, 낮은 효율성이나 높은 위험의 거래 시간을 피하고, 전략이 가장 잘 작동하는 시간 동안만 거래하십시오.
트렌드 판단 논리 개선: 현재 전략은 추세를 판단하는 데는 간단하다. 더 복잡한 추세를 판단하는 방법을 추가하는 것을 고려할 수 있다. 예를 들어 더 긴 주기에서의 추세 방향을 고려하거나 가격 구조 ((고위점과 낮은점) 분석을 사용하여 판단을 보조한다.
최적화된 명명 규범: 현재 코드는 비 표준 변수 명칭을 사용하고 있습니다 (Curly_Fries, Popeyes 등) 보다 설명적인 전문 명칭으로 변경하여 코드의 가독성 및 유지보수를 향상시킬 수 있습니다.
EMA와 Supertrend을 결합한 다중 시간 프레임 트렌드 추적 전략은 이동 평균 교차 시스템과 ATR 채널 브레이크 전략을 결합하여 시장 추세를 효과적으로 포착하고 위험을 통제하는 합리적으로 설계된 양적 거래 시스템입니다. 이 전략은 명확한 추세가있는 시장 환경에서 사용하기에 특히 적합하며 특히 렌코 차트에 적합합니다.
이 전략의 주요 장점은 다중 지표 확인 메커니즘과 자기 적응성이며, 다양한 시장 환경에서 좋은 안정성을 유지할 수 있다. 또한, 전략에는 파라미터 민감성 및 트렌드 반전 위험과 같은 문제가 있으며, 파라미터 최적화, 필터 조건 증가 및 재원 관리 개선 등의 방법으로 최적화가 필요하다.
특히 주의해야 할 점은, 손실을 막는 장치를 추가하고, 포지션 관리 전략을 최적화하고, 코드에서 변수 명명 규격을 개선해야 한다는 것이다. 이러한 최적화를 통해, 전략의 위험 수익 특성 및 장기 안정성이 크게 향상될 전망이다.
이것은 트렌드 추적 전략을 사용하려는 거래자들에게는 좋은 기본 프레임워크이며, 개인의 위험 선호와 특정 시장 특성에 따라 더 커스터마이징 및 최적화 할 수 있습니다.
/*backtest
start: 2025-03-31 00:00:00
end: 2025-04-01 00:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/
//@version=6
strategy('Supertrend Strategy for Renko', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
Curly_Fries = input(9, title='Fast')
Popeyes = input(15, title='Medium')
Chicken_Sandwich = input(15, 'Slow')
ema_150 = ta.ema(close, Curly_Fries)
ema_200 = ta.ema(close, Popeyes)
ema_250 = ta.ema(close, Chicken_Sandwich)
a = plot(ema_150, title='EMA9')
b = plot(ema_200, title='EMA15')
c = plot(ema_250, title='EMA15')
ups = ema_150 > ema_250
down = ema_150 < ema_250
mycolor = ups ? color.green : down ? color.red : na
fill(a, c, color=mycolor)
Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method?', defval=true)
showsignals = input(title='Show Buy/Sell Signals?', defval=true)
highlighting = input(title='Highlighter On/Off?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
buySignal = trend == 1 and trend[1] == -1 and ups
sellSignal = trend == -1 and trend[1] == 1 and down
if buySignal
strategy.entry('Long', strategy.long)
if sellSignal
strategy.close('Long')
strategy.entry('Short', strategy.short)
if trend == 1
strategy.close('Short') // Chiude lo short se il trend diventa rialzista
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white
fill(upPlot, dnPlot, title='Trend Highlighter', color=longFillColor)
alertcondition(buySignal, title='SuperTrend Buy', message='SuperTrend Buy!')
alertcondition(sellSignal, title='SuperTrend Sell', message='SuperTrend Sell!')
changeCond = trend != trend[1]
alertcondition(changeCond, title='SuperTrend Direction Change', message='SuperTrend has changed direction!')