Tren Mengikuti Strategi Berdasarkan Dual Moving Average Crossover dan Multi-Timeframe DMI Indicator

Penulis:ChaoZhang, Tanggal: 2024-03-22 14:23:30
Tag:

img

Tinjauan Strategi

Artikel ini memperkenalkan strategi perdagangan kuantitatif bernama Kyrie Crossover @zaytrade. Strategi ini menggabungkan crossover rata-rata bergerak ganda dan indikator DMI multi-frame untuk menangkap tren pasar untuk keputusan perdagangan. Inti dari strategi ini adalah untuk memanfaatkan sinyal crossover dari rata-rata bergerak jangka pendek (10 periode EMA) dan rata-rata bergerak jangka panjang (323 periode EMA), sambil mengkonfirmasi arah tren dan kekuatan menggunakan indikator DMI di beberapa kerangka waktu seperti 5 menit, 15 menit, 30 menit, dan 1 jam.

Prinsip Strategi

Prinsip-prinsip dari strategi ini dapat dibagi menjadi bagian berikut:

  1. Crossover rata-rata bergerak ganda:Strategi ini menggunakan EMA jangka pendek (10 periode) dan EMA jangka panjang (323 periode) untuk menangkap tren pasar. Ketika EMA jangka pendek melintasi di atas EMA jangka panjang, itu menunjukkan peluang jangka panjang potensial; ketika EMA jangka pendek melintasi di bawah EMA jangka panjang, itu menunjukkan peluang jangka pendek potensial. Metode crossover rata-rata bergerak ini dapat secara efektif mengidentifikasi titik balik pasar dan arah tren.

  2. Indikator DMI Multi-Timeframe:Untuk mengkonfirmasi lebih lanjut arah dan kekuatan tren, strategi menggunakan indikator DMI di beberapa kerangka waktu. Indikator DMI terdiri dari ADX (Indeks Arah Rata-rata), +DI (Indikator Arah Positif), dan -DI (Indikator Arah Negatif). Dengan membandingkan kekuatan relatif +DI dan -DI, dapat ditentukan apakah tren saat ini bullish atau bearish. Strategi menghitung indikator DMI pada kerangka waktu 5 menit, 15 menit, 30 menit, dan 1 jam untuk mendapatkan informasi tren yang lebih komprehensif.

  3. Konfirmasi tren:Strategi ini mengkonfirmasi tren dengan secara komprehensif mempertimbangkan sinyal crossover rata-rata bergerak dan indikator DMI multi-frame. Ketika sinyal crossover rata-rata bergerak selaras dengan arah tren yang ditunjukkan oleh indikator DMI, strategi menghasilkan sinyal perdagangan yang sesuai. Misalnya, ketika EMA jangka pendek melintasi di atas EMA jangka panjang, dan beberapa jangka waktu indikator DMI menunjukkan tren bullish, strategi menghasilkan sinyal panjang.

  4. Manajemen Risiko:Strategi ini menggunakan metode ukuran posisi berbasis persentase risiko.riskPercentageEMASelain itu, strategi menggunakan perintah stop loss untuk membatasi potensi kerugian.

Keuntungan Strategi

  1. Trend Capturing:Dengan menggabungkan indikator crossover rata-rata bergerak ganda dan indikator DMI multi-frame, strategi dapat secara efektif menangkap tren utama di pasar.

  2. Konfirmasi Multi-Timeframe:Strategi ini menghitung indikator DMI pada beberapa kerangka waktu, termasuk 5 menit, 15 menit, 30 menit, dan 1 jam. Pendekatan analisis multi-kerangka waktu ini memberikan sinyal konfirmasi tren yang lebih komprehensif dan dapat diandalkan, mengurangi terjadinya sinyal palsu.

  3. Pengaturan parameter yang fleksibel:Strategi ini menawarkan berbagai parameter yang dapat disesuaikan, seperti periode EMA jangka pendek, periode EMA jangka panjang, periode perataan ADX, dan panjang DI. Pengguna dapat mengoptimalkan parameter ini berdasarkan gaya perdagangan dan karakteristik pasar mereka untuk mencapai kinerja perdagangan yang lebih baik.

  4. Manajemen Risiko:Strategi ini menggabungkan metode ukuran posisi berbasis persentase risiko, yang memungkinkan pengguna untuk mengontrol eksposur risiko dari setiap perdagangan dengan menetapkanriskPercentageEMASelain itu, strategi menggunakan perintah stop loss untuk membatasi potensi kerugian, meningkatkan efektivitas manajemen risiko.

Risiko Strategi

  1. Optimasi Parameter:Kinerja strategi sangat tergantung pada pilihan parameter. Pengaturan parameter yang tidak tepat dapat menyebabkan kinerja strategi yang tidak optimal atau bahkan penurunan yang signifikan. Oleh karena itu, dalam aplikasi praktis, perlu untuk mengoptimalkan dan menguji parameter untuk menemukan kombinasi parameter terbaik yang sesuai dengan kondisi pasar saat ini.

  2. Penundaan tren:Karena strategi bergantung pada crossover rata-rata bergerak dan indikator DMI untuk mengkonfirmasi tren, mungkin ada penundaan tertentu dalam generasi sinyal selama kondisi pasar yang berubah dengan cepat.

  3. Choppy Pasar:Di pasar yang bergolak, fluktuasi harga dapat menyebabkan perpindahan rata-rata bergerak yang sering dan perubahan indikator DMI. Hal ini dapat mengakibatkan strategi menghasilkan lebih banyak sinyal perdagangan, meningkatkan biaya perdagangan dan risiko penarikan. Oleh karena itu, kinerja strategi dapat terpengaruh dalam kondisi pasar yang bergolak.

  4. Peristiwa Black Swan:Strategi ini didasarkan pada data historis dan model statistik. Untuk peristiwa pasar ekstrem, seperti peristiwa angsa hitam, strategi mungkin tidak dapat bereaksi dengan benar dan tepat waktu. Hal ini dapat menyebabkan kerugian yang signifikan bagi strategi dalam keadaan khusus ini.

Arahan Optimasi

  1. Pengaturan parameter dinamis:Pertimbangkan untuk memperkenalkan mekanisme penyesuaian parameter dinamis yang menyesuaikan parameter strategi berdasarkan volatilitas pasar dan kekuatan tren.

  2. Konfirmasi multi-faktor:Selain crossover rata-rata bergerak dan indikator DMI, indikator teknis atau faktor fundamental lainnya dapat diperkenalkan untuk mengkonfirmasi tren lebih lanjut.

  3. Optimasi Stop-Loss dan Take-Profit:Mengoptimalkan penempatan level stop-loss dan take-profit, seperti menggunakan trailing stop atau metode stop-loss dinamis. Ini dapat membantu strategi melindungi keuntungan dengan lebih baik sambil membatasi potensi kerugian.

  4. Ukuran Posisi:Memperkenalkan metode ukuran posisi yang lebih maju, seperti Kriteria Kelly atau investasi pecahan tetap. Ini dapat membantu strategi menyesuaikan posisi secara dinamis di lingkungan pasar yang berbeda, meningkatkan efisiensi pemanfaatan modal dan kemampuan pengendalian risiko.

  5. Optimasi Pembelajaran Mesin:Cobalah untuk menggabungkan algoritma pembelajaran mesin dengan strategi. Melalui pembelajaran dan pengenalan pola data historis, optimalkan pemilihan parameter dan generasi sinyal strategi. Ini dapat membantu strategi secara otomatis beradaptasi dengan perubahan pasar, meningkatkan kemampuan beradaptasi dan ketahanan.

Kesimpulan

Artikel ini memperkenalkan strategi perdagangan kuantitatif berdasarkan crossover rata-rata bergerak ganda dan indikator DMI multi-frame. Strategi ini membuat keputusan perdagangan dengan menangkap tren pasar sambil menggunakan langkah-langkah manajemen risiko untuk mengendalikan kerugian potensial. Keuntungan strategi ini terletak pada kemampuannya untuk secara efektif mengidentifikasi tren utama di pasar dan meningkatkan keandalan sinyal melalui konfirmasi multi-frame. Namun, strategi ini juga memiliki risiko tertentu, seperti optimasi parameter, penundaan tren, pasar bergolak, dan peristiwa angsa hitam. Untuk lebih mengoptimalkan strategi, metode seperti penyesuaian parameter dinamis, konfirmasi multi-faktor, optimasi stop-loss dan take-profit, ukuran posisi, dan pembelajaran mesin dapat dipertimbangkan. Secara keseluruhan, strategi ini memberikan pedagang kuantitatif dengan pendekatan perdagangan trend-mengikuti. Dengan optimasi dan peningkatan, strategi ini memiliki potensi yang wajar untuk mencapai kinerja yang baik dalam perdagangan aktual.


/*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)


Lebih banyak