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.
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.
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)