Strategi henti untung dan henti kerugian dinamik purata pindah silang berganda

SMA MA SL TP ATR
Tarikh penciptaan: 2024-11-18 15:32:26 Akhirnya diubah suai: 2024-11-18 15:54:16
Salin: 0 Bilangan klik: 505
1
fokus pada
1617
Pengikut

Strategi henti untung dan henti kerugian dinamik purata pindah silang berganda

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan isyarat silang dua garis sejajar, untuk mengenal pasti perubahan trend pasaran melalui persilangan rata-rata bergerak jangka pendek dan jangka panjang, dan untuk mengawal risiko dalam kombinasi dengan pengurusan hentian hentian yang dinamik. Strategi ini menggunakan satuan harga pasaran untuk berdagang, secara automatik melonggarkan kedudukan sedia ada dan membuka kedudukan baru apabila isyarat dicetuskan, untuk melindungi keselamatan modal dengan menetapkan titik hentian hentian.

Prinsip Strategi

Strategi menggunakan purata bergerak sederhana ((SMA) dari dua kitaran yang berbeza sebagai asas utama isyarat perdagangan. Apabila garis purata jangka pendek melintasi garis purata jangka panjang, sistem menghasilkan banyak isyarat; Apabila garis purata jangka pendek melintasi garis purata jangka panjang, sistem menghasilkan isyarat penyingkiran.

Kelebihan Strategik

  1. Kejelasan mekanisme isyarat - penyambungan dua garis sejajar sebagai penunjuk teknikal klasik, isyarat jelas dan mudah difahami
  2. Pengurusan risiko yang sempurna - mengawal risiko setiap dagangan dengan stop loss yang dinamik
  3. Tingkat automasi yang tinggi - pelaksanaan automatik sepanjang proses dari pengenalan isyarat hingga pengurusan kedudukan
  4. Adaptif - boleh disesuaikan dengan parameter untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  5. Struktur mudah - kod logik yang jelas, mudah untuk dijaga dan dioptimumkan
  6. Pemantauan dalam masa nyata - fungsi peringatan perdagangan disediakan untuk menjejaki pelaksanaan strategi

Risiko Strategik

  1. Risiko pasaran yang bergolak - Perdagangan yang kerap mungkin menyebabkan kerugian dalam keadaan yang bergolak
  2. Risiko slippage - pelaksanaan harga pasaran mungkin menghadapi slippage yang lebih besar
  3. Sensitiviti parameter - Pilihan kitaran garis rata mempunyai kesan yang lebih besar terhadap prestasi strategi
  4. Risiko penembusan palsu - mungkin penarikan balik yang cepat selepas penembusan harga jangka pendek
  5. Risiko pengurusan wang - peratusan hentian tetap mungkin tidak sesuai untuk semua keadaan pasaran

Arah pengoptimuman strategi

  1. Menambah penapis trend untuk mengelakkan dagangan yang kerap di pasaran yang bergolak
  2. Memperkenalkan dinamika penyesuaian stop loss
  3. Menambah isyarat pengesahan jumlah transaksi untuk meningkatkan kualiti transaksi
  4. Optimumkan masa pembukaan, pertimbangkan untuk memperkenalkan mekanisme penyesuaian harga
  5. Memperbaiki sistem pengurusan wang, mewujudkan kawalan kedudukan dinamik
  6. Meningkatkan indikator sentimen pasaran dan meningkatkan kebolehpercayaan isyarat

ringkaskan

Ini adalah strategi perdagangan kuantitatif yang tersusun dengan struktur yang lengkap dan logik yang jelas. Strategi ini menangkap perubahan trend dengan penyeberangan dua garis sejajar, dengan pengendalian risiko stop loss yang dinamik. Kelebihan strategi ini adalah tahap sistematisasi yang tinggi, risiko dapat dikawal, tetapi masih perlu berhati-hati untuk menangani pelbagai jenis risiko pasaran di pasaran. Dengan pengoptimuman dan penyempurnaan yang berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza.

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