Strategi Perdagangan Momentum Purata Pergerakan Dwi: Sistem Mengikut Aliran Berdasarkan Pengoptimuman Masa

SMA MA
Tarikh penciptaan: 2024-07-31 14:50:26 Akhirnya diubah suai: 2024-07-31 14:50:26
Salin: 17 Bilangan klik: 792
1
fokus pada
1617
Pengikut

Strategi Perdagangan Momentum Purata Pergerakan Dwi: Sistem Mengikut Aliran Berdasarkan Pengoptimuman Masa

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan trend-tracking yang berdasarkan pada crossover binari dan pengoptimuman masa. Ia menggunakan crossover rata-rata bergerak jangka pendek dan jangka panjang untuk menghasilkan isyarat beli dan jual, dan digabungkan dengan tetingkap masa perdagangan tertentu untuk mengoptimumkan pelaksanaan perdagangan.

Prinsip Strategi

Prinsip teras strategi ini adalah menggunakan purata bergerak ((MA) dari dua tempoh yang berbeza untuk mengenal pasti trend pasaran dan menghasilkan isyarat perdagangan. Secara khusus:

  1. MA jangka pendek dan MA jangka panjang: Strategi menggunakan dua kitaran purata bergerak yang disesuaikan oleh pengguna, yang mewakili trend pasaran jangka pendek dan jangka panjang.

  2. Isyarat silang: apabila MA pendek ke atas melintasi MA panjang, ia menghasilkan isyarat beli; apabila MA pendek ke bawah melintasi MA panjang, ia menghasilkan isyarat jual.

  3. Pengoptimuman masa: Strategi memperkenalkan konsep tetingkap masa perdagangan, yang hanya menjalankan perdagangan dalam julat masa UTC yang ditetapkan oleh pengguna, yang membantu mengelakkan tempoh ketika pasaran bergolak atau kurang cair.

  4. Harga sasaran pelbagai: Strategi menetapkan dua harga sasaran untuk setiap urus niaga ((Target_1 dan Target_2), yang membolehkan keuntungan bertahap.

  5. Pengurusan risiko: Setiap perdagangan mempunyai titik berhenti untuk mengehadkan potensi kerugian.

  6. Visualisasi: Strategi menunjukkan isyarat beli dan jual dan harga yang mencapai sasaran di carta untuk membantu pedagang memahami dinamik pasaran secara langsung.

Kelebihan Strategik

  1. Trend Tracking: Dengan menggunakan moving average crossover, strategi ini dapat menangkap trend pasaran dengan berkesan dan meningkatkan peluang keuntungan.

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

  3. Pengurusan risiko: Pelbagai harga sasaran dan tetapan stop-loss membantu menyeimbangkan risiko dan pulangan, melindungi keselamatan dana.

  4. Fleksibiliti: Pengguna boleh menyesuaikan kitaran MA, harga sasaran dan waktu perdagangan mengikut keutamaan peribadi dan ciri pasaran.

  5. Pembantu visual: Dengan menandai isyarat beli dan jual dan pencapaian harga sasaran pada carta, peniaga dapat memahami prestasi strategi dengan lebih intuitif.

  6. Perdagangan dua hala: Strategi yang menyokong kedua-dua perdagangan tinggi dan rendah untuk mencari peluang dalam pelbagai keadaan pasaran.

Risiko Strategik

  1. Risiko pasaran goyah: Dalam pasaran goyah, persilangan MA yang kerap boleh menyebabkan terlalu banyak isyarat palsu dan kos dagangan.

  2. Risiko slippage: Dalam pasaran pantas, harga transaksi sebenar mungkin berbeza dengan harga semasa isyarat dihasilkan.

  3. Terlalu bergantung pada data sejarah: Purata bergerak adalah penunjuk yang ketinggalan zaman, dan mungkin tidak bertindak balas dengan cepat apabila pasaran berubah secara mendadak.

  4. Pembatasan Jendela Masa: Pembatasan masa perdagangan yang ketat boleh menyebabkan peluang pasaran yang penting terlepas.

  5. Risiko Hentian Tetap: Hentian yang digunakan dengan nilai tetap mungkin tidak fleksibel dalam tempoh yang bergelombang tinggi.

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

Arah pengoptimuman strategi

  1. Penyesuaian parameter dinamik: pertimbangkan untuk memperkenalkan mekanisme penyesuaian diri, menyesuaikan kitaran MA dan parameter perdagangan mengikut dinamik turun naik pasaran.

  2. Menambah penapis kadar turun naik: menilai kadar turun naik pasaran sebelum menghasilkan isyarat perdagangan, untuk mengelakkan perdagangan berlebihan pada masa turun naik rendah.

  3. Peningkatan mekanisme penangguhan: boleh dipertimbangkan untuk menggunakan penangguhan dinamik berdasarkan ATR (rangkaian sebenar rata-rata) untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  4. Mengintegrasikan petunjuk teknikal lain: seperti RSI atau MACD, untuk mengukuhkan kekuatan trend dan meningkatkan kualiti isyarat.

  5. Pengoptimuman retrospeksi: melakukan retrospeksi data sejarah yang lebih luas untuk mencari kombinasi parameter dan tetapan tetingkap masa yang optimum.

  6. Pengurusan wang yang dioptimumkan: pelaksanaan strategi pengurusan kedudukan yang lebih kompleks, seperti penyesuaian dinamik saiz perdagangan berdasarkan saiz akaun dan turun naik pasaran.

  7. Pertimbangkan faktor asas: menyesuaikan tindakan strategi sebelum dan selepas data ekonomi penting dikeluarkan, dan mengelakkan perdagangan semasa ketidakpastian yang tinggi.

  8. Penggabungan pembelajaran mesin: meneroka proses pemilihan parameter dan penjanaan isyarat yang dioptimumkan menggunakan algoritma pembelajaran mesin.

ringkaskan

Strategi perdagangan dinamika binari adalah sistem pengesanan trend yang menggabungkan analisis teknikal dan pengoptimuman masa. Strategi ini bertujuan untuk menangkap trend pasaran dan mengoptimumkan pelaksanaan perdagangan dengan memanfaatkan persilangan purata bergerak dan jendela waktu perdagangan yang dirancang dengan teliti. Walaupun strategi ini mempunyai kelebihan seperti intuisi dan fleksibiliti, ia juga menghadapi risiko perdagangan seperti turun naik dan berlebihan pasaran.

Kod sumber strategi
/*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