Sumber dimuat naik... memuat...

Strategi Stop-Loss dan Take-Profit Dinamik Beradaptasi dengan SMA Crossover dan Penapis Volume

Penulis:ChaoZhang, Tarikh: 2024-07-31 11:20:39
Tag:SMA

img

Ringkasan

Strategi ini adalah sistem perdagangan automatik berdasarkan crossover Purata Bergerak Sederhana (SMA) dan penapisan jumlah. Ia menggunakan crossover SMA yang cepat dan perlahan untuk menjana isyarat kemasukan, sambil menggabungkan penunjuk jumlah untuk mengesahkan kekuatan trend. Strategi ini juga termasuk mekanisme berhenti rugi dan mengambil keuntungan yang dinamik, serta syarat keluar berdasarkan masa, yang bertujuan untuk mengoptimumkan pengurusan risiko dan meningkatkan keuntungan.

Prinsip Strategi

Prinsip-prinsip utama strategi ini berdasarkan komponen utama berikut:

  1. Sinyal SMA silang:

    • Menggunakan dua purata bergerak mudah dari tempoh yang berbeza (SMA pantas dan SMA perlahan)
    • Menghasilkan isyarat panjang apabila SMA cepat melintasi di atas SMA perlahan
    • Menghasilkan isyarat pendek apabila SMA pantas melintasi di bawah SMA perlahan
  2. Penapisan Volume:

    • Mengira purata bergerak sederhana jumlah
    • Isyarat panjang memerlukan jumlah semasa untuk berada di atas jumlah SMA
    • Isyarat pendek memerlukan jumlah semasa berada di bawah jumlah SMA
  3. Pendapatan yang ditukarkan kepada pendapatan yang ditukarkan

    • Menetapkan paras stop-loss dan mengambil keuntungan berdasarkan peratusan harga kemasukan
    • Tahap Stop Loss dan Take Profit boleh diselaraskan melalui parameter input
  4. Keluar Berasaskan Masa:

    • Tetapkan masa tahan maksimum (dalam bilangan bar)
    • Menutup kedudukan secara automatik selepas masa tahan maksimum untuk mengelakkan kedudukan negatif jangka panjang
  5. Penetapan Tempoh Ujian Kembali:

    • Membolehkan pengguna untuk menentukan julat masa backtest tertentu
    • Memastikan strategi berjalan hanya dalam tempoh sejarah yang ditentukan

Kelebihan Strategi

  1. Pengikut Trend dan Gabungan Momentum: Dengan menggabungkan crossover SMA dan penapisan jumlah, strategi ini dapat menangkap pergerakan trend yang kuat sambil mengelakkan perdagangan yang kerap di pasaran yang lemah.

  2. Pengurusan Risiko Fleksibel: Mekanisme berhenti rugi dan mengambil keuntungan dinamik membolehkan strategi untuk menyesuaikan pendedahan risiko secara automatik berdasarkan turun naik pasaran, membantu melindungi keuntungan dan mengehadkan potensi kerugian.

  3. Pencegahan Overholding: Had masa pegangan maksimum membantu mengelakkan strategi daripada memegang kedudukan kehilangan untuk tempoh yang panjang dalam keadaan pasaran yang tidak baik, menggalakkan penggunaan modal yang berkesan.

  4. Kebolehsesuaian Tinggi: Pelbagai parameter yang boleh diselaraskan (seperti tempoh SMA, peratusan stop-loss dan mengambil keuntungan, masa tahan maksimum, dll.) membolehkan strategi dioptimumkan untuk pasaran dan gaya perdagangan yang berbeza.

  5. Sokongan visual: Strategi merangka garis SMA dan isyarat perdagangan pada carta, memudahkan pemahaman dan analisis prestasi strategi secara intuitif.

Risiko Strategi

  1. Lagging Alam: Indikator SMA secara semula jadi ketinggalan, yang boleh membawa kepada kemasukan yang tertunda atau peluang yang hilang dalam pasaran yang berbalik dengan cepat.

  2. Risiko Pelanggaran Palsu: Dalam pasaran yang berbeza, penyeberangan SMA boleh menghasilkan isyarat pecah palsu yang kerap, yang membawa kepada perdagangan berlebihan dan peningkatan kos transaksi.

  3. Kebergantungan Volume: Kepercayaan yang berlebihan terhadap penunjuk jumlah boleh menyesatkan strategi dalam keadaan pasaran tertentu, terutamanya semasa tempoh kecairan yang rendah atau jumlah dagangan yang tidak normal.

  4. Peratusan tetap Stop-Loss/Take-Profit: Menggunakan stop loss peratusan tetap dan mengambil keuntungan mungkin tidak sesuai untuk semua keadaan pasaran, terutamanya semasa perubahan turun naik yang dramatik.

  5. Batasan Keluar Berasaskan Masa: Tempoh pemegangan maksimum tetap boleh menyebabkan keluar awal apabila trend yang menguntungkan belum berakhir, yang memberi kesan kepada potensi pulangan.

Arahan Pengoptimuman Strategi

  1. Penyesuaian Parameter Dinamik: Melaksanakan penyesuaian dinamik tempoh SMA, peratusan stop-loss dan mengambil keuntungan, dan masa tahan maksimum untuk menyesuaikan diri dengan kitaran pasaran dan turun naik yang berbeza.

  2. Masukkan Penapis Tambahan: Memperkenalkan penunjuk teknikal lain (seperti RSI, MACD, dan lain-lain) sebagai syarat penapisan tambahan untuk meningkatkan ketepatan isyarat perdagangan.

  3. Sempadan jumlah penyesuaian: Membangunkan mekanisme sempadan jumlah yang menyesuaikan secara dinamik untuk menyesuaikan diri dengan ciri-ciri jumlah dalam fasa pasaran yang berbeza.

  4. Mekanisme Keluar yang Lebih Baik: Meneroka mekanisme keluar pintar berdasarkan struktur pasaran atau penunjuk momentum untuk menggantikan keluar masa tetap, meningkatkan kebolehsesuaian strategi.

  5. Penyesuaian Volatiliti: Melaksanakan penyesuaian tahap stop-loss dan mengambil keuntungan yang dinamik berdasarkan turun naik pasaran untuk menguruskan risiko dan menangkap keuntungan dengan lebih baik.

  6. Analisis Pelbagai Tempoh: Mengintegrasikan analisis data dari pelbagai kerangka masa untuk meningkatkan keupayaan strategi untuk mengenal pasti trend pasaran dan pembalikan.

  7. Pengoptimuman pembelajaran mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimumkan parameter strategi secara dinamik, meningkatkan prestasi di pelbagai persekitaran pasaran.

Kesimpulan

Adaptive Dynamic Stop-Loss and Take-Profit Strategy with SMA Crossover and Volume Filter adalah sistem perdagangan komprehensif yang menggabungkan trend berikut, analisis jumlah, dan pengurusan risiko. Dengan memanfaatkan crossover SMA dan penapisan jumlah, strategi ini bertujuan untuk menangkap trend pasaran yang kuat, sementara mekanisme stop-loss dan mengambil keuntungan dinamiknya dan ciri keluar berdasarkan masa menyediakan kawalan risiko yang fleksibel. Walaupun terdapat beberapa batasan yang melekat, seperti kelewatan isyarat dan pergantungan pada parameter tetap, strategi ini menawarkan pelbagai arah pengoptimuman, termasuk penyesuaian parameter dinamik, pengenalan penunjuk teknikal tambahan, dan penggunaan teknik pembelajaran mesin. Melalui pengoptimuman dan peningkatan strategi yang berterusan, ini berpotensi menjadi alat perdagangan automatik yang kuat dan fleksibel yang sesuai untuk pelbagai keadaan pasaran dan gaya perdagangan.


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

//@version=5
strategy("Simple_CrossOver_Bot_V1_EBO", overlay=true)

// INPUTS
dateStart_Year = input.int(2018, title="Start Year", minval=2000)
dateStart_Month = input.int(1, title="Start Month", minval=1, maxval=12)
dateStart_Day = input.int(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input.int(2019, title="End Year", minval=2000)
dateEnd_Month = input.int(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input.int(1, title="End Day", minval=1, maxval=31)

fast_SMA_input = input.int(7, title="SMA Fast")
slow_SMA_input = input.int(25, title="SMA Slow")
volume_SMA_input = input.int(20, title="Volume SMA")
stop_loss_percent = input.float(1.0, title="Stop Loss (%)", step=0.1) / 100
take_profit_percent = input.float(2.0, title="Take Profit (%)", step=0.1) / 100
max_bars_in_trade = input.int(50, title="Max Bars in Trade", minval=1)

// INDICATORS
fast_SMA = ta.sma(close, fast_SMA_input)
slow_SMA = ta.sma(close, slow_SMA_input)
volume_SMA = ta.sma(volume, volume_SMA_input)

// STRATEGY
LONG = ta.crossover(fast_SMA, slow_SMA) and fast_SMA > slow_SMA and volume > volume_SMA
SHORT = ta.crossunder(fast_SMA, slow_SMA) and fast_SMA < slow_SMA and volume < volume_SMA

// TRIGGERS
testPeriodStart = timestamp(dateStart_Year, dateStart_Month, dateStart_Day)
testPeriodEnd = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day)
timecondition = true

// Track bar index for entries
var int long_entry_bar_index = na
var int short_entry_bar_index = na

if timecondition
    if LONG
        strategy.entry(id="LONG", direction=strategy.long)
        long_entry_bar_index := bar_index
    if SHORT
        strategy.entry(id="SHORT", direction=strategy.short)
        short_entry_bar_index := bar_index

    // Exit conditions for LONG
    if not na(long_entry_bar_index) and bar_index - long_entry_bar_index >= max_bars_in_trade
        strategy.close("LONG")
        long_entry_bar_index := na
    
    // Exit conditions for SHORT
    if not na(short_entry_bar_index) and bar_index - short_entry_bar_index >= max_bars_in_trade
        strategy.close("SHORT")
        short_entry_bar_index := na

    // Standard exits
    if LONG
        strategy.exit("Exit LONG", from_entry="LONG", stop=close * (1 - stop_loss_percent), limit=close * (1 + take_profit_percent))
    if SHORT
        strategy.exit("Exit SHORT", from_entry="SHORT", stop=close * (1 + stop_loss_percent), limit=close * (1 - take_profit_percent))

// PLOTS
plot(fast_SMA, color=color.green, linewidth=1, title="Fast SMA")
plot(slow_SMA, color=color.yellow, linewidth=1, title="Slow SMA")
plot(volume_SMA, color=color.blue, linewidth=1, title="Volume SMA")
plotshape(series=LONG, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=SHORT, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// Uncomment the following lines for alerts
// alertcondition(LONG, title="LONG")
// alertcondition(SHORT, title="SHORT")


Berkaitan

Lebih lanjut