Sumber dimuat naik... memuat...

Strategi Dagangan Momentum Purata Bergerak Berganda: Sistem Mengikuti Trend yang Dioptimumkan Masa

Penulis:ChaoZhang, Tarikh: 2024-07-31 14:50:26
Tag:SMAMA

img

Ringkasan

Strategi ini adalah sistem perdagangan mengikut trend berdasarkan silang purata bergerak berganda dan pengoptimuman masa. Ia menggunakan persimpangan purata bergerak jangka pendek dan jangka panjang untuk menjana isyarat beli dan jual, sambil menggabungkan tetingkap masa perdagangan tertentu untuk mengoptimumkan pelaksanaan perdagangan. Strategi ini juga merangkumi pelbagai harga sasaran dan tahap stop-loss untuk menguruskan risiko dan mengambil keuntungan.

Prinsip Strategi

Prinsip utama strategi ini adalah menggunakan dua purata bergerak (MA) dengan tempoh yang berbeza untuk mengenal pasti trend pasaran dan menjana isyarat perdagangan.

  1. Pemasaran jangka pendek dan jangka panjang: Strategi menggunakan dua tempoh purata bergerak yang ditakrifkan oleh pengguna, yang mewakili trend pasaran jangka pendek dan jangka panjang.

  2. Isyarat Crossover: Isyarat beli dihasilkan apabila MA jangka pendek melintasi MA jangka panjang; isyarat jual dihasilkan apabila MA jangka pendek melintasi MA jangka panjang.

  3. Pengoptimuman Masa: Strategi memperkenalkan konsep tetingkap masa dagangan, menjalankan dagangan hanya dalam julat masa UTC yang ditentukan oleh pengguna, membantu mengelakkan tempoh turun naik pasaran yang tinggi atau kecairan yang rendah.

  4. Pelbagai Harga Sasaran: Strategi menetapkan dua harga sasaran (Target_1 dan Target_2) untuk setiap perdagangan, yang membolehkan pengambilan keuntungan bertahap.

  5. Pengurusan Risiko: Setiap perdagangan ditetapkan dengan titik stop-loss untuk mengehadkan potensi kerugian.

  6. Visualisasi: Strategi menandakan isyarat beli dan jual dan label sasaran harga pada carta, yang membolehkan peniaga memahami dinamik pasaran secara intuitif.

Kelebihan Strategi

  1. Mengikuti trend: Dengan menggunakan persilangan purata bergerak, strategi dapat menangkap trend pasaran dengan berkesan, meningkatkan peluang keuntungan.

  2. Pengoptimuman Masa: Dengan mengehadkan tetingkap masa perdagangan, strategi boleh memberi tumpuan kepada tempoh pasaran yang paling aktif dan menguntungkan, meningkatkan kecekapan perdagangan.

  3. Pengurusan Risiko: Pelbagai harga sasaran dan tetapan stop-loss membantu mengimbangi risiko dan ganjaran, melindungi keselamatan modal.

  4. Fleksibiliti: Pengguna boleh menyesuaikan tempoh MA, harga sasaran, dan tingkap masa dagangan mengikut pilihan peribadi dan ciri pasaran.

  5. Bantuan Visual: Dengan menyifatkan isyarat beli / jual dan pencapaian harga sasaran pada carta, peniaga dapat memahami prestasi strategi dengan lebih intuitif.

  6. Perdagangan dua arah: Strategi ini menyokong kedua-dua kedudukan panjang dan pendek, mencari peluang dalam pelbagai persekitaran pasaran.

Risiko Strategi

  1. Risiko pasaran berbelit-belit: Dalam pasaran sampingan, persilangan MA yang kerap boleh menyebabkan isyarat palsu yang berlebihan dan kos dagangan.

  2. Risiko Slippage: Di pasaran cepat, harga pelaksanaan sebenar mungkin berbeza dengan harga pada penjanaan isyarat.

  3. Kepercayaan yang berlebihan terhadap Data Sejarah: Purata bergerak adalah penunjuk yang tertinggal dan mungkin tidak bertindak balas tepat pada masanya terhadap pembalikan pasaran secara tiba-tiba.

  4. Batasan Jendela Masa: Sekatan masa dagangan yang ketat boleh menyebabkan peluang pasaran penting hilang.

  5. Risiko Stop-Loss Tetap: Menggunakan stop-loss titik tetap mungkin tidak cukup fleksibel semasa tempoh turun naik yang tinggi.

  6. Overtrading: Di bawah keadaan pasaran tertentu, strategi mungkin menghasilkan terlalu banyak isyarat perdagangan, meningkatkan kos transaksi.

Arahan Pengoptimuman Strategi

  1. Penyesuaian Parameter Dinamik: Pertimbangkan untuk memperkenalkan mekanisme penyesuaian untuk menyesuaikan tempoh MA dan parameter dagangan secara dinamik berdasarkan turun naik pasaran.

  2. Penapis Volatiliti: Menilai turun naik pasaran sebelum menjana isyarat perdagangan untuk mengelakkan perdagangan berlebihan semasa tempoh turun naik yang rendah.

  3. Mekanisme Stop-Loss yang dipertingkatkan: Pertimbangkan untuk menggunakan stop-loss dinamik berdasarkan ATR (Average True Range) untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  4. Integrasi Penunjuk Teknikal Lain: Seperti RSI atau MACD, untuk mengesahkan kekuatan trend dan meningkatkan kualiti isyarat.

  5. Pengoptimuman Ujian Kembali: Melakukan pengujian semula data sejarah yang lebih luas untuk mencari kombinasi parameter yang optimum dan tetapan tetingkap masa.

  6. Pengoptimuman Pengurusan Modal: Melaksanakan strategi ukuran kedudukan yang lebih canggih, seperti menyesuaikan saiz perdagangan secara dinamik berdasarkan saiz akaun dan turun naik pasaran.

  7. Pertimbangan Faktor Asas: Sesuaikan tingkah laku strategi sebelum dan selepas siaran data ekonomi penting untuk mengelakkan perdagangan semasa tempoh ketidakpastian yang tinggi.

  8. Integrasi Pembelajaran Mesin: Terokai menggunakan algoritma pembelajaran mesin untuk mengoptimumkan pemilihan parameter dan proses penjanaan isyarat.

Kesimpulan

Strategi Dagangan Momentum Purata Bergerak Berganda adalah sistem mengikuti trend yang menggabungkan analisis teknikal dengan pengoptimuman masa. Dengan memanfaatkan persilangan purata bergerak dan tingkap masa perdagangan yang direka dengan teliti, strategi ini bertujuan untuk menangkap trend pasaran dan mengoptimumkan pelaksanaan perdagangan. Walaupun strategi ini mempunyai kelebihan seperti intuitif dan fleksibiliti, ia juga menghadapi risiko seperti turun naik pasaran dan overtrading. Melalui pengoptimuman dan penambahbaikan berterusan, seperti memperkenalkan penyesuaian parameter dinamik, meningkatkan mekanisme pengurusan risiko, dan mengintegrasikan lebih banyak penunjuk teknikal, strategi ini berpotensi menjadi sistem perdagangan yang lebih kukuh dan cekap.


/*backtest
start: 2024-07-23 00:00:00
end: 2024-07-30 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Gold Trend Trader", shorttitle="Gold Trader", overlay=true)

// User-defined input for moving averages
shortMA = input.int(10, minval=1, title="Short MA Period")
longMA = input.int(100, minval=1, title="Long MA Period")
target_1 = input.int(100, minval=1, title="Target_1")
target_2 = input.int(150, minval=1, title="Target_2")

// User-defined input for the start and end times with default values
startTimeInput = input.int(12, title="Start Time for Session (UTC, in hours)", minval=0, maxval=23)
endTimeInput = input.int(17, title="End Time Session (UTC, in hours)", minval=0, maxval=23)
// Convert the input hours to minutes from midnight
startTime = startTimeInput * 60 
endTime = endTimeInput * 60  

// Function to convert the current exchange time to UTC time in minutes
toUTCTime(exchangeTime) =>
    exchangeTimeInMinutes = exchangeTime / 60000
    // Adjust for UTC time
    utcTime = exchangeTimeInMinutes % 1440
    utcTime

// Get the current time in UTC in minutes from midnight
utcTime = toUTCTime(time)

// Check if the current UTC time is within the allowed timeframe
isAllowedTime = (utcTime >= startTime and utcTime < endTime)

// Calculating moving averages
shortMAValue = ta.sma(close, shortMA)
longMAValue = ta.sma(close, longMA)

// Plotting the MAs
plot(shortMAValue, title="Short MA", color=color.blue)
plot(longMAValue, title="Long MA", color=color.red)

// Tracking buy and sell signals
var float buyEntryPrice_1 = na
var float buyEntryPrice_2 = na
var float sellEntryPrice_1 = na
var float sellEntryPrice_2 = na

// Logic for Buy and Sell signals
buySignal = ta.crossover(shortMAValue, longMAValue) and isAllowedTime
sellSignal = ta.crossunder(shortMAValue, longMAValue) and isAllowedTime

// Entry conditions for long and short trades
if (buySignal)
    strategy.entry("Buy_1", strategy.long)
    strategy.exit("TP_1", "Buy_1", limit=close + target_1, stop=close - 100)

    strategy.entry("Buy_2", strategy.long)
    strategy.exit("TP_2", "Buy_2", limit=close + target_2, stop=close - 1500)

if (sellSignal)
    strategy.entry("Sell_1", strategy.short)
    strategy.exit("TP_3", "Sell_1", limit=close - target_1, stop=close + 100)

    strategy.entry("Sell_2", strategy.short)
    strategy.exit("TP_4", "Sell_2", limit=close - target_2, stop=close + 150)

// Apply background color for entry candles
barcolor(buySignal ? color.green : sellSignal ? color.red : na)

// Creating buy and sell labels
if (buySignal)
    label.new(bar_index, low, text="BUY", style=label.style_label_up, color=color.green, textcolor=color.white, yloc=yloc.belowbar)

if (sellSignal)
    label.new(bar_index, high, text="SELL", style=label.style_label_down, color=color.red, textcolor=color.white, yloc=yloc.abovebar)

// Creating labels for 100-point movement
if (not na(buyEntryPrice_1) and close >= buyEntryPrice_1 + target_1)
    label.new(bar_index, high, text=str.tostring(target_1), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
    buyEntryPrice_1 := na // Reset after label is created

if (not na(buyEntryPrice_2) and close >= buyEntryPrice_2 + target_2)
    label.new(bar_index, high, text=str.tostring(target_2), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
    buyEntryPrice_2 := na // Reset after label is created

if (not na(sellEntryPrice_1) and close <= sellEntryPrice_1 - target_1)
    label.new(bar_index, low, text=str.tostring(target_1), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
    sellEntryPrice_1 := na // Reset after label is created

if (not na(sellEntryPrice_2) and close <= sellEntryPrice_2 - target_2)
    label.new(bar_index, low, text=str.tostring(target_2), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
    sellEntryPrice_2 := na // Reset after label is created


Berkaitan

Lebih lanjut