
99% dari strategi di pasar mengejar kompleksitas, dan strategi ini sebaliknya. Logika intinya sangat sederhana: 50 hari lebih banyak EMA di EMA, 50 hari lebih sedikit di EMA. Namun, setan mencuci detail. Ini memfilter kualitas sinyal dengan sistem penilaian 5 poin, dan hanya 3 menit lebih banyak untuk membuka posisi.
Kuncinya adalah bahwa mekanisme konfirmasi sinyal. Tidak setiap EMA crossover adalah layak untuk diperdagangkan, strategi melalui keselarasan tren, konfirmasi momentum, verifikasi kuantitas transaksi triple filter, mengurangi sinyal noise lebih dari 70%. Mode konservatif membutuhkan 4 poin untuk membuka posisi, mode radikal 2 poin, mode keseimbangan menetapkan 3 poin.
Sistem penilaian ini adalah inovasi inti dari strategi tersebut. Melakukan kriteria penilaian multi-sinyal: trend alignment 2 poin (harga di atas EMA 200 hari dan garis cepat di atas garis lambat), MACD pilar bergeser 1 poin, RSI di antara 50-70 1 poin, volume transaksi lebih dari 20% dari garis rata-rata 20 hari 1 poin.
Data menunjukkan, kemenangan sinyal 4-5 poin mencapai lebih dari 65%, tetapi frekuensi lebih rendah, rata-rata 2-3 kali per bulan. Kemenangan sinyal 3 poin sekitar 55%, frekuensi meningkat menjadi 5-6 kali per bulan. Kemenangan sinyal 2 poin turun menjadi 45%, tetapi frekuensi tertinggi. Itulah mengapa mode keseimbangan memilih 3 poin sebagai ambang batas untuk menemukan titik keseimbangan optimal antara kemenangan dan frekuensi.
Yang penting, strategi ini juga menyertakan filter tingkat fluktuasi. Jika ATR lebih dari 3% dari harga, posisi ditutup. Desain ini menghindari kesalahan penilaian selama fluktuasi yang tidak biasa, dan secara efektif mengendalikan kerugian maksimum per satuan.
Stop loss dirancang dengan tiga mode: ATR ganda, persentase tetap, tinggi dan rendah akhir-akhir ini. Stop loss ATR 2x secara default telah diverifikasi melalui banyak pengetesan ulang, yang dapat menghindari stop loss fluktuasi normal dan dapat muncul tepat waktu ketika tren berbalik. Persentase tetap cocok untuk varietas dengan tingkat fluktuasi yang stabil, tinggi dan rendah akhir-akhir ini cocok untuk pasar yang lebih cenderung.
Rasio keuntungan dan kerugian yang disetel pada 2:1 bukan keputusan yang dibuat dengan cara memukul kepala. Data historis menunjukkan bahwa ketika stop loss disetel pada 2x ATR, rata-rata margin keuntungan adalah sekitar 4x ATR. Rasio keuntungan dan kerugian 2:1 mampu menangkap 70% dari potensi keuntungan, sekaligus menghindari pembalikan keuntungan yang disebabkan oleh keserakahan yang berlebihan.
Risiko tunggal dikendalikan pada 2%, yang berarti hanya 25 kerugian berturut-turut yang akan menyebabkan akun menjadi nol (hampir tidak mungkin dalam teori). Bahkan dalam periode pengembalian yang paling buruk, kerugian berturut-turut maksimum tidak lebih dari 6 kali.
Strategi ini secara default mengaktifkan konfirmasi volume, dan hanya membuka posisi jika volume melebihi 20 persen dari rata-rata 20 hari. Desain ini didasarkan pada logika sederhana: terobosan tren yang benar membutuhkan dorongan dana, dan terobosan teknologi yang tidak didukung volume cenderung palsu.
Data membuktikan penilaian ini. Setelah menambahkan penyaringan volume transaksi, jumlah sinyal berkurang sekitar 30%, tetapi tingkat kemenangan meningkat 8-12 poin persentase. Khususnya di pasar yang bergoyang, penyaringan volume transaksi dapat secara efektif menghindari kerugian biaya prosedur yang disebabkan oleh pembukaan posisi yang sering.
Strategi meningkatkan bobot sinyal ketika volume transaksi melonjak (lebih dari 50 persen dari rata-rata). Desain ini menangkap tren yang kuat yang didorong oleh peristiwa yang tidak terduga, yang secara historis menunjukkan bahwa rata-rata keuntungan dari sinyal semacam itu lebih dari 40 persen lebih tinggi daripada sinyal biasa.
Strategi ini berkinerja terbaik di pasar tren, terutama dalam tren naik atau turun jangka menengah dan panjang. Pasar yang bergoyang horizontal adalah musuh strategi, dan kemenangannya akan turun ke bawah 40%. Oleh karena itu, sebelum digunakan, perlu untuk menilai kondisi pasar dan menghindari penggunaan buta pada goyang dalam rentang yang jelas.
Siklus waktu disarankan di atas garis waktu, garis jam sedikit tersedia, tetapi tidak disarankan di bawah 15 menit. Alasannya sederhana: EMA crossover terlalu bising dalam periode singkat, bahkan dengan filter peringkat sulit untuk diidentifikasi secara efektif.
Pada pilihan varietas, varietas utama dengan likuiditas yang baik adalah yang paling efektif. Saham minoritas atau varietas pintu dingin mudah menimbulkan sinyal palsu karena volume transaksi tidak stabil. Pasar cryptocurrency memerlukan penyesuaian parameter karena perdagangan 24 jam dan volatilitas tinggi, dan disarankan untuk meningkatkan nilai filter ATR menjadi 5%.
Pedagang konservatif memilih mode konservatif, hanya melakukan sinyal 4-5 poin, mengharapkan pengembalian tahunan 15-25%, kontrol penarikan maksimum dalam 8%. Pedagang aktif dapat memilih mode keseimbangan, melakukan sinyal 3 poin atau lebih, mengharapkan pengembalian tahunan 25-40%, tetapi harus menanggung 12-15% penarikan.
Tidak disarankan untuk menggunakan modus radikal kecuali Anda memiliki toleransi risiko yang cukup dan pengalaman perdagangan yang cukup. Rasio kebisingan sinyal 2 menit terlalu tinggi, mudah menyebabkan seringnya stop loss dan ketidakseimbangan mental.
Keuntungan terbesar dari strategi adalah kesederhanaan dan transparansi, semua logika dapat diverifikasi dengan jelas. Kelemahan terbesar adalah kinerja yang buruk di pasar yang bergoyang, yang perlu digunakan dengan penilaian lingkungan pasar. Ingat: tidak ada strategi yang dapat berkinerja baik di semua lingkungan pasar, kuncinya adalah mengetahui kapan harus digunakan dan kapan tidak.
Tips risiko: Retrospeksi historis tidak mewakili keuntungan masa depan, ada risiko kerugian berturut-turut dalam strategi, kinerja pasar yang buruk, manajemen dana yang ketat dan persiapan psikologis 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")