
Strategi perdagangan konsensus multi-indikator adalah sistem perdagangan kuantitatif yang menggabungkan tiga indikator teknikal yang berbeza untuk mengesahkan isyarat perdagangan melalui saling mengesahkan antara indikator. Strategi ini menggabungkan sistem isyarat trend super trend bertimbangan kecairan (LWST) dan pendayung trend gelombang bertenaga (WT), yang melakukan pembelian atau penjualan hanya apabila sekurang-kurangnya dua indikator memberi isyarat ke arah yang sama.
Prinsip utama strategi perdagangan konsensus multi-indikator adalah untuk mengesahkan arah perdagangan melalui analisis pelbagai dimensi keadaan pasaran:
Trend super berat kecairan (LWST)Gabungan ATR dan maklumat lalu lintas untuk mencipta tali rintangan sokongan dinamik. Indikator ini menggabungkan penunjuk trend super tradisional dengan berat lalu lintas, menjadikan bandwidth lebih sensitif di kawasan lalu lintas yang tinggi. Proses pengiraan termasuk:
Sistem isyarat trendMenggunakan sistem EMA ganda untuk mengesan trend harga. Untuk menilai kekuatan trend pasaran dengan membandingkan perbezaan peratusan antara purata bergerak pantas dan perlahan. Apabila EMA pantas melebihi EMA perlahan mencapai paras paras yang ditetapkan, menghasilkan isyarat multihead; sebaliknya, menghasilkan isyarat kosong.
Pendayung trend gelombang bertenaga ((WT): Mengira nilai getaran berdasarkan tahap penyimpangan harga dari rata-rata rata-ratanya, untuk mengenal pasti keadaan overbought dan oversold. Indikator ini menghasilkan isyarat melalui langkah-langkah berikut:
Mekanisme isyarat konsensusStrategi: hanya menjalankan perdagangan apabila sekurang-kurangnya dua penunjuk mencapai kesepakatan. Ini dicapai dengan mengira jumlah penunjuk berbilang (dalam julat 3-3) yang menghasilkan isyarat beli apabila nilai lebih besar daripada sama dengan 2, dan menghasilkan isyarat jual apabila nilai lebih kecil daripada sama dengan -2.
Pengurusan Risiko: Setiap dagangan ditetapkan berdasarkan harga kemasukan (default 2%) dan berhenti (default 4%) dan keluar secara automatik apabila mana-mana syarat dipenuhi.
Penapisan isyarat dipertingkatkan: Memerlukan konsensus pelbagai penunjuk untuk melakukan perdagangan, mengurangkan isyarat yang menyesatkan yang mungkin dihasilkan oleh satu penunjuk, meningkatkan ketepatan perdagangan.
Beradaptasi dengan keadaan pasaran yang berbezaKetiga-tiga penunjuk ini memberi perhatian kepada sifat pasaran yang berbeza (trend, momentum, dan turun naik) yang membolehkan strategi kekal berkesan dalam keadaan pasaran yang berbeza.
Penyesuaian sensitif kecairanKeupayaan: Keupayaan yang lebih besar dengan penambahan kecairan menyesuaikan sensitiviti mengikut dinamika jumlah transaksi, membolehkan strategi menangkap perubahan trend dengan lebih cepat di kawasan keupayaan tinggi, dan lebih konservatif di kawasan keupayaan rendah.
Pengurusan risiko dalamanMekanisme Stop Loss dan Stop Stop yang direka untuk memberikan nisbah pulangan risiko yang jelas untuk setiap perdagangan, mengawal risiko perdagangan tunggal dalam julat yang boleh diterima.
Alat visual yang intuitifStrategi menyediakan jadual isyarat dan grafik masa nyata untuk membantu peniaga dengan cepat memahami keadaan pasaran semasa dan isyarat setiap petunjuk.
Pengurusan kewangan bersepaduPengurusan wang yang bijak dengan menetapkan saiz kedudukan berdasarkan hak dan kepentingan akaun, mengelakkan risiko yang berlebihan.
Kepekaan ParameterKaedah: Menggunakan pelbagai parameter yang boleh disesuaikan, tetapan parameter yang tidak betul boleh menyebabkan pengoptimuman berlebihan atau kurangnya isyarat. Kaedah penyelesaian: Melakukan analisis sensitiviti parameter yang komprehensif, memilih kombinasi parameter yang menunjukkan prestasi yang stabil dalam pelbagai keadaan pasaran.
Isyarat kelewatanPenyelesaian: Anda boleh mempertimbangkan untuk menetapkan kombinasi parameter yang berbeza untuk tempoh masa yang berbeza, atau menambah indikator jangka pendek yang lebih sensitif.
Pasaran horizontal tidak berkesanDalam pasaran yang tidak mempunyai trend yang jelas, beberapa indikator trend mungkin memberi isyarat campuran, menyebabkan perdagangan yang kerap atau tidak ada perdagangan. Penyelesaian: Tambah penapis yang khusus mengenal pasti pasaran melintang, berhenti berdagang apabila ia dikenali atau beralih ke strategi yang direka khas untuk melintang.
Risiko Hentian TetapMenggunakan peratusan berhenti tetap yang mungkin tidak sesuai dengan ciri-ciri turun naik aset yang berbeza. Penyelesaian: menyesuaikan jarak berhenti secara dinamik berdasarkan ATR atau kadar turun naik sejarah.
Risiko pengurusan danaCara penyelesaian: Sesuaikan saiz kedudukan mengikut keadaan pasaran dan dinamika kekuatan isyarat, melaksanakan strategi perdagangan terdesentralisasi.
Pengaturan parameter dinamik:
Tambah penapis persekitaran pasaran:
Optimumkan mekanisme hentian/penghentian kerugian:
Kekuatan isyarat bertaraf:
Penapis masa:
Strategi perdagangan konsensus pelbagai indikator mewujudkan sistem perdagangan yang kuat dengan mengintegrasikan supertrend, sistem isyarat trend bertimbangan kecairan dan pendayung trend gelombang yang dipertingkatkan. Kelebihan utamanya adalah bahawa mekanisme konsensus pelbagai indikator meningkatkan kebolehpercayaan isyarat dengan ketara, sementara komponen berat kecairan menambah kepekaan kepada strategi kedalaman pasaran.
Walau bagaimanapun, strategi masih mempunyai ruang untuk pengoptimuman, terutamanya dalam aspek penyesuaian parameter, pengenalan keadaan pasaran dan stop loss dinamik. Dengan melaksanakan arah pengoptimuman yang disyorkan, terutamanya dengan menubuhkan penapis persekitaran pasaran dan sistem penarafan kekuatan isyarat, strategi ini dapat meningkatkan penyesuaian dan kestabilan dalam pelbagai keadaan pasaran.
Secara keseluruhannya, ini adalah sistem perdagangan kuantitatif yang direka dengan baik, sesuai untuk pedagang yang berpengalaman untuk melakukan pengembalian dan pengoptimuman parameter sebelum perdagangan. Reka bentuk modular strategi juga memudahkan pengubahsuaian dan pengembangan mengikut keperluan individu.
/*backtest
start: 2024-03-25 00:00:00
end: 2025-03-24 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-Indicator Consensus Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// =================== Input Parameters ===================
// Liquidity Weighted Supertrend
lwst_period = input.int(10, "LWST Period", minval=1, tooltip="Period for ATR calculation")
lwst_multiplier = input.float(3.0, "LWST Multiplier", minval=0.1, tooltip="Multiplier for ATR bands")
lwst_length = input.int(20, "Volume SMA Length", minval=1, tooltip="Length for volume SMA")
// Trend Signals
trend_length = input.int(14, "Trend Length", minval=1, tooltip="Length for EMA calculation")
trend_threshold = input.float(0.5, "Trend Threshold", minval=0.1, tooltip="Percentage threshold for trend signals")
// Enhanced Wavetrend
wt_channel_length = input.int(9, "WT Channel Length", minval=1, tooltip="Smoothing period for initial calculations")
wt_average_length = input.int(12, "WT Average Length", minval=1, tooltip="Smoothing period for final signal")
wt_ma_length = input.int(3, "WT MA Length", minval=1, tooltip="Moving average length for signal line")
wt_overbought = input.float(53, "WT Overbought", minval=0, tooltip="Level to identify overbought conditions")
wt_oversold = input.float(-53, "WT Oversold", minval=-100, tooltip="Level to identify oversold conditions")
// Risk Management
sl_percent = input.float(2.0, "Stop Loss %", minval=0.1, tooltip="Stop loss percentage from entry")
tp_percent = input.float(4.0, "Take Profit %", minval=0.1, tooltip="Take profit percentage from entry")
// =================== Indicator 1: Liquidity Weighted Supertrend ===================
// Volume-weighted component for dynamic sensitivity
vol_sma = ta.sma(volume, lwst_length)
vol_weight = volume / vol_sma
// ATR-based bands with volume weighting
atr = ta.atr(lwst_period)
upperBand = hl2 + lwst_multiplier * atr * vol_weight
lowerBand = hl2 - lwst_multiplier * atr * vol_weight
// Trend determination based on price action
var float lwst_trend = 0.0
lwst_trend := close > lwst_trend[1] ? 1 : close < lwst_trend[1] ? -1 : lwst_trend[1]
// =================== Indicator 2: Trend Signals ===================
// Dual EMA system for trend detection
fast_ema = ta.ema(close, trend_length)
slow_ema = ta.ema(close, trend_length * 2)
trend_diff = (fast_ema - slow_ema) / slow_ema * 100
trend_signal = trend_diff > trend_threshold ? 1 : trend_diff < -trend_threshold ? -1 : 0
// =================== Indicator 3: Enhanced Wavetrend ===================
// Calculate Wavetrend components
ap = hlc3 // Typical price
esa = ta.ema(ap, wt_channel_length) // Smoothed price
d = ta.ema(math.abs(ap - esa), wt_channel_length) // Average volatility
ci = (ap - esa) / (0.015 * d) // Base oscillator
tci = ta.ema(ci, wt_average_length) // Smoothed oscillator
// Generate main and signal lines
wt1 = tci
wt2 = ta.sma(wt1, wt_ma_length)
// Generate Wavetrend Signal based on overbought/oversold conditions
wt_signal = 0
wt_signal := wt1 > wt_overbought and wt2 > wt_overbought ? -1 :
wt1 < wt_oversold and wt2 < wt_oversold ? 1 :
wt_signal[1]
// =================== Consensus Signal Generation ===================
// Count bullish signals (1 point for each bullish indicator)
var int consensus_count = 0
consensus_count := (lwst_trend == 1 ? 1 : 0) +
(trend_signal == 1 ? 1 : 0) +
(wt_signal == 1 ? 1 : 0)
// Generate trading signals when majority (2+ indicators) agree
bool buy_signal = consensus_count >= 2
bool sell_signal = consensus_count <= -2
// =================== Trade Execution ===================
// Long position entry and exit with risk management
if (buy_signal and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", "Long",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// Short position entry and exit with risk management
if (sell_signal and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", "Short",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// =================== Visualization ===================
// Signal markers for entry points
plotshape(buy_signal ? low : na, "Buy Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(sell_signal ? high : na, "Sell Signal", shape.triangledown, location.abovebar, color.red, size=size.small)
// Indicator lines
plot(wt1, "Wavetrend 1", color.blue, linewidth=1)
plot(wt2, "Wavetrend 2", color.orange, linewidth=1)
plot(wt_overbought, "Overbought", color.red, linewidth=1)
plot(wt_oversold, "Oversold", color.green, linewidth=1)
plot(fast_ema, "Fast EMA", color.yellow, linewidth=1)
plot(slow_ema, "Slow EMA", color.white, linewidth=1)
plot(lwst_trend == 1 ? upperBand : na, "Upper Band", color.green, linewidth=2)
plot(lwst_trend == -1 ? lowerBand : na, "Lower Band", color.red, linewidth=2)
// =================== Information Table ===================
// Real-time display of indicator signals
var table info = table.new(position.top_right, 2, 4)
table.cell(info, 0, 0, "Indicator", bgcolor=color.gray, text_color=color.white)
table.cell(info, 1, 0, "Signal", bgcolor=color.gray, text_color=color.white)
table.cell(info, 0, 1, "LWST", text_color=color.white)
table.cell(info, 1, 1, str.tostring(lwst_trend), text_color=lwst_trend == 1 ? color.green : color.red)
table.cell(info, 0, 2, "Trend", text_color=color.white)
table.cell(info, 1, 2, str.tostring(trend_signal), text_color=trend_signal == 1 ? color.green : color.red)
table.cell(info, 0, 3, "Wavetrend", text_color=color.white)
table.cell(info, 1, 3, str.tostring(wt_signal), text_color=wt_signal == 1 ? color.green : color.red)