
Strategi dagangan goyah beradaptasi multi-faktor adalah sistem perdagangan komprehensif yang menggabungkan analisis struktur pasaran, indikator dinamik dan pengukuran kadar turun naik. Strategi ini adalah berdasarkan kepada teknik carta Heikin Ashi, menggabungkan pelbagai purata bergerak (EMA, WMA, SMA, VWAP), indikator RSI dan pengesahan kuantiti transaksi untuk mengenal pasti titik perubahan trend yang berpotensi dan melakukan perdagangan berkemungkinan tinggi.
Prinsip teras strategi ini adalah untuk menangkap perubahan struktur pasaran melalui pengesahan pelbagai petunjuk, sambil mengawal risiko dengan ketat. Mekanisme pelaksanaan adalah seperti berikut:
Heikin Ashi bertukarStrategi: Mula-mula menukar garis K standard ke carta Heikin Ashi untuk mengurangkan bunyi pasaran dan menonjolkan arah trend.
Komposisi purata bergerak bergandaStrategi ini mengira dan menggabungkan 34 purata bergerak berkala dari empat jenis yang berbeza:
Logik perdagangan dua mod:
Sistem pengurusan statusStrategi: Menggunakan pembolehubah status (“NEUTRAL”, “WAIT_ENTRY”, “BUY”, “SELL”) untuk mengesan dan menguruskan status transaksi, mengelakkan perdagangan yang kerap dan isyarat palsu.
Matlamat Stop Loss dan Keuntungan:
Dengan menganalisis kod secara mendalam, strategi ini menunjukkan kelebihan yang ketara:
Pengesahan pelbagai faktor mengurangkan isyarat palsuGabungan dengan purata bergerak, RSI, jumlah transaksi dan pengesahan harga, mengurangkan kemungkinan penipuan palsu dan meningkatkan kualiti perdagangan.
Kebolehan menyesuaikan diriDengan menggunakan dua logik perdagangan yang berbeza (RSI dan garis pendek), strategi dapat menyesuaikan diri dengan keadaan pasaran yang berbeza, dan dapat berfungsi dengan berkesan di pasaran yang sedang tren atau di pasaran yang bergolak.
Pengurusan risiko yang jelas: Menggunakan nisbah ganjaran risiko tetap dan kedudukan berhenti rugi berdasarkan struktur pasaran, setiap perdagangan mempunyai kawalan risiko yang jelas, mengelakkan kerugian yang berlebihan yang disebabkan oleh penilaian subjektif.
Pengurusan status mengurangkan perdagangan berlebihan: Melalui pembolehubah status, status dagangan dikesan dan diuruskan untuk mengelakkan kemasukan dan keluar pasaran yang kerap, mengurangkan kos dagangan dan turun naik emosi.
Heikin Ashi pemprosesan halusMenggunakan teknologi Heikin Ashi untuk mengurangkan kebisingan pasaran, menjadikan trend lebih jelas dan membantu mengenal pasti titik perubahan pasaran yang sebenar.
Tetapan parameter yang fleksibelParameter utama seperti kitaran semakan semula yang bergolak dan nisbah keuntungan risiko boleh disesuaikan mengikut pasaran yang berbeza dan keutamaan risiko individu.
Komposisi pelbagai purata bergerakDengan menggabungkan empat jenis purata bergerak yang berbeza, ia mengurangkan bias yang mungkin disebabkan oleh satu petunjuk dan menyediakan rujukan harga yang lebih stabil.
Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:
Perdagangan berlebihan dalam pasaran yang bergolakDalam pasaran melintang yang tidak mempunyai trend yang jelas, strategi mungkin menghasilkan terlalu banyak isyarat perdagangan, yang membawa kepada peningkatan kos masuk dan keluar yang kerap. Penyelesaian adalah dengan menambah syarat penapis atau menghentikan perdagangan apabila ia dikenali sebagai pasaran melintang.
Kemungkinan terlalu jauh.: Menggunakan titik tinggi dan rendah yang bergoyang sebagai kedudukan hentian dalam beberapa kes boleh menyebabkan kedudukan hentian berada terlalu jauh dari titik masuk, meningkatkan risiko perdagangan tunggal. Anda boleh mempertimbangkan untuk menetapkan had jarak hentian maksimum atau menggunakan ATR untuk mengoptimumkan kedudukan hentian.
Had Had Had Had Had Had Had Had HadDalam keadaan pasaran yang berbeza, nisbah keuntungan risiko yang optimum mungkin berbeza. Dalam pasaran yang kuat trend, nisbah keuntungan risiko 1: 3 mungkin terlalu kecil; dan dalam pasaran yang kurang turun naik, mungkin sukar untuk dicapai.
Bergantung kepada peristiwa sejarahBergantung kepada titik getaran sejarah boleh menyebabkan ketinggalan dalam pasaran yang berubah dengan cepat. Pada masa turun naik yang kuat, titik getaran masa lalu mungkin tidak lagi mempunyai nilai rujukan.
Kekurangan mekanisme penyesuaian kadar turun naikStrategi tidak mempunyai mekanisme untuk menyesuaikan parameter mengikut turun naik pasaran, dan mungkin tidak konsisten dalam persekitaran turun naik yang tinggi dan rendah. Pengenalan penunjuk ATR boleh dipertimbangkan untuk menyesuaikan parameter perdagangan secara dinamik.
Berdasarkan analisis mendalam kod, berikut adalah arah yang mungkin untuk pengoptimuman:
Tahap risiko dan ganjaran dinamikBergantung kepada kadar turun naik pasaran (seperti ATR) secara automatik menyesuaikan nisbah risiko / keuntungan, menggunakan nisbah yang lebih kecil dalam persekitaran turun naik yang rendah, menggunakan nisbah yang lebih besar dalam persekitaran turun naik yang tinggi, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Tambah penapis trend: Memperkenalkan penapis trend untuk kitaran yang lebih panjang, hanya berdagang apabila ia selaras dengan arah trend utama, mengelakkan risiko perdagangan berlawanan arah.
Optimumkan parameter purata bergerakStrategi semasa menggunakan 34 kitaran tetap, pertimbangkan untuk menguji tetapan kitaran yang berbeza atau menggunakan kitaran penyesuaian untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Memperkenalkan mekanisme penguncian keuntungan separa: Apabila harga mencapai tahap keuntungan tertentu, bergerak berhenti ke paras kos atau mengunci sebahagian keuntungan untuk melindungi keuntungan yang telah dicapai dari penarikan balik pasaran.
Menambah penapis masaMengelakkan perdagangan pada masa-masa ketika pasaran tidak menentu (seperti bursa Asia) atau sebelum dan selepas siaran berita utama, mengurangkan risiko yang tidak perlu.
Memperbaiki syarat pengesahan jumlahStrategi semasa menggunakan nilai ambang lalu lintas yang mudah ((1.5 kali rata-rata 20 kitaran) dan boleh mempertimbangkan pengenalan corak lalu lintas yang lebih kompleks, seperti keserasian trend lalu lintas atau ciri-ciri lalu lintas yang tiba-tiba.
Tambah modul pengurusan kedudukan: Sesuaikan saiz kedudukan mengikut pergerakan kadar turun naik pasaran semasa dan kekuatan isyarat, tambah kedudukan pada isyarat kepastian tinggi, kurangkan kedudukan pada isyarat kabur.
Pengoptimuman kitaran pengulangan: Melakukan pengkajian semula secara menyeluruh terhadap kitaran semakan semula yang berbeza untuk mencari parameter yang paling stabil untuk prestasi dalam pelbagai keadaan pasaran.
Strategi perdagangan goyah beradaptasi pelbagai faktor adalah sistem perdagangan komprehensif yang menggabungkan pelbagai petunjuk teknikal dan analisis struktur pasaran. Kelebihan utamanya adalah pengesahan pelbagai isyarat, pilihan logik perdagangan yang fleksibel, dan pengurusan risiko yang ketat. Strategi ini dapat mengenal pasti potensi titik peralihan trend dengan berkesan dengan mengurangkan kebisingan pasaran melalui teknik Heikin Ashi, menggunakan pelbagai purata bergerak sebagai rujukan harga, digabungkan dengan RSI dan pengesahan jumlah transaksi.
Nisbah ganjaran risiko tetap dan kedudukan hentian berdasarkan titik goyah memberikan kerangka kawalan risiko yang jelas, tetapi juga membawa beberapa batasan. Strategi ini dapat meningkatkan lagi kebolehpasaran dan kestabilan dengan melaksanakan langkah-langkah pengoptimuman yang disyorkan, seperti nisbah ganjaran risiko dinamik, penapis trend dan mekanisme penguncian keuntungan separa.
Yang paling penting, peniaga harus memahami prinsip dan batasan strategi ini, membuat penyesuaian yang diperlukan berdasarkan keutamaan risiko dan pemerhatian pasaran mereka sendiri. Tidak ada strategi yang sempurna, tetapi dengan pengoptimuman berterusan dan pengurusan risiko yang ketat, strategi perdagangan beradaptasi faktor-faktor boleh menjadi senjata yang kuat dalam kotak alat peniaga.
/*backtest
start: 2025-07-11 00:00:00
end: 2025-08-06 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":5000000}]
*/
//@version=6
strategy("Cnagda Fixed Swing SL & RR 1:3", overlay=true, max_boxes_count=500, max_labels_count=500)
input_strategy = input.string("RSI", "Trade Logic", options=["RSI", "Scalp"])
swing_lookback = input.int(34, "Swing Lookback", minval=5)
rr_multiple = input.int(3, "Risk Reward Multiple", minval=1)
// --- Heikin Ashi Calculation ---
ha_close = (open + high + low + close) / 4
var float ha_open = na
if bar_index == 0
ha_open := (open + close) / 2
else
ha_open := (ha_open[1] + ha_close[1]) / 2
ha_high = math.max(high, math.max(ha_open, ha_close))
ha_low = math.min(low, math.min(ha_open, ha_close))
// --- MA/Signal Logic on Heikin Ashi ---
ma1 = ta.ema(ha_close, 34)
ma2 = ta.wma(ha_close, 34)
wma34 = ta.wma(ha_close, 34)
ema34 = ta.ema(ha_close, 34)
sma34 = ta.sma(ha_close, 34)
vwma34 = ta.vwma(ha_close, 34)
ma_sum = (not na(wma34) ? wma34 : 0) + (not na(vwma34) ? vwma34 : 0) + (not na(ema34) ? ema34 : 0) + (not na(sma34) ? sma34 : 0)
ma_avg = ma_sum / 4
// --- Scalp/Swing Logic ---
buySignal = ta.crossover(ma1, ma2)
sellSignal = ta.crossunder(ma1, ma2)
var string scalp_state = "NEUTRAL"
var float refHigh = na
var float refLow = na
if buySignal or sellSignal
refHigh := ha_high
refLow := ha_low
scalp_state := "WAIT_ENTRY"
if (scalp_state == "WAIT_ENTRY" or scalp_state == "SELL") and not na(refHigh) and ha_close > refHigh
scalp_state := "BUY"
if (scalp_state == "WAIT_ENTRY" or scalp_state == "BUY") and not na(refLow) and ha_close < refLow
scalp_state := "SELL"
if scalp_state == "BUY" and ha_close < ma_avg
scalp_state := "NEUTRAL"
refHigh := na
refLow := na
if scalp_state == "SELL" and ha_close > ma_avg
scalp_state := "NEUTRAL"
refHigh := na
refLow := na
// --- RSI Logic ---
rsi_val = ta.rsi(ha_close, 14)
rsi_ema_3 = ta.ema(rsi_val, 3)
rsi_ema_10 = ta.ema(rsi_val, 10)
high_vol = volume > ta.sma(volume, 20) * 1.5
bar_is_high = high_vol
prev_bar_is_high = high_vol[1]
any_high_bar = bar_is_high or prev_bar_is_high
_base_rsi_cross_bull = ta.crossover(rsi_ema_3, rsi_ema_10) and any_high_bar
_base_rsi_cross_bear = ta.crossunder(rsi_ema_3, rsi_ema_10) and any_high_bar
rsi_cross_bull = _base_rsi_cross_bull and (ha_close < ma_avg)
rsi_cross_bear = _base_rsi_cross_bear and (ha_close > ma_avg)
// ENTRY LOGIC
var float rsi_signal_high = na
var float rsi_signal_low = na
var int rsi_signal_bar = na
var string rsi_entry_state = ""
if rsi_cross_bull
rsi_signal_high := high
rsi_signal_low := na
rsi_signal_bar := bar_index
rsi_entry_state := "WAIT ENTRY"
else if rsi_cross_bear
rsi_signal_low := low
rsi_signal_high := na
rsi_signal_bar := bar_index
rsi_entry_state := "WAIT ENTRY"
else if not na(rsi_signal_bar)
if not na(rsi_signal_high)
if close > rsi_signal_high and bar_index > rsi_signal_bar
rsi_entry_state := "BUY"
rsi_signal_high := na
rsi_signal_bar := na
else
rsi_entry_state := "WAIT ENTRY"
else if not na(rsi_signal_low)
if close < rsi_signal_low and bar_index > rsi_signal_bar
rsi_entry_state := "SELL"
rsi_signal_low := na
rsi_signal_bar := na
else
rsi_entry_state := "WAIT ENTRY"
else
rsi_entry_state := ""
else
rsi_entry_state := ""
// --- Swing High/Low (Stoploss reference) ---
swingLow = ta.pivotlow(ha_low, swing_lookback, swing_lookback)
swingHigh = ta.pivothigh(ha_high, swing_lookback, swing_lookback)
// -- Entry/Exit conditions --
long_condition = input_strategy == "RSI" ? (rsi_entry_state == "BUY" and rsi_entry_state[1] != "BUY") : (scalp_state == "BUY" and scalp_state[1] != "BUY")
short_condition = input_strategy == "RSI" ? (rsi_entry_state == "SELL" and rsi_entry_state[1] != "SELL") : (scalp_state == "SELL" and scalp_state[1] != "SELL")
exit_long_condition = input_strategy == "RSI" ? (rsi_entry_state == "SELL" and rsi_entry_state[1] != "SELL") : (scalp_state == "SELL" and scalp_state[1] != "SELL")
exit_short_condition = input_strategy == "RSI" ? (rsi_entry_state == "BUY" and rsi_entry_state[1] != "BUY") : (scalp_state == "BUY" and scalp_state[1] != "BUY")
// --- Final Entry & SL/Target (NO TRAIL) ---
var float sl_long = na
var float sl_short = na
var float tg_long = na
var float tg_short = na
if long_condition and not na(swingLow)
sl_long := swingLow // SL = last swing low after entry candle close
entry_price = close
risk = entry_price - sl_long
tg_long := entry_price + (risk * rr_multiple)
strategy.entry("Long", strategy.long)
strategy.exit("Long_SL", from_entry="Long", stop=sl_long, limit=tg_long)
if short_condition and not na(swingHigh)
sl_short := swingHigh // SL = last swing high after entry candle close
entry_price = close
risk = sl_short - entry_price
tg_short := entry_price - (risk * rr_multiple)
strategy.entry("Short", strategy.short)
strategy.exit("Short_SL", from_entry="Short", stop=sl_short, limit=tg_short)
if exit_long_condition
strategy.close("Long")
if exit_short_condition
strategy.close("Short")
// --- Visuals (optional, for clarity) ---
barcolor(long_condition ? color.green : short_condition ? color.red : na)
plot(ma_avg, "MA Avg", color=color.blue, linewidth=2)