
Sistem perdagangan beradaptasi dengan trend berganda berganda adalah strategi perdagangan kuantitatif yang berdasarkan teori berganda, yang berpusat pada CETP-Plus, yang mengukur “keteraturan” dalam corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak corak cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor cor
Prinsip utama strategi ini adalah untuk menggunakan pixel Shannon untuk analisis corak carta pasaran kewangan. Pixel Shannon berasal dari teori maklumat untuk mengukur ketidakpastian atau “kecanggihan” pembolehubah rawak. Dalam strategi ini, pixel dikira dan digunakan dengan cara berikut:
Skor CETP akhirnya adalah produk gabungan faktor-faktor ini, nilai positif cenderung ke arah bullish dan nilai negatif cenderung ke arah bearish. Logik dagangan mudah dan langsung: buat lebih apabila skor CETP melebihi nilai positif yang ditetapkan dan buat kosong apabila ia berada di bawah nilai negatif. Untuk mengelakkan dagangan kecil, strategi ini memasukkan penapis pergerakan harga minimum untuk memastikan carta penapis semasa mempunyai ruang yang cukup untuk mencetuskan perdagangan. Pengurusan risiko dicapai dengan peratusan stop loss, ATR, dan pengganda dan pengesanan stop loss.
Isyarat bersepaduIndeks CETP-Plus menggabungkan kelebihan pelbagai indikator tradisional (EMA, RSI, ATR, ADX) untuk memberikan isyarat perdagangan yang jelas dan tunggal, mengelakkan risiko pertembungan dan penyesuaian berlebihan.
Kebolehan menyesuaikan diriStrategi dapat menyesuaikan diri secara automatik mengikut keadaan pasaran, menyesuaikan diri dengan persekitaran yang bergelombang dan kekuatan trend yang berbeza, dan dapat berfungsi dengan baik dalam pelbagai keadaan pasaran tanpa campur tangan manual.
Simetri pengendalian ruangStrategi memberi kepentingan yang sama kepada peluang bertaburan dan kosong, yang membolehkan ia berfungsi dengan berkesan dalam pasaran lembu dan pasar beruang, dan tidak terjejas oleh kecenderungan arah.
Pengesanan trend awalMengambil perubahan struktur pasaran melalui konsep ketegangan, dapat mengenal pasti pembentukan trend lebih awal sebelum penunjuk tradisional, memberikan masa masuk yang lebih baik.
Mengurangkan kesan bunyi bisingStrategi ini dapat membezakan antara isyarat sebenar dan bising pasaran, mengurangkan isyarat palsu melalui analisis tirai dan pembahagian kotak grafik lurus.
KebolehsuaianBanyak parameter boleh dioptimumkan mengikut pelbagai jenis perdagangan dan jangka masa, menjadikan strategi ini sangat fleksibel dan dapat disesuaikan.
Pengurusan risiko yang lengkapIa mempunyai mekanisme kawalan risiko bertingkat yang bersepadu, termasuk peratusan berhenti, berhenti dinamik dan berhenti pengesanan berdasarkan ATR, dan penapis perdagangan minimum untuk mengawal penarikan balik dengan berkesan.
Kepekaan ParameterStrategi ini mengandungi pelbagai parameter yang boleh disesuaikan, dan pengoptimuman berlebihan boleh menyebabkan prestasi yang kurang baik dalam perdagangan cakera. Persekitaran pasaran yang berbeza mungkin memerlukan tetapan parameter yang berbeza, yang menjadikan pemeliharaan sistem rumit.
Risiko perdagangan frekuensi tinggiStrategi ini mungkin menghasilkan banyak isyarat perdagangan, terutamanya di pasaran yang lebih bergolak, yang menyebabkan terlalu banyak perdagangan, kos komisen meningkat, dan slippage meningkat.
Kompleksiti pengiraanPerhitungan kotak dan kerung dalam grafik tiga dimensi mungkin memerlukan sumber pengiraan yang lebih tinggi untuk dilaksanakan dalam masa nyata, yang boleh menyebabkan kelewatan dalam pelaksanaan, terutamanya dalam jangka masa yang lebih pendek.
Analisis algoritmaStrategi ini berasaskan kepada anggapan bahawa penyu dapat menangkap corak pasaran dengan berkesan, tetapi struktur pasaran mungkin berubah dari masa ke masa, sehingga membuat anggapan ini tidak berkesan.
Kepercayaan yang tidak menentuStrategi: menggunakan penapis turun naik dan penapis pergerakan harga minimum, mungkin kehilangan peluang perdagangan dalam persekitaran turun naik rendah, mungkin terlalu sensitif dalam persekitaran turun naik tinggi.
Risiko kelayakan sejarahWalaupun strategi ini menggabungkan kelebihan pelbagai petunjuk, terdapat risiko ke atas data sejarah yang terlalu sesuai, dan perubahan keadaan pasaran pada masa akan datang boleh menyebabkan penurunan prestasi.
Penyelesaian termasuk: mengoptimumkan semula parameter secara berkala, menggunakan pengujian langkah demi langkah untuk mengesahkan kestabilan parameter, menerapkan syarat penapisan yang lebih ketat untuk mengurangkan frekuensi transaksi, menambah syarat pengesahan untuk meningkatkan kualiti isyarat, dan menyesuaikan parameter risiko untuk prestasi sistem pemantauan masa nyata.
Mekanisme parameter penyesuaianMengekalkan penyesuaian dinamik parameter, mengoptimumkan secara automatik tetingkap, nilai rendah dan berat CETP mengikut turun naik pasaran, jumlah transaksi dan kekuatan trend. Pengoptimuman ini dapat menjadikan sistem lebih sesuai dengan keadaan pasaran yang berubah, mengurangkan keperluan campur tangan manual.
Integrasi analisis pelbagai kerangka masa: Mengintegrasikan isyarat CETP dari pelbagai bingkai masa untuk mewujudkan sistem pengesahan hierarki. Sebagai contoh, hanya menjalankan perdagangan apabila isyarat bingkai masa yang lebih tinggi sesuai dengan isyarat bingkai masa perdagangan, meningkatkan kadar kemenangan.
Pembelajaran Mesin: Memperkenalkan algoritma pembelajaran mesin untuk mengoptimumkan pilihan parameter dan penapisan isyarat. Mengenali kombinasi parameter yang terbaik dengan pembelajaran pengawasan, atau menggunakan algoritma pengumpulan untuk mengenal pasti keadaan pasaran yang berbeza dan menyesuaikan strategi dengan sewajarnya.
Penapis kecairan dan jumlah transaksiPenambahan penapis berdasarkan jumlah dagangan dan kedalaman pasaran untuk memastikan perdagangan hanya berlaku di bawah keadaan yang cukup cair, mengurangkan risiko slippage dan pelaksanaan.
Analisis hubungan pelbagai aset: Mengintegrasikan maklumat pasaran berkaitan (seperti indeks, saham atau komoditi yang berkaitan) untuk meningkatkan kepastian perdagangan apabila terdapat isyarat yang sama di beberapa pasaran berkaitan.
Model ramalan turun naikMembangunkan komponen ramalan turun naik, menyesuaikan nilai rendah dan parameter risiko lebih awal, untuk menyediakan diri untuk persekitaran turun naik yang akan datang.
Kerangka pengesanan dan pengoptimuman automatikMenubuhkan sistem automatik untuk menilai semula strategi secara berkala dengan data baru dan menyesuaikan parameter mengikut tingkah laku pasaran terkini untuk memastikan strategi tetap beradaptasi.
Arahan pengoptimuman di atas bertujuan untuk meningkatkan kestabilan, kesesuaian, dan keuntungan strategi, sambil mengurangkan keperluan untuk campur tangan manusia dan risiko terlalu sesuai. Dengan melaksanakan pengoptimuman ini secara beransur-ansur, sistem perdagangan yang lebih pintar dan autonomi dapat dibina.
Sistem dagangan yang menyesuaikan diri dengan trend kuantiti berganda berganda mewakili satu kaedah dagangan kuantitatif yang inovatif yang menangkap keteraturan dan kebolehpastian dalam corak harga dengan menerapkan konsep keteraturan dalam teori maklumat ke pasaran kewangan. Kelebihan utama strategi ini adalah bahawa ia mengintegrasikan prinsip-prinsip matematik pelbagai petunjuk teknikal tradisional untuk mewujudkan isyarat dagangan yang tunggal dan jelas, mengelakkan pertembungan petunjuk dan isyarat yang bercampur aduk.
Walaupun strategi ini mempunyai fungsi penyesuaian diri dan pengurusan risiko yang kuat, ia juga menghadapi cabaran seperti sensitiviti parameter, kerumitan pengiraan dan perubahan struktur pasaran. Dengan melaksanakan arah pengoptimuman yang disyorkan, seperti mekanisme parameter penyesuaian diri, analisis bingkai masa berbilang dan peningkatan pembelajaran mesin, strategi ini dapat meningkatkan lagi kestabilan dan prestasi jangka panjang.
Secara keseluruhannya, ini adalah sistem perdagangan kuantitatif yang mempunyai asas teori yang kukuh dan reka bentuk yang rumit yang sesuai untuk digunakan oleh peniaga dengan latar belakang pengaturcaraan dan statistik dalam pasaran yang sangat tidak menentu. Dengan pengoptimuman parameter yang berhati-hati dan pemantauan sistemik yang berterusan, strategi ini berpotensi menghasilkan pulangan penyesuaian risiko yang stabil dalam pelbagai persekitaran pasaran.
/*backtest
start: 2024-08-11 00:00:00
end: 2025-08-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// @version=6
strategy("Canuck Trading Traders Strategy [Candle Entropy Edition]", overlay=true, default_qty_value = 10)
// Note: Set Properties "Order size" to "100% of equity" for equity-based sizing or fixed contracts (e.g., 100).
// === CETP-Plus Settings ===
cetp_window = input.int(5, "CETP Window", minval=1, maxval=20, group="CETP-Plus Settings")
cetp_bins = input.int(3, "CETP Bins per Dimension", minval=1, maxval=10, group="CETP-Plus Settings")
long_threshold = input.float(0.1, "Long Threshold", minval=0.01, maxval=5.0, step=0.01, group="CETP-Plus Settings")
short_threshold = input.float(-0.1, "Short Threshold", minval=-0.8, maxval=-0.01, step=0.01, group="CETP-Plus Settings")
cetp_k = input.float(0.8, "CETP Momentum Weight", minval=0.1, maxval=5.0, step=0.1, group="CETP-Plus Settings")
mom_scale = input.float(6.0, "Momentum Scale", minval=1.0, maxval=20.0, step=1.0, group="CETP-Plus Settings")
body_weight = input.float(1.0, "Body Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
upper_weight = input.float(0.8, "Upper Wick Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
lower_weight = input.float(1.0, "Lower Wick Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
decay_factor = 0.8 // Hardcoded decay for exponential weighting (recent candles weighted more)
// === Trade Settings ===
min_score_strength = input.float(0.03, "Min CETP Score Strength", minval=0.0, maxval=5, step=0.01, group="Trade Settings")
stop_loss_pct = input.float(0.5, "Stop Loss (%)", minval=0.1, maxval=5.0, step=0.1, group="Trade Settings")
atr_mult = input.float(3.0, "ATR Multiplier", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
trail_mult = input.float(5.0, "Trailing ATR Mult", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
trail_offset_pct = input.float(1.0, "Trail Start Offset (%)", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
min_price_move_mult = input.float(2.0, "Min Price Move ATR Mult (to avoid tiny trades)", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings") // Filter tiny moves
// Indicators (ATR for stops/trails only)
atr = nz(ta.atr(14), 0.0)
// Volatility Filter (CV < 15% to avoid chop)
vol_threshold = ta.stdev(close, 20) / ta.sma(close, 20) * 100
trade_allowed = vol_threshold < 15.0
// Minimum Price Move Filter (candle range > ATR multiple, floored by min tick)
min_price_move = math.max(atr * min_price_move_mult, syminfo.mintick * 10) // Avoid sub-penny moves; 10x tick for robustness
price_move_condition = (high - low) > min_price_move // Fixed: Use high - low instead of ta.range()
// CETP-Plus Calculation (Blended EMA, RSI, ATR, ADX theses)
epsilon = 1e-5
body_ratio = (close - open) / (high - low + epsilon) * body_weight
upper_wick_ratio = (high - math.max(open, close)) / (high - low + epsilon) * upper_weight
lower_wick_ratio = (math.min(open, close) - low) / (high - low + epsilon) * lower_weight
// EMA-like weighting: Exponentially weight recent candles with fixed-size rolling arrays
var float[] body_arr = array.new_float(cetp_window, 0.0)
var float[] upper_arr = array.new_float(cetp_window, 0.0)
var float[] lower_arr = array.new_float(cetp_window, 0.0)
// Shift and decay older values, add new at the end
for i = 0 to cetp_window - 2
array.set(body_arr, i, array.get(body_arr, i + 1) * decay_factor)
array.set(upper_arr, i, array.get(upper_arr, i + 1) * decay_factor)
array.set(lower_arr, i, array.get(lower_arr, i + 1) * decay_factor)
array.set(body_arr, cetp_window - 1, body_ratio)
array.set(upper_arr, cetp_window - 1, upper_wick_ratio)
array.set(lower_arr, cetp_window - 1, lower_wick_ratio)
// Volatility scaling (ATR thesis)
bin_size = 2.0 / cetp_bins * (1 + atr / ta.sma(atr, 14))
hist_size = cetp_bins * cetp_bins * cetp_bins
var int[] hist = array.new_int(hist_size, 0)
array.fill(hist, 0)
for i = 0 to cetp_window - 1
body_val = array.get(body_arr, i)
upper_val = array.get(upper_arr, i)
lower_val = array.get(lower_arr, i)
body_bin = math.max(0, math.min(cetp_bins - 1, math.floor((body_val + 1) / bin_size)))
upper_bin = math.max(0, math.min(cetp_bins - 1, math.floor((upper_val + 1) / bin_size)))
lower_bin = math.max(0, math.min(cetp_bins - 1, math.floor((lower_val + 1) / bin_size)))
bin_idx = body_bin * (cetp_bins * cetp_bins) + upper_bin * cetp_bins + lower_bin
array.set(hist, bin_idx, array.get(hist, bin_idx) + 1)
entropy = 0.0
for i = 0 to hist_size - 1
count = array.get(hist, i)
p = count / cetp_window
if p > 0
entropy := entropy - p * math.log(p)
max_entropy = math.log(hist_size)
norm_entropy = max_entropy > 0 ? entropy / max_entropy : 0.0
// RSI-like momentum bias
avg_gain = ta.rma(math.max(close - close[1], 0), cetp_window)
avg_loss = ta.rma(math.max(close[1] - close, 0), cetp_window)
rsi_bias = avg_loss > 0 ? avg_gain / avg_loss : 1.0
momentum = ta.mom(close, cetp_window) / (close[cetp_window] != 0 ? close[cetp_window] : 1e-5)
momentum_adj = momentum * (1 + rsi_bias)
// ADX-like trend strength (automated and symmetric for bull/bear)
di_plus = ta.rma(math.max(high - high[1], 0), cetp_window) / atr
di_minus = ta.rma(math.max(low[1] - low, 0), cetp_window) / atr
trend_strength = di_plus > di_minus ? 1.2 : (di_minus > di_plus ? 1.2 : 1.0)
// CETP-Plus Score (optimized: no abs on momentum_adj to preserve sign for better short detection)
avg_body = nz(array.avg(body_arr), 0.0)
raw_score = avg_body * (1 - norm_entropy) * (cetp_k + momentum_adj * mom_scale)
cetp_score = nz(raw_score * trend_strength, 0.0)
// Position State
var float entry_price = na
var int bars_held = 0
if barstate.isconfirmed
bars_held := strategy.position_size != 0 ? bars_held + 1 : 0
// Trade Logic: Rely solely on current CETP score for entries/exits/reversals, with min price move filter
if bar_index >= cetp_window and math.abs(cetp_score) > min_score_strength and trade_allowed and price_move_condition
if cetp_score > long_threshold
if strategy.position_size < 0
strategy.close("Short", comment="Reverse to Long")
if strategy.position_size <= 0
strategy.entry("Long", strategy.long)
entry_price := close
sl = entry_price * (1 - stop_loss_pct / 100) - atr * atr_mult
strategy.exit("Long Exit", "Long", stop=sl, trail_points=atr * trail_mult * syminfo.pointvalue, trail_offset=entry_price * (trail_offset_pct / 100))
bars_held := 1
else if cetp_score < short_threshold
if strategy.position_size > 0
strategy.close("Long", comment="Reverse to Short")
if strategy.position_size >= 0
strategy.entry("Short", strategy.short)
entry_price := close
sl = entry_price * (1 + stop_loss_pct / 100) + atr * atr_mult
strategy.exit("Short Exit", "Short", stop=sl, trail_points=atr * trail_mult * syminfo.pointvalue, trail_offset=entry_price * (trail_offset_pct / 100))
bars_held := 1