Strategi perdagangan tren cerdas kejutan acak multi-parameter

STOCH EMA SMA RR SL TP POP
Tanggal Pembuatan: 2025-01-06 16:09:58 Akhirnya memodifikasi: 2025-01-06 16:09:58
menyalin: 1 Jumlah klik: 374
1
fokus pada
1617
Pengikut

Strategi perdagangan tren cerdas kejutan acak multi-parameter

Ringkasan

Strategi ini adalah sistem perdagangan cerdas berdasarkan Osilator Stokastik. Menggabungkan pengenalan tren dinamis, konfirmasi beberapa sinyal, dan fungsi manajemen risiko cerdas, serta secara otomatis dapat mengidentifikasi kondisi pasar yang kelebihan beli dan kelebihan jual, serta melakukan transaksi. Strategi ini menampilkan status pasar secara visual melalui sistem kode warna, mengintegrasikan rata-rata pergerakan multi-periode (EMA) untuk konfirmasi tren, dan menyediakan pengaturan stop-loss dan take-profit yang fleksibel.

Prinsip Strategi

Inti dari strategi ini didasarkan pada koordinasi osilator stokastik dan sistem rata-rata pergerakan berganda. Sinyal perdagangan dihasilkan ketika nilai K menembus level jenuh beli atau jenuh jual yang telah ditetapkan (9315) atau level tengah (40). Sistem menampilkan status pasar secara visual melalui perubahan warna (merah menunjukkan kemungkinan penurunan, hijau menunjukkan kemungkinan kenaikan, dan biru menunjukkan netral). Ia juga menggabungkan rata-rata pergerakan eksponensial (EMA) periode 20, 50, 100 dan 200 untuk konfirmasi tren. Strategi ini juga mencakup sistem manajemen risiko cerdas yang mendukung berbagai pengaturan rasio risiko-imbal hasil seperti 1:1, 1:4, dan 1:8.

Keunggulan Strategis

  1. Sistem sinyal jelas dan intuitif, dengan kode warna untuk mengidentifikasi status pasar dengan cepat
  2. Mekanisme konfirmasi sinyal ganda untuk mengurangi risiko sinyal palsu
  3. Sistem manajemen risiko yang fleksibel, mendukung rasio risiko-pengembalian yang disesuaikan
  4. Dikombinasikan dengan rata-rata pergerakan multi-periode untuk memberikan konfirmasi tren
  5. Pengaturan stop loss dan take profit otomatis untuk mengurangi risiko operasi manual
  6. Struktur kode jelas, mudah dirawat dan dioptimalkan

Risiko Strategis

  1. Sinyal perdagangan yang sering dapat dihasilkan di pasar yang bergejolak
  2. Ambang batas overbought dan oversold yang tetap mungkin tidak sesuai di semua lingkungan pasar
  3. Sistem rata-rata bergerak mungkin tertinggal di pasar yang bergejolak
  4. Perlu menetapkan stop loss yang wajar untuk mengendalikan risiko Solusinya meliputi: menambahkan mekanisme penyaringan sinyal, menyesuaikan ambang batas secara dinamis, mengoptimalkan parameter rata-rata pergerakan, dan menerapkan strategi stop-loss secara ketat.

Arah optimasi strategi

  1. Memperkenalkan sistem ambang batas adaptif untuk menyesuaikan level jenuh beli dan jenuh jual secara dinamis berdasarkan fluktuasi pasar
  2. Tambahkan indikator volume untuk mengonfirmasi sinyal
  3. Mengembangkan mekanisme penyaringan sinyal cerdas untuk mengurangi sinyal palsu
  4. Mengoptimalkan parameter rata-rata bergerak untuk meningkatkan akurasi penilaian tren
  5. Memperkenalkan algoritma pembelajaran mesin untuk mengoptimalkan pemilihan parameter
  6. Tambahkan mekanisme kontrol penelusuran kembali

Meringkaskan

Strategi ini membangun sistem perdagangan yang komprehensif dengan menggabungkan osilator stokastik, sistem rata-rata pergerakan, dan manajemen risiko yang cerdas. Desain strategi berfokus pada kepraktisan dan operabilitas, dan cocok untuk pedagang dengan preferensi risiko yang berbeda. Melalui pengoptimalan dan perbaikan berkelanjutan, strategi ini diharapkan dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar.

Kode Sumber Strategi
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © petrusvorenusperegrinus

//██████╗ ███████╗████████╗██████╗ ██╗   ██╗███████╗                             
//██╔══██╗██╔════╝╚══██╔══╝██╔══██╗██║   ██║██╔════╝                             
//██████╔╝█████╗     ██║   ██████╔╝██║   ██║███████╗                             
//██╔═══╝ ██╔══╝     ██║   ██╔══██╗██║   ██║╚════██║                             
//██║     ███████╗   ██║   ██║  ██║╚██████╔╝███████║                             
//╚═╝     ╚══════╝   ╚═╝   ╚═╝  ╚═╝ ╚═════╝ ╚══════╝                             
                                                                               
//██╗   ██╗ ██████╗ ██████╗ ███████╗███╗   ██╗██╗   ██╗███████╗                  
//██║   ██║██╔═══██╗██╔══██╗██╔════╝████╗  ██║██║   ██║██╔════╝                  
//██║   ██║██║   ██║██████╔╝█████╗  ██╔██╗ ██║██║   ██║███████╗                  
//╚██╗ ██╔╝██║   ██║██╔══██╗██╔══╝  ██║╚██╗██║██║   ██║╚════██║                  
// ╚████╔╝ ╚██████╔╝██║  ██║███████╗██║ ╚████║╚██████╔╝███████║                  
//  ╚═══╝   ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝ ╚═════╝ ╚══════╝                  
                                                                               
//██████╗ ███████╗██████╗ ███████╗ ██████╗ ██████╗ ██╗███╗   ██╗██╗   ██╗███████╗
//██╔══██╗██╔════╝██╔══██╗██╔════╝██╔════╝ ██╔══██╗██║████╗  ██║██║   ██║██╔════╝
//██████╔╝█████╗  ██████╔╝█████╗  ██║  ███╗██████╔╝██║██╔██╗ ██║██║   ██║███████╗
//██╔═══╝ ██╔══╝  ██╔══██╗██╔══╝  ██║   ██║██╔══██╗██║██║╚██╗██║██║   ██║╚════██║
//██║     ███████╗██║  ██║███████╗╚██████╔╝██║  ██║██║██║ ╚████║╚██████╔╝███████║
//╚═╝     ╚══════╝╚═╝  ╚═╝╚══════╝ ╚═════╝ ╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝ ╚═════╝ ╚══════╝

//@version=6
strategy("CM Stochastic POP Method 3", shorttitle="CM_Stochastic POP_M3", overlay=true)

// Stochastic Settings
length = input.int(14, "Stochastic Length", minval=1)
smoothK = input.int(5, "Smooth K", minval=1)

// Risk:Reward Settings
use_rr = input.bool(true, "Use Risk:Reward Ratio")
use_sl = input.bool(true, "Use Stop Loss")  // New input for Stop Loss toggle
rr_options = input.string("1:1", "Risk:Reward Ratio", options=["1:1", "1:4", "1:8"])
stop_percent = input.float(1.0, "Stop Loss (%)", minval=0.1, step=0.1)

// Convert selected R:R ratio to number
get_rr_multiplier(rr) =>
    switch rr
        "1:1" => 1.0
        "1:4" => 4.0
        "1:8" => 8.0
        => 1.0  // default case
rr_ratio = get_rr_multiplier(rr_options)

// Fixed Level Settings
upperLine = 93.0  // Fixed sell level
midLine = 40.0    // Buy/Sell level
lowerLine = 15.0  // Fixed buy level

// EMA Settings
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Calculate Stochastic with smoothing
k = ta.sma(ta.stoch(close, high, low, length), smoothK)

// Dynamic color based on K value
kColor = k >= upperLine ? color.red :    // Above 93 -> Red
         k <= lowerLine ? color.green :   // Below 15 -> Green
         k <= midLine ? color.green :     // Below 40 -> Green
         color.blue                       // Between 40-93 -> Blue

// Buy Signals:
longCondition1 = ta.crossover(k, lowerLine)   // Cross above 15
longCondition2 = ta.crossover(k, midLine)     // Cross above 40

// Sell Signals:
shortCondition1 = ta.crossunder(k, upperLine) // Cross below 93
shortCondition2 = ta.crossunder(k, midLine)   // Cross below 40

calc_tp_sl(entry_price, is_long) =>
    sl_distance = entry_price * (stop_percent / 100)
    sl = is_long ? entry_price - sl_distance : entry_price + sl_distance
    tp_distance = sl_distance * rr_ratio
    tp = is_long ? entry_price + tp_distance : entry_price - tp_distance
    [sl, tp]

// Long entries
if (longCondition1)
    if (use_rr)
        [sl, tp] = calc_tp_sl(close, true)
        strategy.entry("Long_15", strategy.long)
        if (use_sl)
            strategy.exit("Exit_15", "Long_15", stop=sl, limit=tp)
        else
            strategy.exit("Exit_15", "Long_15", limit=tp)
    else
        strategy.entry("Long_15", strategy.long)

if (longCondition2)
    if (use_rr)
        [sl, tp] = calc_tp_sl(close, true)
        strategy.entry("Long_40", strategy.long)
        if (use_sl)
            strategy.exit("Exit_40", "Long_40", stop=sl, limit=tp)
        else
            strategy.exit("Exit_40", "Long_40", limit=tp)
    else
        strategy.entry("Long_40", strategy.long)

// Short entries
if (shortCondition1)
    if (use_rr)
        [sl, tp] = calc_tp_sl(close, false)
        strategy.entry("Short_93", strategy.short)
        if (use_sl)
            strategy.exit("Exit_93", "Short_93", stop=sl, limit=tp)
        else
            strategy.exit("Exit_93", "Short_93", limit=tp)
    else
        strategy.entry("Short_93", strategy.short)

if (shortCondition2)
    if (use_rr)
        [sl, tp] = calc_tp_sl(close, false)
        strategy.entry("Short_40", strategy.short)
        if (use_sl)
            strategy.exit("Exit_40", "Short_40", stop=sl, limit=tp)
        else
            strategy.exit("Exit_40", "Short_40", limit=tp)
    else
        strategy.entry("Short_40", strategy.short)

// Plot EMAs
plot(ema20, title="EMA 20", color=color.blue, linewidth=1, force_overlay = true)
plot(ema50, title="EMA 50", color=color.yellow, linewidth=1, force_overlay = true)
plot(ema100, title="EMA 100", color=color.orange, linewidth=1, force_overlay = true)
plot(ema200, title="EMA 200", color=color.purple, linewidth=1, force_overlay = true)

// Plot Stochastic line 
plot(k, title="Stochastic", color=kColor, linewidth=2)

// Plot reference lines 
hline(100, title="100 Line", color=color.white, linestyle=hline.style_solid)
hline(upperLine, title="93 Line", color=color.red, linestyle=hline.style_solid)
hline(midLine, title="40 Line", color=color.green, linestyle=hline.style_dashed)
hline(lowerLine, title="15 Line", color=color.green, linestyle=hline.style_solid)
hline(0, title="0 Line", color=color.white, linestyle=hline.style_solid)