
Artikel ini memperkenalkan strategi dagangan kuantitatif yang dipanggil “Kyrie Crossover @zaytrade”. Strategi ini menggabungkan penunjuk DMI dua hala dan pelbagai tempoh masa untuk membuat keputusan perdagangan dengan menangkap trend pasaran. Inti strategi ini adalah menggunakan isyarat persilangan garis rata-rata jangka pendek (EMA 10 kitaran) dan garis rata-rata jangka panjang (EMA 323 kitaran) sambil menggabungkan penunjuk DMI pelbagai tempoh masa seperti 5 minit, 15 minit, 30 minit dan 1 jam untuk mengesahkan arah dan kekuatan trend.
Prinsip strategi ini boleh dibahagikan kepada beberapa bahagian:
Garis dua hala yang bersilang:Strategi ini menggunakan EMA jangka pendek ((10 kitaran) dan EMA jangka panjang ((323 kitaran) untuk menangkap trend pasaran. Apabila EMA jangka pendek di atas EMA jangka panjang, ia menunjukkan peluang yang berpotensi untuk melakukan lebih banyak; Apabila EMA jangka pendek di bawah EMA jangka panjang, ia menunjukkan peluang yang berpotensi untuk melakukan shorting.
Indeks DMI tempoh masa berbilang:Untuk lebih mengesahkan arah dan kekuatan trend, strategi menggunakan indikator DMI dalam pelbagai tempoh masa. Indeks DMI terdiri daripada ADX (Indeks Arah Rata-rata), + DI (Indeks Arah Naik) dan -DI (Indeks Arah Turun). Dengan membandingkan kekuatan relatif + DI dan -DI, trend semasa dapat ditentukan sebagai bullish atau bearish. Strategi mengira indikator DMI dalam beberapa tempoh masa, seperti 5 minit, 15 minit, 30 minit dan 1 jam, untuk mendapatkan maklumat trend yang lebih menyeluruh.
Trend yang disahkan:Strategi mengesahkan trend dengan mempertimbangkan secara komprehensif isyarat persilangan rata-rata dan indikator DMI tempoh masa yang berbilang. Strategi akan menghasilkan isyarat perdagangan yang sesuai apabila isyarat persilangan rata-rata dan arah trend indikator DMI sama. Sebagai contoh, apabila EMA jangka pendek melintasi EMA jangka panjang, dan indikator DMI beberapa tempoh masa menunjukkan trend bullish, strategi akan menghasilkan isyarat ganda.
Pengurusan Risiko:Strategi menggunakan kaedah pengurusan kedudukan berdasarkan peratusan risiko. Pengguna boleh menggunakan setingriskPercentageEMAParameter untuk mengawal risiko setiap perdagangan. Selain itu, strategi juga menggunakan Stop Loss Order untuk mengehadkan potensi kerugian.
Menangkap Trend Pasaran:Dengan menggabungkan penyambungan dua garis rata dan penunjuk DMI jangka masa, strategi dapat menangkap trend utama pasaran dengan berkesan. Kaedah ini dapat membantu peniaga mematuhi arah besar pasaran dan meningkatkan kemungkinan kejayaan perdagangan.
Pengesahan tempoh masa:Strategi mengira indikator DMI pada beberapa tempoh masa, termasuk 5 minit, 15 minit, 30 minit dan 1 jam. Kaedah analisis pelbagai tempoh masa ini dapat memberikan isyarat pengesahan trend yang lebih menyeluruh dan boleh dipercayai, mengurangkan kemunculan isyarat palsu.
Tetapan parameter yang fleksibel:Strategi ini menyediakan beberapa parameter yang boleh disesuaikan, seperti kitaran EMA pendek, kitaran EMA panjang, kitaran pelepasan ADX dan panjang DI. Pengguna boleh mengoptimumkan parameter ini mengikut gaya perdagangan dan ciri-ciri pasaran mereka sendiri untuk mendapatkan prestasi perdagangan yang lebih baik.
Pengurusan Risiko:Strategi ini mempunyai kaedah pengurusan kedudukan berdasarkan peratusan risiko yang boleh digunakan oleh pengguna dengan menetapkanriskPercentageEMAParameter untuk mengawal had risiko setiap perdagangan. Selain itu, strategi juga menggunakan stop loss untuk mengehadkan potensi kerugian, meningkatkan keberkesanan pengurusan risiko.
Optimasi parameter:Prestasi strategi sangat bergantung kepada pilihan parameter. Tetapan parameter yang tidak betul boleh menyebabkan strategi tidak berfungsi dengan baik dan bahkan menghasilkan pengunduran yang lebih besar. Oleh itu, dalam aplikasi sebenar, parameter perlu dioptimumkan dan diuji untuk mencari kombinasi parameter terbaik yang sesuai dengan keadaan pasaran semasa.
Perkembangan yang tertunda:Oleh kerana strategi bergantung kepada persilangan rata-rata dan penunjuk DMI untuk mengesahkan trend, dalam keadaan pasaran yang berubah dengan cepat, penciptaan isyarat mungkin mempunyai kelewatan. Ini bermakna bahawa strategi mungkin kehilangan beberapa peluang trend awal, atau hanya menghasilkan isyarat apabila trend telah berbalik.
Pasaran Bergolak:Dalam pasaran yang bergolak, turun naik harga boleh menyebabkan persilangan rata-rata yang kerap dan perubahan dalam indikator DMI. Ini boleh menyebabkan strategi menghasilkan lebih banyak isyarat perdagangan, meningkatkan kos perdagangan dan risiko penarikan balik. Oleh itu, dalam pasaran yang bergolak, prestasi strategi mungkin terjejas.
Peristiwa Black Swan:Strategi berdasarkan data sejarah dan model statistik, untuk beberapa peristiwa pasaran yang melampau, seperti peristiwa Black Swan, strategi mungkin tidak dapat bertindak balas tepat pada masanya. Ini boleh menyebabkan strategi mengalami kerugian yang lebih besar dalam keadaan khusus ini.
Pengaturan parameter dinamik:Anda boleh mempertimbangkan untuk memperkenalkan mekanisme penyesuaian parameter dinamik, yang menyesuaikan parameter strategi secara adaptif mengikut turun naik dan kekuatan trend pasaran. Ini dapat membantu strategi menyesuaikan diri dengan lebih baik dengan keadaan pasaran yang berbeza, meningkatkan ketahanan strategi.
Pengesahan pelbagai faktor:Selain daripada penyambung rata-rata dan penunjuk DMI, penunjuk teknikal atau faktor asas lain boleh diperkenalkan untuk mengukuhkan lagi trend. Sebagai contoh, penunjuk seperti jumlah pertukaran, kadar turun naik, dan sentimen pasaran boleh digabungkan untuk mendapatkan isyarat perdagangan yang lebih dipercayai.
Pengoptimuman Stop Loss:Anda boleh mengoptimumkan kedudukan hentian hentian, misalnya dengan menggunakan hentian bergerak, hentian dinamik dan sebagainya. Ini dapat membantu strategi melindungi keuntungan dengan lebih baik, sambil mengehadkan potensi kerugian.
Pengurusan kedudukan:Kaedah pengurusan kedudukan yang lebih maju boleh diperkenalkan, seperti formula Kelly, pelaburan peratusan tetap, dan sebagainya. Ini dapat membantu strategi menyesuaikan kedudukan secara dinamik dalam keadaan pasaran yang berbeza, meningkatkan kecekapan penggunaan dana dan kemampuan mengawal risiko.
Pembelajaran Mesin yang dioptimumkan:Algoritma pembelajaran mesin boleh digabungkan dengan strategi ini untuk mengoptimumkan pilihan parameter dan penjanaan isyarat strategi melalui pembelajaran dan pengenalan corak data sejarah. Ini dapat membantu strategi menyesuaikan diri dengan perubahan pasaran secara automatik, meningkatkan daya serap dan ketahanan strategi.
Artikel ini membentangkan strategi perdagangan kuantitatif berdasarkan penunjuk DMI dua hala dan pelbagai tempoh masa. Strategi ini membuat keputusan perdagangan dengan menangkap trend pasaran, sambil menggunakan langkah-langkah pengurusan risiko untuk mengawal potensi kerugian. Kelebihan strategi ini adalah kemampuan untuk mengenal pasti trend utama pasaran dengan berkesan dan meningkatkan kebolehpercayaan isyarat melalui pengesahan pelbagai tempoh masa.
/*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)