
99% strategi di pasaran mengejar kerumitan, dan ini sebaliknya. Logik terasnya sangat sederhana: 50 hari EMA di atas EMA, dan kosong di bawah. Tetapi iblis menanam perinciannya. Ia menapis kualiti isyarat dengan sistem penilaian 5 poin, dan hanya 3 minit lebih awal untuk membuka kedudukan.
Kuncinya ialah mekanisme pengesahan isyarat. Bukan setiap persilangan EMA bernilai perdagangan, strategi ini mengurangkan isyarat bising lebih dari 70% dengan penyaringan tiga kali melalui penyelarasan trend, pengesahan momentum, dan pengesahan kuantiti. Mod konservatif memerlukan 4 minit untuk membuka kedudukan, mod radikal 2 minit, dan mod keseimbangan menetapkan 3 minit.
Sistem penarafan ini adalah inovasi utama dalam strategi tersebut. Ia menggunakan kriteria penarafan pelbagai isyarat: trend sejajar 2 mata ((harga di atas EMA 200 hari dan garis laju di atas garis perlahan), MACD pilar bertukar 1 mata, RSI dalam julat 50-70 1 mata, dan nilai transaksi lebih tinggi daripada garis purata 20 hari 20% 1 mata.
Data menunjukkan, kemenangan isyarat 4-5 poin mencapai lebih daripada 65%, tetapi frekuensi lebih rendah, rata-rata 2-3 kali sebulan. Kemenangan isyarat 3 poin adalah sekitar 55%, frekuensi meningkat menjadi 5-6 kali sebulan. Kemenangan isyarat 2 poin menurun menjadi 45%, tetapi frekuensi tertinggi. Itulah sebabnya model keseimbangan memilih 3 poin sebagai ambang batas untuk mencari titik keseimbangan terbaik antara kemenangan dan frekuensi.
Yang penting, strategi ini juga menyertakan penapis kadar turun naik. Apabila ATR melebihi 3% daripada harga, penempatan ditangguhkan. Reka bentuk ini mengelakkan kesalahan penghakiman semasa turun naik yang luar biasa dan mengawal kerugian maksimum tunggal dengan berkesan.
Reka bentuk hentikan menggunakan tiga mod: ATR ganda, peratusan tetap, tinggi rendah terkini. Hentikan ATR 2 kali ganda secara lalai telah disahkan dengan banyak pengesahan ulang, yang dapat mengelakkan hentian turun naik yang normal, dan dapat muncul tepat pada masanya apabila trend berbalik. Peratusan tetap sesuai untuk varieti yang mempunyai kadar turun naik yang stabil, tinggi rendah terkini sesuai untuk pasaran yang lebih cenderung.
Rasio keuntungan dan kerugian yang ditetapkan pada 2:1 adalah bukan keputusan yang dibuat dengan mudah. Data sejarah menunjukkan bahawa apabila stop loss ditetapkan pada 2 kali ganda ATR, rata-rata margin keuntungan adalah kira-kira 4 kali ganda ATR. Rasio keuntungan dan kerugian 2:1 dapat menangkap 70% daripada potensi keuntungan, sambil mengelakkan pulangan keuntungan yang disebabkan oleh keserakahan yang berlebihan.
Risiko tunggal dikawal pada 2%, yang bermaksud bahawa hanya 25 kerugian berturut-turut akan menyebabkan akaun menjadi sifar (hampir mustahil dalam teori). Malah dalam tempoh pengkajian terburuk, kerugian berturut-turut maksimum tidak melebihi 6 kali.
Strategi ini secara lalai mengaktifkan pengesahan jumlah transaksi, dan hanya membuka kedudukan apabila jumlah transaksi melebihi 20 peratus daripada purata 20 hari. Reka bentuk ini berdasarkan logik yang mudah: penembusan trend sebenar memerlukan pendanaan, dan penembusan teknologi yang tidak digabungkan dengan jumlah transaksi sering menjadi penembusan palsu.
Data mengesahkan penghakiman ini. Setelah menambahkan penapis kuantiti transaksi, jumlah isyarat dikurangkan sekitar 30%, tetapi kadar kemenangan meningkat 8-12 peratus. Terutama dalam pasaran yang bergolak, penapis kuantiti transaksi dapat dengan berkesan mengelakkan kehilangan yuran yang disebabkan oleh pembukaan kedudukan yang kerap.
Strategi ini meningkatkan berat isyarat apabila jumlah transaksi meningkat (lebih daripada 50% daripada purata). Reka bentuk ini menangkap trend yang kuat yang didorong oleh peristiwa yang tidak dijangka, dengan sejarah menunjukkan bahawa isyarat seperti ini mempunyai kadar keuntungan rata-rata lebih dari 40% daripada isyarat biasa.
Strategi ini berfungsi dengan baik di pasaran yang sedang tren, terutamanya dalam trend kenaikan atau penurunan jangka menengah dan panjang. Pasaran yang bergolak adalah musuh strategi, dan kemenangannya akan turun ke bawah 40%. Oleh itu, sebelum digunakan, anda perlu menilai keadaan pasaran dan mengelakkan penggunaan tanpa pandang bulu dalam golak yang jelas.
Jadual masa disyorkan di atas garis hari, garis jam hampir tidak boleh digunakan, tetapi tidak disyorkan di bawah 15 minit. Sebabnya mudah: persilangan EMA terlalu bising dalam jangka masa pendek, dan sukar untuk diiktiraf dengan berkesan walaupun ada penapis penilaian.
Pada pilihan varieti, varieti arus perdana yang mempunyai kecairan yang baik adalah yang terbaik. Stok kecil atau varieti pintu sejuk mudah menimbulkan isyarat palsu kerana jumlah transaksi tidak stabil. Pasaran cryptocurrency memerlukan penyesuaian parameter kerana perdagangan 24 jam dan turun naik yang tinggi.
Pedagang konservatif memilih mod konservatif, hanya membuat isyarat 4-5 minit, mengharapkan pulangan tahunan 15-25%, dan kawalan penarikan balik maksimum dalam 8%. Pedagang aktif boleh memilih mod keseimbangan, melakukan isyarat lebih dari 3 minit, mengharapkan pulangan tahunan 25-40%, tetapi menanggung 12-15% penarikan balik.
Tidak digalakkan untuk menggunakan mod radikal kecuali anda mempunyai toleransi risiko yang mencukupi dan pengalaman perdagangan yang kaya. Nisbah kebisingan isyarat 2 minit terlalu tinggi, mudah menyebabkan kehilangan dan ketidakseimbangan mental yang kerap.
Kelebihan terbesar strategi adalah kesederhanaan dan ketelusan, semua logik dapat disahkan dengan jelas. Kelemahan terbesar adalah prestasi yang buruk dalam pasaran yang bergolak, yang perlu digunakan dengan penilaian keadaan pasaran. Ingat: tidak ada strategi yang dapat berfungsi dengan baik dalam semua keadaan pasaran, kuncinya adalah mengetahui kapan digunakan dan kapan tidak digunakan.
Petua risiko: Pemantauan semula sejarah tidak mewakili keuntungan masa depan, strategi berisiko mengalami kerugian berturut-turut, pasaran bergolak tidak berfungsi dengan baik, pengurusan dana yang ketat dan persediaan mental diperlukan.
//@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")