Artikel ini memperkenalkan strategi dagangan kuantitatif yang dinamakan
Prinsip-prinsip strategi ini boleh dibahagikan kepada bahagian berikut:
Perpindahan purata bergerak berganda:Strategi ini menggunakan EMA jangka pendek (10 tempoh) dan EMA jangka panjang (323 tempoh) untuk menangkap trend pasaran. Apabila EMA jangka pendek melintasi di atas EMA jangka panjang, ia menunjukkan peluang jangka panjang yang berpotensi; apabila EMA jangka pendek melintasi di bawah EMA jangka panjang, ia menunjukkan peluang jangka pendek yang berpotensi.
Indikator DMI Berbilang Jangka Masa:Untuk mengesahkan lagi arah trend dan kekuatan, strategi menggunakan penunjuk DMI merentasi pelbagai jangka masa. Penunjuk DMI terdiri daripada ADX (Indeks Arah Purata), +DI (Penunjuk Arah Positif), dan -DI (Penunjuk Arah Negatif). Dengan membandingkan kekuatan relatif +DI dan -DI, dapat ditentukan sama ada trend semasa adalah bullish atau bearish. Strategi mengira penunjuk DMI pada jangka masa 5 minit, 15 minit, 30 minit, dan 1 jam untuk mendapatkan maklumat trend yang lebih komprehensif.
Pengesahan Trend:Strategi ini mengesahkan trend dengan mempertimbangkan secara komprehensif isyarat crossover purata bergerak dan penunjuk DMI pelbagai jangka masa. Apabila isyarat crossover purata bergerak sejajar dengan arah trend yang ditunjukkan oleh penunjuk DMI, strategi menghasilkan isyarat perdagangan yang sepadan. Sebagai contoh, apabila EMA jangka pendek melintasi di atas EMA jangka panjang, dan beberapa jangka masa penunjuk DMI menunjukkan trend menaik, strategi menghasilkan isyarat panjang.
Pengurusan Risiko:Strategi ini menggunakan kaedah saiz kedudukan berasaskan peratusan risiko.riskPercentageEMA
Selain itu, strategi ini menggunakan perintah stop-loss untuk mengehadkan potensi kerugian.
Pengambilan Trend:Dengan menggabungkan penunjuk crossover purata bergerak berganda dan multi-frame DMI, strategi ini dapat menangkap dengan berkesan trend utama di pasaran.
Pengesahan Pelbagai Jangka Masa:Strategi ini mengira penunjuk DMI pada pelbagai jangka masa, termasuk 5 minit, 15 minit, 30 minit, dan 1 jam. Pendekatan analisis pelbagai jangka masa ini memberikan isyarat pengesahan trend yang lebih komprehensif dan boleh dipercayai, mengurangkan kejadian isyarat palsu.
Tetapan Parameter Fleksibel:Strategi ini menawarkan pelbagai parameter yang boleh diselaraskan, seperti tempoh EMA jangka pendek, tempoh EMA jangka panjang, tempoh penyelarasan ADX, dan panjang DI. Pengguna boleh mengoptimumkan parameter ini berdasarkan gaya perdagangan dan ciri pasaran mereka untuk mencapai prestasi perdagangan yang lebih baik.
Pengurusan Risiko:Strategi ini menggabungkan kaedah ukuran kedudukan berasaskan peratusan risiko, yang membolehkan pengguna mengawal pendedahan risiko setiap dagangan dengan menetapkanriskPercentageEMA
Di samping itu, strategi menggunakan perintah stop-loss untuk mengehadkan potensi kerugian, meningkatkan keberkesanan pengurusan risiko.
Pengoptimuman Parameter:Prestasi strategi sebahagian besarnya bergantung kepada pilihan parameter. Tetapan parameter yang tidak betul boleh menyebabkan prestasi strategi yang tidak optimal atau bahkan penurunan yang signifikan. Oleh itu, dalam aplikasi praktikal, adalah perlu untuk mengoptimumkan dan menguji parameter untuk mencari kombinasi parameter terbaik yang sesuai dengan keadaan pasaran semasa.
Tarikan Trend:Oleh kerana strategi ini bergantung kepada persilangan purata bergerak dan penunjuk DMI untuk mengesahkan trend, mungkin terdapat kelewatan tertentu dalam penjanaan isyarat semasa keadaan pasaran yang berubah dengan cepat.
Pasaran Choppy:Dalam pasaran yang berbelit-belit, turun naik harga boleh membawa kepada persimpangan purata bergerak yang kerap dan perubahan dalam penunjuk DMI. Ini boleh mengakibatkan strategi menghasilkan lebih banyak isyarat perdagangan, meningkatkan kos perdagangan dan risiko penarikan. Oleh itu, prestasi strategi mungkin terjejas dalam keadaan pasaran yang berbelit-belit.
Peristiwa Black Swan:Strategi ini berdasarkan data sejarah dan model statistik. Untuk peristiwa pasaran yang melampau, seperti peristiwa angsa hitam, strategi mungkin tidak dapat bertindak balas dengan tepat pada masanya. Ini boleh menyebabkan kerugian yang ketara untuk strategi dalam keadaan khas ini.
Penyesuaian Parameter Dinamik:Pertimbangkan untuk memperkenalkan mekanisme pelarasan parameter dinamik yang menyesuaikan parameter strategi berdasarkan turun naik pasaran dan kekuatan trend. Ini dapat membantu strategi menyesuaikan diri dengan lebih baik dengan persekitaran pasaran yang berbeza dan meningkatkan ketahanan.
Pengesahan pelbagai faktor:Sebagai tambahan kepada crossover purata bergerak dan penunjuk DMI, penunjuk teknikal atau faktor asas lain boleh diperkenalkan untuk mengesahkan lagi trend.
Peningkatan Stop-Loss dan Take-Profit:Mengoptimumkan penempatan tahap stop-loss dan mengambil keuntungan, seperti menggunakan stop trailing atau kaedah stop-loss dinamik. Ini dapat membantu strategi melindungi keuntungan dengan lebih baik sambil mengehadkan potensi kerugian.
Ukuran Kedudukan:Memperkenalkan kaedah ukuran kedudukan yang lebih maju, seperti Kriteria Kelly atau pelaburan pecahan tetap. Ini dapat membantu strategi menyesuaikan kedudukan secara dinamik dalam persekitaran pasaran yang berbeza, meningkatkan kecekapan penggunaan modal dan keupayaan kawalan risiko.
Pengoptimuman pembelajaran mesin:Cuba untuk menggabungkan algoritma pembelajaran mesin dengan strategi. Melalui pembelajaran dan pengenalan corak data sejarah, mengoptimumkan pemilihan parameter strategi dan penjanaan isyarat. Ini dapat membantu strategi menyesuaikan diri secara automatik dengan perubahan pasaran, meningkatkan daya adaptasi dan ketahanan.
Artikel ini memperkenalkan strategi dagangan kuantitatif berdasarkan crossover purata bergerak berganda dan penunjuk DMI pelbagai jangka masa. Strategi ini membuat keputusan dagangan dengan menangkap trend pasaran sambil menggunakan langkah pengurusan risiko untuk mengawal potensi kerugian. Kelebihan strategi ini terletak pada kemampuannya untuk mengenal pasti trend utama di pasaran dengan berkesan dan meningkatkan kebolehpercayaan isyarat melalui pengesahan pelbagai jangka masa. Walau bagaimanapun, strategi ini juga mempunyai risiko tertentu, seperti pengoptimuman parameter, penangguhan trend, pasaran berbelit-belit, dan peristiwa angsa hitam. Untuk mengoptimumkan lagi strategi, kaedah seperti penyesuaian parameter dinamik, pengesahan pelbagai faktor, pengoptimuman stop-loss dan mengambil keuntungan, ukuran kedudukan, dan pembelajaran mesin dapat dipertimbangkan. Secara keseluruhan, strategi ini menyediakan pedagang kuantitatif dengan pendekatan perdagangan trend berikut. Dengan pengoptimuman dan peningkatan, ia mempunyai potensi yang munasabah untuk mencapai prestasi yang baik dalam perdagangan sebenar.
/*backtest start: 2023-03-16 00:00:00 end: 2024-03-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Kyrie Crossover @zaytrade ", overlay=true, calc_on_every_tick=true) // Input parameters for EMA shortTermEMA = input.int(9, title="Short-Term EMA Period") longTermEMA = input.int(21, title="Long-Term EMA Period") riskPercentageEMA = input.float(1, title="Risk Percentage EMA", minval=0.1, maxval=5, step=0.1) // Calculate EMAs emaShort = ta.ema(close, shortTermEMA) emaLong = ta.ema(close, longTermEMA) // EMA Crossover Strategy longConditionEMA = ta.crossover(emaShort, emaLong) shortConditionEMA = ta.crossunder(emaShort, emaLong) // Input parameters for DMI adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") // DMI Logic dirmov(len) => up = ta.change(high) down = -ta.change(low) truerange = ta.tr plus = fixnan(100 * ta.rma((up > down ? up : 0), len) / truerange) minus = fixnan(100 * ta.rma((down > up ? down : 0), len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adxValue = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) [adxValue, plus, minus] // Function to get trend and strength for a given timeframe getTrendAndStrength(_source, _dilen, _adxlen) => [adxValue, up, down] = adx(_dilen, _adxlen) var string trendIndication = "" var string trendStrength = "" if (up > down) or ((up > down) and (up > down) and (up > adxValue)) // Bullish condition trendIndication := "Bullish" trendStrength := "Strengthening" else if (down > up) or ((down > up) and (down > up) and (down > adxValue)) // Bearish condition trendIndication := "Bearish" trendStrength := "Weakening" else trendIndication := "No Clear Trend" trendStrength := "Sideways" [trendIndication, trendStrength] // Get trend and strength for selected timeframes [tf1_trend, tf1_strength] = request.security(syminfo.tickerid, "5", getTrendAndStrength(close, dilen, adxlen)) [tf2_trend, tf2_strength] = request.security(syminfo.tickerid, "15", getTrendAndStrength(close, dilen, adxlen)) [tf3_trend, tf3_strength] = request.security(syminfo.tickerid, "30", getTrendAndStrength(close, dilen, adxlen)) [tf4_trend, tf4_strength] = request.security(syminfo.tickerid, "60", getTrendAndStrength(close, dilen, adxlen)) [current_trend, _] = getTrendAndStrength(close, dilen, adxlen) // Define colors based on trend indication tf1_color = tf1_trend == "Bullish" ? color.green : (tf1_trend == "Bearish" ? color.red : color.white) tf2_color = tf2_trend == "Bullish" ? color.green : (tf2_trend == "Bearish" ? color.red : color.white) tf3_color = tf3_trend == "Bullish" ? color.green : (tf3_trend == "Bearish" ? color.red : color.white) tf4_color = tf4_trend == "Bullish" ? color.green : (tf4_trend == "Bearish" ? color.red : color.white) current_color = current_trend == "Bullish" ? color.green : (current_trend == "Bearish" ? color.red : color.white) // Create and fill the enhanced table for DMI var table dmiTable = na if (barstate.islast) dmiTable := table.new(position.top_right, 6, 1) table.cell(dmiTable, 0, 0, "DMI Metrics", bgcolor=color.new(color.black, 90), width=15, height=4, text_color=color.white) table.cell(dmiTable, 1, 0, "5m Trend: " + tf1_trend, bgcolor=tf1_color, width=15, height=4, text_color=color.white) table.cell(dmiTable, 2, 0, "15m Trend: " + tf2_trend, bgcolor=tf2_color, width=15, height=4, text_color=color.white) table.cell(dmiTable, 3, 0, "30m Trend: " + tf3_trend, bgcolor=tf3_color, width=15, height=4, text_color=color.white) table.cell(dmiTable, 4, 0, "1h Trend: " + tf4_trend, bgcolor=tf4_color, width=15, height=4, text_color=color.white) table.cell(dmiTable, 5, 0, "Current Trend: " + current_trend, bgcolor=current_color, width=15, height=4, text_color=color.white) // Strategy logic if (longConditionEMA) strategy.entry("Long", strategy.long) if (shortConditionEMA) strategy.entry("Short", strategy.short)