
Triple Index Moving Average dan Triple Relative Moving Average Strategi silang saluran penyesuaian diri adalah sistem perdagangan kuantitatif yang menggabungkan EMA ((index moving average) dan RMA ((relative moving average)) jangka pendek. Strategi ini menggunakan indikator ATR ((real amplitude) untuk membina saluran harga dan mengenal pasti isyarat masuk dengan menangkap tindakan harga terhadap saluran tersebut. Strategi ini mempunyai mekanisme pengurusan risiko yang terbina dalam, menggunakan ukuran kedudukan yang ditetapkan dengan nisbah risiko tetap, dan menggunakan harga bukaan bukaan sebagai titik henti kerugian, sambil merancang mekanisme kedudukan yang rata berdasarkan harga bukaan pada tempoh sebelumnya, membentuk sistem perdagangan yang lengkap.
Logik teras strategi ini adalah berdasarkan gabungan dua kumpulan purata dengan saluran ATRnya:
Sistem saluran EMA:
Sistem RMA:
Syarat isyarat:
Pengurusan kedudukan:
Mekanisme Stop Loss dan Pelancaran:
Bertindak pantas terhadap perubahan pasaranDengan menggunakan purata bergerak dengan kitaran yang sangat pendek, strategi ini dapat menangkap pergerakan harga dengan cepat dan memasuki trend tepat pada masanya.
Mekanisme pengesahan dua kaliKedua-dua sistem EMA dan RMA bekerja sama, dan kebolehpercayaan perdagangan meningkat dengan ketara apabila kedua-duanya memberi isyarat arah yang sama.
Penyesuaian kadar turun naik beradaptasi: Mengubah lebar saluran melalui penunjuk ATR, strategi dapat menyesuaikan kepekaan secara automatik dalam persekitaran yang berbeza.
Kawalan risiko yang tepatRisiko setiap urus niaga ditetapkan pada 0.5% daripada jumlah akaun dan had risiko setiap urus niaga dikendalikan dengan ketat.
Strategi Keluar yang Jelas: Mekanisme penutupan berdasarkan harga pembukaan kitaran sebelumnya menyediakan syarat-syarat keuntungan yang jelas untuk perdagangan.
Perkalian saluran diferensiasi: Saluran EMA menggunakan 1.5 kali ATR, dan Saluran RMA menggunakan 1.0 kali ATR, reka bentuk ini menjadikan kedua-dua sistem mempunyai sensitiviti yang berbeza untuk menangkap pelbagai jenis peluang pasaran.
Risiko perdagangan berlebihanRata-rata bergerak dengan kitaran yang sangat pendek (3) mungkin menghasilkan terlalu banyak isyarat palsu dalam pasaran yang bergolak, yang menyebabkan perdagangan yang kerap dan kerosakan yuran.
Tetapan stop loss terlalu tetapPenggunaan harga bukaan sebagai titik henti mungkin tidak selalu menjadi pilihan terbaik, terutamanya dalam keadaan turun naik atau melompat.
Syarat pegangan yang lebih mudahPersaingan yang hanya bergantung pada harga pembukaan kitaran sebelumnya boleh menyebabkan penarikan awal dalam trend yang kuat.
Kurangnya penapis persekitaran pasaranStrategi tidak membezakan antara keadaan pasaran yang berbeza ((trend/shake)), mungkin sering berdagang dalam keadaan pasaran yang tidak sesuai.
Risiko Pengoptimuman ParameterParameter semasa (seperti kitaran 3 dan perkalian ATR) mungkin terlalu sesuai dengan data sejarah, dan prestasi masa depan tidak pasti.
Optimumkan kesesuaian keadaan pasaran:
Pengesahan pelbagai kerangka masa:
Pengoptimuman stop loss dinamik:
Peningkatan strategi kedudukan rata:
Penilaian kualiti isyarat:
Triple Index Moving Average dan Triple Relative Moving Average strategi adaptasi silang saluran mengkombinasikan dua jenis purata bergerak yang berbeza dengan saluran ATR, membentuk sistem perdagangan yang sensitif terhadap harga yang pecah, tetapi mempunyai keupayaan untuk mengawal risiko. Strategi ini sangat sesuai untuk menangkap turun naik harga jangka pendek dan bertindak balas dengan cepat terhadap trend yang berkembang pesat.
Walau bagaimanapun, strategi ini juga mempunyai potensi risiko terlalu banyak perdagangan dan masalah kesesuaian dengan keadaan pasaran. Dengan cara menambah penapisan keadaan pasaran, mengoptimumkan mekanisme hentikan kerugian, memperkenalkan pengesahan jangka masa berbilang, dan sebagainya, anda dapat meningkatkan kestabilan dan prestasi jangka panjang strategi ini. Khususnya, penambahan keupayaan untuk mengenali keadaan pasaran akan membolehkan strategi mengambil bahagian dalam perdagangan secara terpilih dalam keadaan pasaran yang berbeza, meningkatkan lagi kepraktisan dan keuntungan strategi.
Secara keseluruhannya, ini adalah strategi perdagangan kuantitatif dengan struktur yang jelas, logik yang ketat, dengan asas teori yang baik dan potensi aplikasi. Dengan arah pengoptimuman yang disyorkan dalam artikel ini, strategi ini dijangka menunjukkan daya adaptasi dan kestabilan yang lebih kuat dalam pelbagai persekitaran pasaran.
/*backtest
start: 2024-04-07 00:00:00
end: 2025-04-06 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("EMA3 & RMA3 ATR Strategy", overlay=true, initial_capital=10000, currency=currency.USD)
// —— 输入参数 ——
ema_len = input.int(3, "EMA周期")
ema_mult = input.float(1.5, "EMA通道ATR乘数", step=0.1)
rma_len = input.int(3, "RMA周期")
rma_mult = input.float(1.0, "RMA通道ATR乘数", step=0.1)
atr_len = input.int(3, "ATR周期")
// —— 核心计算 ——
ema_val = ta.ema(close, ema_len)
atr_val = ta.atr(atr_len)
ema_upper = ema_val + atr_val * ema_mult
ema_lower = ema_val - atr_val * ema_mult
rma_val = ta.rma(close, rma_len)
rma_upper = rma_val + atr_val * rma_mult
rma_lower = rma_val - atr_val * rma_mult
// —— 信号条件 ——
ema_buy = barstate.isconfirmed and close > ema_upper
ema_sell = barstate.isconfirmed and close < ema_lower
rma_buy = barstate.isconfirmed and close > rma_upper
rma_sell = barstate.isconfirmed and close < rma_lower
// —— 仓位计算 ——
risk_percent = 0.5 // 单次风险0.5%
position_size(price, stop_price) =>
risk_amount = strategy.equity * risk_percent / 100
math.abs(price - stop_price) > 0 ? (risk_amount / math.abs(price - stop_price)) : na
// —— 交易逻辑 ——
var float prev_open = na
if barstate.isconfirmed
prev_open := open[1]
// 多单逻辑
if (ema_buy or rma_buy) and strategy.position_size == 0
stop_price = open
qty = position_size(close, stop_price)
if not na(qty)
strategy.entry("Long", strategy.long, qty=qty)
strategy.exit("Long Stop", "Long", stop=stop_price)
// 空单逻辑
if (ema_sell or rma_sell) and strategy.position_size == 0
stop_price = open
qty = position_size(close, stop_price)
if not na(qty)
strategy.entry("Short", strategy.short, qty=qty)
strategy.exit("Short Stop", "Short", stop=stop_price)
// 平仓逻辑
if strategy.position_size > 0
if ta.crossover(low, prev_open)
strategy.close("Long")
if strategy.position_size < 0
if ta.crossunder(high, prev_open)
strategy.close("Short")
// —— 可视化 ——
plot(ema_val, "EMA3", color.new(#00BFFF, 0), 2)
plot(ema_upper, "EMA Upper", color.red, 1)
plot(ema_lower, "EMA Lower", color.green, 1)
plot(rma_val, "RMA3", color.new(#FFA500, 0), 2)
plot(rma_upper, "RMA Upper", #FF1493, 1)
plot(rma_lower, "RMA Lower", #32CD32, 1)