Sumber dimuat naik... memuat...

Strategi crossover purata bergerak berganda dengan pengurusan risiko dinamik

Penulis:ChaoZhang, Tarikh: 2024-11-18 15:32:26
Tag:SMAMASLTPATR

img

Ringkasan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan isyarat silang purata bergerak berganda, yang mengenal pasti perubahan trend pasaran melalui persimpangan purata bergerak jangka pendek dan jangka panjang, digabungkan dengan pengurusan stop-loss dan mengambil keuntungan yang dinamik untuk kawalan risiko. Strategi ini menggunakan pesanan pasaran untuk perdagangan, secara automatik menutup kedudukan sedia ada dan membuka kedudukan baru apabila isyarat dicetuskan, dan melindungi keselamatan modal dengan menetapkan tahap stop-loss dan mengambil keuntungan.

Prinsip Strategi

Strategi ini menggunakan dua Purata Bergerak Sederhana (SMA) dari tempoh yang berbeza sebagai asas utama untuk isyarat perdagangan. Isyarat panjang dihasilkan apabila MA jangka pendek melintasi di atas MA jangka panjang, dan isyarat pendek dihasilkan apabila MA jangka pendek melintasi di bawah MA jangka panjang. Sistem memeriksa status kedudukan semasa apabila isyarat berlaku, menutup mana-mana kedudukan lawan terlebih dahulu, kemudian membuka kedudukan baru mengikut arah isyarat. Setiap perdagangan secara automatik menetapkan paras stop-loss dan mengambil keuntungan berdasarkan peratusan yang telah ditetapkan, mencapai pengurusan dinamik nisbah risiko-balasan.

Kelebihan Strategi

  1. Mekanisme Isyarat Jelas - Persalinan MA Berganda adalah penunjuk teknikal klasik dengan isyarat yang jelas dan mudah difahami
  2. Pengurusan Risiko Komprehensif - Mengendalikan risiko untuk setiap perdagangan melalui stop-loss dinamik dan mengambil keuntungan
  3. Tahap Automasi Tinggi - Pelaksanaan sepenuhnya automatik dari pengenalan isyarat hingga pengurusan kedudukan
  4. Kebolehsesuaian yang kuat - Boleh menyesuaikan diri dengan persekitaran pasaran yang berbeza melalui pelarasan parameter
  5. Struktur Sederhana - Logik kod yang jelas, mudah dikekalkan dan dioptimumkan
  6. Pemantauan masa nyata - Termasuk fungsi amaran perdagangan untuk mengesan pelaksanaan strategi yang mudah

Risiko Strategi

  1. Risiko pasaran yang berbelit-belit - Boleh menyebabkan kerugian perdagangan yang kerap di pasaran terhad julat
  2. Risiko Penembusan - Perintah pasaran mungkin menghadapi penembusan yang ketara
  3. Sensitiviti Parameter - Pilihan tempoh MA memberi kesan yang ketara kepada prestasi strategi
  4. Riska Pelanggaran Palsu - Kemungkinan pembalikan yang cepat selepas pelaburan jangka pendek
  5. Risiko Pengurusan Wang - Peratusan pegangan tetap mungkin tidak sesuai dengan semua keadaan pasaran

Arahan Pengoptimuman Strategi

  1. Tambah penapis trend untuk mengelakkan perdagangan yang kerap di pasaran bergelombang
  2. Menggabungkan penunjuk turun naik untuk penyesuaian stop-loss dinamik dan nisbah mengambil keuntungan
  3. Tambah isyarat pengesahan jumlah untuk meningkatkan kualiti perdagangan
  4. Mengoptimumkan masa kemasukan dengan mempertimbangkan mekanisme penurunan harga
  5. Meningkatkan sistem pengurusan wang untuk saiz kedudukan dinamik
  6. Sertakan penunjuk sentimen pasaran untuk meningkatkan kebolehpercayaan isyarat

Ringkasan

Ini adalah strategi perdagangan kuantitatif yang komprehensif dengan logik yang jelas. Ia menangkap perubahan trend melalui persilangan MA berganda dan menguruskan risiko dengan tahap stop-loss dan mengambil keuntungan yang dinamik. Kekuatan strategi terletak pada pendekatan sistematik dan kawalan risiko, tetapi perhatian mesti diberikan kepada pelbagai risiko pasaran dalam perdagangan langsung. Melalui pengoptimuman dan peningkatan yang berterusan, strategi dapat mengekalkan prestasi yang stabil dalam persekitaran pasaran yang berbeza.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD)

// Configurable Inputs
stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1)
take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1)
short_ma_length = input.int(title="Short MA Length", defval=9, minval=1)
long_ma_length = input.int(title="Long MA Length", defval=21, minval=1)

// Moving Averages
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)

// Plotting Moving Averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.red, title="Long MA")

// Buy and Sell Signals
buy_signal = ta.crossover(short_ma, long_ma)
sell_signal = ta.crossunder(short_ma, long_ma)

// Market Buy Logic
if (buy_signal and strategy.position_size <= 0)
    // Close any existing short position
    if (strategy.position_size < 0)
        strategy.close(id="Market Sell")
    
    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    long_stop = entry_price * (1 - stop_loss_percent / 100)
    long_take_profit = entry_price * (1 + take_profit_percent / 100)

    // Enter Long Position
    strategy.entry(id="Market Buy", direction=strategy.long)
    strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit)

    // Alert for Market Buy
    alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close)

// Market Sell Logic
if (sell_signal and strategy.position_size >= 0)
    // Close any existing long position
    if (strategy.position_size > 0)
        strategy.close(id="Market Buy")

    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    short_stop = entry_price * (1 + stop_loss_percent / 100)
    short_take_profit = entry_price * (1 - take_profit_percent / 100)

    // Enter Short Position
    strategy.entry(id="Market Sell", direction=strategy.short)
    strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit)

    // Alert for Market Sell
    alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)


Berkaitan

Lebih lanjut