
이 전략은 5 분 시간 프레임에 실행, 200 평균선과 21 평균선을 주요 트렌드 필터로 사용하여, RSI와 MACD 지표와 결합하여 거래 신호 확인. 전략은 고정 스톱 손실 ((15 포인트) 와 스톱 중지 ((22.5 포인트) 설정을 채택, 위험 수익률 비율은 1.1.5, 일일 트렌드 추적 및 낮은 위험 입시 거래에 적합.
이 전략의 핵심은 여러 가지 기술 지표를 사용하여 전체적인 트렌드 확인 시스템을 구축하여 위조를 피하고 높은 확률의 트렌드 기회를 포착하기 위해 층층적인 필터링을 수행하는 것입니다. 구체적인 구현 원칙은 다음과 같습니다.
동향 확인: 200기 지수 이동 평균 ((EMA) 을 장기 트렌드 지표로, 21기 EMA를 중기 트렌드 지표로 사용한다. 가격은 두 평균 선의 같은 쪽에 있어야만 입시를 고려한다.
동력 확인상대적으로 강한 지수 ((RSI) 를 추가적인 동력 필터로 사용한다. RSI는 50보다 크고, RSI는 50보다 작아야 한다.
입학 트리거: MACD ((12,26,9) 지표의 교차 신호를 최종 입구 트리거 조건으로 의존한다. 다중 머리 입구는 MACD 라인 상의 신호 라인을 통과하도록 요구하며 MACD 값이 긍정적이다. 공허 입구는 MACD 라인 아래의 신호 라인을 통과하도록 요구하며 MACD 값이 부정적이다.
위험 관리: 매 거래마다 고정된 스톱로스 ((15 포인트) 와 스톱 스 ((22.5 포인트) 설정을 사용하여 1:1: 5의 리스크/수익 비율을 생성합니다. 이는 위험과 수익을 균형 잡는 합리적인 설정입니다.
시각 보조전략은 트레이드 태그와 스톱/스트로프 수평선 가시화를 포함하고 있어 모니터링과 리포트 분석을 용이하게 한다.
자동 통지: 내장된 경보 조건, 플랫폼을 통해 자동 알림 기능을 설정할 수 있으며, 반자동 거래가 가능합니다.
이 전략의 코드 구현을 자세히 분석하면 다음과 같은 몇 가지 중요한 장점이 발견됩니다.
다중 필터링 시스템이 전략은 세 가지 다른 유형의 지표인 메드라인, RSI, MACD를 결합하여 엄격한 신호 필터링 시스템을 구축하여 가짜 신호를 크게 줄이고 거래 정확도를 향상시킵니다.
명확한 위험 통제: 고정된 스톱로스 및 스톱포인트 수를 사용하여, 각 거래의 위험은 미리 결정되어, 자금 관리 및 위험 통제를 용이하게 한다. 1:1: 5의 위험 수익 비율이 합리적으로 설정되어 전문 거래 원칙에 부합한다.
순환 거래 논리전략적 설계는 확인된 트렌드 방향으로만 거래하도록 하고, 역동적인 거래의 높은 위험을 피합니다.
시각적 피드백 시스템: 태그와 라인의 시각적 표시를 통해 거래자는 전략의 실행 상태와 역사적인 성과를 직관적으로 알 수 있습니다.
유연한 재무 관리전략: 계정 지분 비율을 사용하여 지위를 관리합니다. 계정 규모에 따라 동적으로 조정할 수 있으며 장기 운영에 적합합니다.
자동화: 내장된 경고 조건은 이 전략을 자동 거래 시스템과 쉽게 통합할 수 있게 하고, 감정적 간섭과 인적 오류를 줄여준다.
이 전략은 합리적으로 설계되었지만 몇 가지 잠재적인 위험과 한계가 있습니다.
고정 손실 위험: 고정 점수를 사용하는 스톱은 높은 변동성 시장에서 충분하지 않을 수 있으며, 특히 시장의 변동성이 갑자기 증가하면 스톱이 쉽게 만질 수 있습니다. 개선 방법은 ATR을 사용하여 스톱 수준을 동적으로 조정하는 것을 고려하는 것입니다.
트렌드 전환점 인식 부족: 이 전략은 강한 트렌드에서 잘 작동하지만, 트렌드 전환점에서는 반응이 늦어지며, 트렌드 반전의 초기에는 여전히 원래의 트렌드 방향에 따라 진입하게 됩니다. 약한 트렌드에서 진입하는 것을 피하기 위해 트렌드 강도 지표인 ADX를 추가하는 것을 고려할 수 있습니다.
다중 조건이 지나치게 과장될 수 있습니다.다중 조건은 신호 품질을 향상시키지만, 또한 몇 가지 좋은 거래 기회를 놓치게 할 수 있다. 실제 응용에서는 피드백 결과에 따라 신호 품질과 주파수를 균형을 잡아야 한다.
5분 시간 프레임에 대한 최적화: 이 전략은 5 분 시간 프레임에 대해 설계되었으며, 다른 시간 프레임에 대한 재조정이 필요할 수 있습니다. 다른 시간 프레임에 대한 간단한 사용은 성능 저하로 이어질 수 있습니다.
시장 상황에 대한 적응력이 부족함: 전략은 수직 수직 수직 수직 단계에서 자주 손실 거래가 발생할 수 있는 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직 수직
코드 분석을 바탕으로, 이 전략에는 다음과 같은 몇 가지 최적화 방향이 있습니다.
동적 위험 관리: 고정 점수의 스톱과 스톱을 ATR 기반의 다이내믹 스톱과 스톱으로 대체하여 전략이 시장의 변동성에 따라 자동으로 리스크 변수를 조정할 수 있게 해줍니다. 이렇게 하는 것의 장점은 다양한 변동률 환경에서 상대적으로 일관된 리스크 을 유지하는 것입니다.
트렌드 강도 필터링: ADX를 추가하여 트렌드 강도를 나타내는 지표로, 트렌드 강도가 특정 하위값 (예: 25) 보다 큰 경우에만 입문하고, 약한 트렌드 또는 흔들리는 시장에서 거래하는 것을 피하십시오.
입학 시점을 최적화: 확인된 신호 이후 가격이 평균선 근처로 회수되기를 기다리는 것을 고려할 수 있습니다. 더 나은 입문 가격과 더 작은 스톱 손실 거리를 얻기 위해, 리스크의 수익률을 높일 수 있습니다.
트랜잭션 시간 필터를 추가합니다.: 다른 거래 시간대의 성과를 분석하여 특정 시간대 (유럽-미국 거래 시간대 중복 기간과 같은) 가 더 잘 수행되는 것을 발견 할 수 있습니다. 이러한 시간대에서만 전략을 활성화 할 수 있습니다.
일부 수익 잠금 메커니즘 구현거래가 특정 수익 수준을 달성했을 때 (목표의 50%와 같은 경우) 스톱로스는 입시 가격 또는 우위점으로 이동하여 적어도 수익의 일부를 확보합니다.
시장 상태 판단을 높여라: 브린 대역폭이나 비슷한 지표를 통해 시장 상태를 판단하기 ((트렌드 또는 조립), 다른 상태에서 다른 거래 논리 또는 파라미터 설정을 사용한다.
매개 변수 최적화 및 재측정: 평균선주기, RSI 미지수, MACD 파라미터 등에 대한 최적화된 피드백을 통해, 역사적으로 가장 좋은 퍼포먼스를 가진 파라미터 조합을 찾아내지만, 과도한 적합성을 피하는 것을 주의해야 한다.
이는 합리적으로 설계된 트렌드 추적 전략으로, 여러 기술 지표의 통합적인 응용을 통해 엄격한 신호 필터링 시스템을 구축하여 거래 신호의 품질을 향상시킵니다. 고정된 위험 관리 설정은 전략에 안정적인 위험 제어 프레임 워크를 제공하여, 일간 거래자와 트렌드 추적자가 사용할 수 있습니다.
전략은 강한 추세 환경에서 잘 수행 할 수 있지만 시장 상태 전환과 높은 변동성 환경에서 도전을 받을 수 있습니다. 권장된 최적화 조치를 시행하여, 특히 동적 위험 관리 및 시장 상태 적응력을 강화하면 전략의 안정성과 적응력을 더욱 높일 수 있습니다.
이 전략은 전체적으로 체계화된 거래의 핵심 원칙을 반영합니다. 엄격한 입시 조건, 명확한 퇴출 규칙, 일관된 위험 관리 등이 감정적 방해를 줄이고 거래 시스템을 엄격하게 실행하려는 거래자에게 적합합니다.
/*backtest
start: 2024-07-31 00:00:00
end: 2025-07-29 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("TPC Strategy XAUUSD - M5 with Fixed SL/TP", overlay=true)
// === INPUTS ===
ema200 = ta.ema(close, 200)
ema21 = ta.ema(close, 21)
rsi = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// === CONDITIONS ===
longCondition = close > ema200 and close > ema21 and rsi > 50 and macdLine > signalLine and ta.crossover(macdLine, signalLine)
shortCondition = close < ema200 and close < ema21 and rsi < 50 and macdLine < signalLine and ta.crossunder(macdLine, signalLine)
// === TRADE PARAMETERS ===
sl_pips = 15.0
tp_pips = 22.5
sl = sl_pips * syminfo.mintick * 10
tp = tp_pips * syminfo.mintick * 10
// === TRADE ENTRIES ===
var float long_entry_price = na
var float short_entry_price = na
if (longCondition)
strategy.entry("Long", strategy.long)
long_entry_price := close
label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
if (shortCondition)
strategy.entry("Short", strategy.short)
short_entry_price := close
label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
// === STRATEGY EXITS ===
strategy.exit("Long TP/SL", from_entry="Long", stop=close - sl, limit=close + tp)
strategy.exit("Short TP/SL", from_entry="Short", stop=close + sl, limit=close - tp)
// === PLOTS ===
plot(ema200, color=color.red, title="200 EMA")
plot(ema21, color=color.blue, title="21 EMA")
// === PLOT SL & TP LINES ===
plot(long_entry_price ? long_entry_price - sl : na, title="Long SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(long_entry_price ? long_entry_price + tp : na, title="Long TP", color=color.green, style=plot.style_linebr, linewidth=1)
plot(short_entry_price ? short_entry_price + sl : na, title="Short SL", color=color.red, style=plot.style_linebr, linewidth=1)
plot(short_entry_price ? short_entry_price - tp : na, title="Short TP", color=color.green, style=plot.style_linebr, linewidth=1)
// === ALERT CONDITIONS ===
alertcondition(longCondition, title="Buy Signal", message="📈 XAUUSD Buy Setup (M5) detected!")
alertcondition(shortCondition, title="Sell Signal", message="📉 XAUUSD Sell Setup (M5) detected!")