클리어 시그널 트레이딩 전략 V5

EMA RSI MACD ATR VOLUME
생성 날짜: 2025-09-16 18:24:21 마지막으로 수정됨: 2025-09-16 18:24:21
복사: 0 클릭수: 308
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

클리어 시그널 트레이딩 전략 V5 클리어 시그널 트레이딩 전략 V5

이것은 복잡한 기술 분석 전략이 아니라 거래를 간소화하는 도구입니다.

시장의 99%의 전략은 복잡성을 추구하고 있으며, 이 전략은 그 반대입니다. 핵심 논리는 매우 간단합니다: 50 일 동안 50 일 동안 EMA를 더 많이 착용하고, 아래에서 공백을 착용합니다. 그러나 악마는 5 점 점수 시스템으로 신호 품질을 필터링하고, 3 분 이상 만 포지션을 열 수 있습니다.

핵심은 신호 확인 메커니즘에 있다. 모든 EMA 교차가 거래할 가치가 있는 것은 아니다. 전략은 트렌드 조율, 동력 확인, 거래량 검증을 통해 트리플 필터링을 통해 노이즈 신호를 70% 이상 줄인다. 보수 모드는 포지션을 개시하기 위해 4초가 필요하며, 급진 모드는 2초가 가능하며, 균형 모드는 3초의 마이너스를 설정한다.

5점 점수 시스템: 주관적인 판단을 객관적인 데이터로 바꾸는 것

이 스코어 메커니즘은 전략의 핵심 혁신입니다. 다중 신호 스코어: 트렌드 조율 2 점 ((가격은 200 일 EMA 상위와 빠른 선은 느린 선 상위), MACD 기둥 도표는 1 점, RSI는 50-70 영역에서 1 점, 거래량은 20 일 평균선보다 20% 이상 1 점입니다. 5 점 만, 실제로는 거의 발생하지 않습니다.

데이터에 따르면, 4-5점 신호의 성공률은 65% 이상이지만, 빈도가 낮아, 월 평균 2-3회 ᄒ 3점 신호의 성공률은 55% 정도이고, 빈도는 월 5-6회 ᄂ 2점 신호의 성공률은 45%까지 낮아졌지만, 빈도가 가장 높습니다. 그래서 균형 모드는 3점을 선택하여 성공률과 빈도 사이의 최적의 균형점을 찾습니다.

중요한 것은, 전략은 또한 변동률 필터를 추가했다. ATR이 가격 비율이 3%를 초과할 때, 포지션을 잠정적으로 열었다. 이 디자인은 비정상적인 변동 기간 동안의 잘못된 판단을 피하고, 단일 최대 손실을 효과적으로 통제했다.

리스크 관리는 후방치료가 아니라 전략의 핵심입니다.

손해 중지 설계는 세 가지 모드를 사용합니다: ATR 배수, 고정 퍼센트, 최근 높은 낮은. 기본 2 배 ATR 중지는 많은 재검토 검증을 통해 정상적인 변동 중지를 피할 수 있으며, 추세가 역전될 때 적시에 출전 할 수 있습니다. 고정 비율은 변동률이 안정된 품종에 적합하며, 최근 높은 낮은 추세 시장에 적합합니다.

이윤 손실 비율은 2:1로 설정되어 있습니다. 이것은 머리에 박지는 않습니다. 역사적인 자료에 따르면, 2배의 ATR로 중지 손실을 설정했을 때, 평균 수익률은 약 4배의 ATR입니다. 2:1의 이윤 손실 비율은 잠재적인 수익의 70%를 캡처 할 수 있으며, 과도한 탐욕으로 인한 수익 회귀를 피할 수 있습니다.

단위 리스크는 2%로 통제되며, 이는 25번의 연속 손실이 계좌를 0으로 되돌릴 수 있다는 것을 의미한다 (이론적으로 거의 불가능하다). 최악의 재검토 기간에도 최대 연속 손실은 6번을 넘지 않는다.

거래량 확인: 소매업자들이 무시한 중요한 신호

이 전략은 거래량 확인을 기본으로 열고 거래량이 20 일 평균의 20%를 초과할 때만 포지션을 열습니다. 이 디자인은 간단한 논리에 기반합니다. 진정한 트렌드 돌파는 자금의 추진이 필요하며, 거래량 조정이없는 기술 돌파는 종종 가짜 돌파입니다.

데이터는 이 판단을 증명한다. 거래량 필터를 추가한 후, 신호의 수가 약 30% 감소하지만, 승률은 8-12 퍼센트 포인트 상승한다. 특히, 불안한 시장에서 거래량 필터는 거래량을 자주 열기 때문에 발생하는 수수료 손실을 효과적으로 피할 수 있다.

거래량이 급증 (평균 50% 이상) 할 때, 전략은 신호 무게를 높인다. 이 디자인은 갑작스러운 사건에 의한 강력한 추세를 포착합니다. 역사적으로 이러한 신호의 평균 수익률은 일반 신호보다 40% 이상 높습니다.

적용 시나리오: 만능 약은 아니지만, 적절한 장소에서 효과가 있습니다.

전략은 트렌딩 시장에서 가장 잘 작동하며, 특히 중장기 상승 또는 하락 추세에서 회귀 및 반발한다. 수평 변동 시장은 전략의 천적이며, 승률은 40% 이하로 떨어진다. 따라서, 사용하기 전에 시장 환경을 판단하여 명백한 간격 변동에서 맹목적으로 사용하는 것을 피하십시오.

시간 주기는 일선 이상으로 권장되며, 시간선은 거의 사용할 수 없지만, 15분 이하는 권장되지 않는다. 이유는 간단하다: EMA 교차는 짧은 주기에 너무 큰 소음으로, 등급 필터가 있더라도 효과적으로 식별하기 어렵다.

품종 선택에서 유동성이 좋은 주류 품종이 가장 효과적이다. 소시장 주식이나 냉문 품종은 거래량이 불안정하기 때문에 잘못된 신호가 발생할 수 있다. 암호화폐 시장은 24 시간 거래와 높은 변동성으로 인해 파라미터를 조정할 필요가 있으며 ATR 필터치 값을 5%로 높이는 것이 좋습니다.

실제 전투 조언: 원칙보다 어떻게 사용하는지 아는 것이 더 중요합니다.

보수적 거래자는 보수적 모드를 선택하고, 4-5분 신호만 하고, 연간 수익을 15-25%, 최대 회수 통제는 8% 내로 한다. 적극적 거래자는 균형 모드를 선택하고, 3분 이상 신호를 하고, 연간 수익을 25-40% 기대하지만, 12-15%의 회수를 견뎌야 한다.

2분 신호의 노이즈 비율이 너무 높기 때문에 빈번한 중단과 정신적인 불균형이 발생할 수 있습니다.

전략의 가장 큰 장점은 간단하고 투명하며 모든 논리가 명확하게 검증 될 수 있습니다. 가장 큰 단점은 흔들리는 시장에서 좋지 않은 성능을 발휘하고 시장 환경 판단과 함께 사용해야합니다. 기억하십시오: 모든 전략이 모든 시장 환경에서 우수한 성능을 발휘할 수 없습니다.

위험 팁: 역사적인 회귀는 미래의 수익을 의미하지 않으며, 전략은 연속적인 손실 위험이 있으며, 충격적인 시장은 좋지 않은 성능을 나타내며, 엄격한 자금 관리와 심리적 준비가 필요합니다.

전략 소스 코드
//@version=5
strategy("Clear Signal Trading Strategy V5", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1)

// ============================================================================
// VISUAL CONFIGURATION
// ============================================================================
var color STRONG_BUY = #00ff00
var color BUY = #00dbff  
var color NEUTRAL = #ffff00
var color SELL = #ff6b6b
var color STRONG_SELL = #ff0000

// ============================================================================
// INPUT SETTINGS - SIMPLIFIED
// ============================================================================

// Core Settings
core_group = "Core Strategy Settings"
signal_sensitivity = input.string("Balanced", "Signal Sensitivity", ["Conservative", "Balanced", "Aggressive"], group=core_group, tooltip="Conservative = Fewer, higher quality signals | Aggressive = More frequent signals")
use_confirmation = input.bool(true, "Require Volume Confirmation", group=core_group, tooltip="Only trade when volume is above average")
show_labels = input.bool(true, "Show Signal Labels", group=core_group)
show_dashboard = input.bool(true, "Show Info Panel", group=core_group)

// Risk Management
risk_group = "Risk Management"
risk_percent = input.float(2.0, "Risk Per Trade (%)", minval=0.5, maxval=5.0, step=0.5, group=risk_group)
use_stop_loss = input.bool(true, "Use Stop Loss", group=risk_group)
sl_type = input.string("ATR", "Stop Loss Type", ["ATR", "Percentage", "Recent Low/High"], group=risk_group)
sl_atr_mult = input.float(2.0, "ATR Multiplier for Stop", minval=1.0, maxval=4.0, group=risk_group)
sl_percent = input.float(3.0, "Percentage Stop (%)", minval=1.0, maxval=10.0, group=risk_group)
use_take_profit = input.bool(true, "Use Take Profit Targets", group=risk_group)
tp_ratio = input.float(2.0, "Risk:Reward Ratio", minval=1.0, maxval=5.0, step=0.5, group=risk_group)

// ============================================================================
// CORE CALCULATIONS
// ============================================================================

// Price Action
ema_fast = ta.ema(close, 20)
ema_slow = ta.ema(close, 50)
ema_trend = ta.ema(close, 200)

// Trend Detection
price_above_trend = close > ema_trend
price_below_trend = close < ema_trend
fast_above_slow = ema_fast > ema_slow
fast_below_slow = ema_fast < ema_slow

// Clear Trend Signals
uptrend = price_above_trend and fast_above_slow
downtrend = price_below_trend and fast_below_slow

// ATR for Volatility
atr = ta.atr(14)
atr_percent = (atr / close) * 100
normal_volatility = atr_percent < 3

// Volume Analysis  
volume_ma = ta.sma(volume, 20)
high_volume = volume > volume_ma * 1.2
volume_spike = volume > volume_ma * 1.5

// RSI for Momentum
rsi = ta.rsi(close, 14)
rsi_bullish = rsi > 50 and rsi < 70
rsi_bearish = rsi < 50 and rsi > 30
rsi_neutral = rsi >= 30 and rsi <= 70

// MACD for Confirmation
[macd, signal, hist] = ta.macd(close, 12, 26, 9)
macd_bullish = hist > 0 and hist > hist[1]
macd_bearish = hist < 0 and hist < hist[1]

// ============================================================================
// SIGNAL LOGIC - CLEAR AND SIMPLE
// ============================================================================

// Entry Conditions Score (0-5 points for clarity)
calculate_signal_quality(is_buy) =>
    score = 0
    
    if is_buy
        // Trend alignment (2 points max)
        if uptrend
            score := score + 2
        else if price_above_trend
            score := score + 1
            
        // Momentum (1 point)
        if macd_bullish
            score := score + 1
            
        // RSI not overbought (1 point)
        if rsi_bullish
            score := score + 1
            
        // Volume confirmation (1 point)
        if high_volume
            score := score + 1
    else
        // Trend alignment (2 points max)
        if downtrend
            score := score + 2
        else if price_below_trend
            score := score + 1
            
        // Momentum (1 point)
        if macd_bearish
            score := score + 1
            
        // RSI not oversold (1 point)
        if rsi_bearish
            score := score + 1
            
        // Volume confirmation (1 point)
        if high_volume
            score := score + 1
    
    score

// Signal Thresholds
min_score = signal_sensitivity == "Conservative" ? 4 : signal_sensitivity == "Balanced" ? 3 : 2

// Primary Signal Detection
ema_cross_up = ta.crossover(ema_fast, ema_slow)
ema_cross_down = ta.crossunder(ema_fast, ema_slow)

// Calculate Signal Quality
buy_quality = calculate_signal_quality(true)
sell_quality = calculate_signal_quality(false)

// Generate Clear Signals
buy_signal = ema_cross_up and buy_quality >= min_score and (not use_confirmation or high_volume) and normal_volatility
sell_signal = ema_cross_down and sell_quality >= min_score and (not use_confirmation or high_volume) and normal_volatility

// Signal Strength for Display
signal_strength(quality) =>
    quality >= 4 ? "STRONG" : quality >= 3 ? "GOOD" : "WEAK"

// ============================================================================
// POSITION MANAGEMENT
// ============================================================================

// Stop Loss Calculation
calculate_stop_loss(is_long) =>
    stop = 0.0
    if sl_type == "ATR"
        stop := is_long ? close - atr * sl_atr_mult : close + atr * sl_atr_mult
    else if sl_type == "Percentage"
        stop := is_long ? close * (1 - sl_percent/100) : close * (1 + sl_percent/100)
    else  // Recent Low/High
        lookback = 10
        stop := is_long ? ta.lowest(low, lookback) : ta.highest(high, lookback)
    stop

// Take Profit Calculation
calculate_take_profit(entry, stop, is_long) =>
    risk = math.abs(entry - stop)
    tp = is_long ? entry + (risk * tp_ratio) : entry - (risk * tp_ratio)
    tp

// ============================================================================
// STRATEGY EXECUTION
// ============================================================================

// Entry Logic
if buy_signal and strategy.position_size == 0
    stop_loss = calculate_stop_loss(true)
    take_profit = calculate_take_profit(close, stop_loss, true)
    
    strategy.entry("BUY", strategy.long)
    
    if use_stop_loss
        strategy.exit("EXIT_BUY", "BUY", stop=stop_loss, limit=use_take_profit ? take_profit : na)

if sell_signal and strategy.position_size == 0
    stop_loss = calculate_stop_loss(false)
    take_profit = calculate_take_profit(close, stop_loss, false)
    
    strategy.entry("SELL", strategy.short)
    
    if use_stop_loss
        strategy.exit("EXIT_SELL", "SELL", stop=stop_loss, limit=use_take_profit ? take_profit : na)

// ============================================================================
// VISUAL ELEMENTS
// ============================================================================

// Plot EMAs with colors indicating trend
plot(ema_fast, "Fast EMA (20)", color=fast_above_slow ? color.new(BUY, 50) : color.new(SELL, 50), linewidth=2)
plot(ema_slow, "Slow EMA (50)", color=fast_above_slow ? color.new(BUY, 70) : color.new(SELL, 70), linewidth=1)
plot(ema_trend, "Trend EMA (200)", color=color.new(color.gray, 50), linewidth=2)

// Background Color for Market State
market_color = uptrend ? color.new(BUY, 96) : downtrend ? color.new(SELL, 96) : na
bgcolor(market_color, title="Market Trend")


// ============================================================================
// ALERTS
// ============================================================================

alertcondition(buy_signal, "BUY Signal", "Clear BUY signal detected - Score: {{plot_0}}/5")
alertcondition(sell_signal, "SELL Signal", "Clear SELL signal detected - Score: {{plot_1}}/5")
alertcondition(buy_signal and buy_quality >= 4, "STRONG BUY Signal", "STRONG BUY signal detected")
alertcondition(sell_signal and sell_quality >= 4, "STRONG SELL Signal", "STRONG SELL signal detected")