Sumber dimuat naik... memuat...

Strategi Perdagangan Trend Inteligent Stochastic Berbilang Parameter

Penulis:ChaoZhang, Tarikh: 2025-01-06 16:09:58
Tag:STOCHEMASMARRSLTPPOP

img

Ringkasan

Strategi ini adalah sistem perdagangan pintar berdasarkan Osilator Stochastic. Ia menggabungkan pengenalan trend dinamik, pengesahan isyarat berbilang, dan keupayaan pengurusan risiko pintar untuk mengenal pasti keadaan overbought / oversold pasaran secara automatik dan melaksanakan perdagangan. Strategi ini menggunakan sistem pengekodan warna untuk memaparkan keadaan pasaran secara visual, mengintegrasikan purata bergerak berbilang tempoh (EMA) untuk pengesahan trend, dan menyediakan tetapan stop-loss dan mengambil keuntungan yang fleksibel.

Prinsip Strategi

Inti strategi ini adalah berdasarkan gabungan Oscillator Stochastic dan pelbagai sistem purata bergerak. Isyarat perdagangan dihasilkan apabila nilai K memecahkan tahap overbought / oversold (93/15) atau tahap pertengahan (40). Sistem ini secara visual memaparkan keadaan pasaran melalui perubahan warna (merah menunjukkan penurunan berpotensi, hijau menunjukkan kenaikan berpotensi, biru menunjukkan neutral). Ia juga menggabungkan purata bergerak eksponensial 20, 50, 100, dan 200 tempoh (EMA) untuk pengesahan trend. Strategi ini termasuk sistem pengurusan risiko pintar yang menyokong nisbah risiko-balasan yang berbeza seperti 1:1, 1:4, dan 1:8.

Kelebihan Strategi

  1. Sistem isyarat yang jelas dan intuitif dengan pengekodan warna untuk pengenalan keadaan pasaran yang cepat
  2. Mekanisme pengesahan isyarat berbilang mengurangkan risiko isyarat palsu
  3. Sistem pengurusan risiko yang fleksibel yang menyokong nisbah risiko-balasan yang boleh disesuaikan
  4. Integrasi purata bergerak beberapa tempoh untuk pengesahan trend
  5. Tetapan stop-loss dan mengambil keuntungan automatik mengurangkan risiko operasi manual
  6. Struktur kod yang jelas, mudah dikekalkan dan dioptimumkan

Risiko Strategi

  1. Boleh menjana isyarat perdagangan yang kerap di pasaran pelbagai
  2. Sempadan overbought/oversold yang tetap mungkin tidak sesuai dengan semua keadaan pasaran
  3. Sistem purata bergerak mungkin tertinggal di pasaran yang tidak menentu
  4. Memerlukan tetapan stop-loss yang betul untuk kawalan risiko Penyelesaian termasuk: menambah mekanisme penapisan isyarat, penyesuaian ambang dinamik, mengoptimumkan parameter purata bergerak, pelaksanaan stop-loss yang ketat

Arahan Pengoptimuman Strategi

  1. Memperkenalkan sistem ambang penyesuaian untuk menyesuaikan secara dinamik tahap overbought/oversold berdasarkan turun naik pasaran
  2. Tambah penunjuk jumlah untuk pengesahan isyarat
  3. Membangunkan mekanisme penapisan isyarat pintar untuk mengurangkan isyarat palsu
  4. Mengoptimumkan parameter purata bergerak untuk meningkatkan ketepatan penilaian trend
  5. Memperkenalkan algoritma pembelajaran mesin untuk pengoptimuman parameter
  6. Tambahkan mekanisme kawalan pengeluaran

Ringkasan

Strategi ini membina sistem dagangan yang komprehensif dengan menggabungkan Osilator Stochastic, sistem purata bergerak, dan pengurusan risiko yang pintar. Reka bentuk strategi menekankan kepraktisan dan kebolehoperasian, sesuai untuk peniaga dengan pilihan risiko yang berbeza. Melalui pengoptimuman dan peningkatan yang berterusan, strategi ini berpotensi untuk mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza.


/*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)

Berkaitan

Lebih lanjut