Chiến lược này là một hệ thống giao dịch thông minh dựa trên Trình dao động chứng khoán. Nó kết hợp nhận dạng xu hướng năng động, xác nhận nhiều tín hiệu và khả năng quản lý rủi ro thông minh để tự động xác định các điều kiện mua quá mức / bán quá mức thị trường và thực hiện giao dịch. Chiến lược sử dụng hệ thống mã hóa màu để hiển thị trực quan các điều kiện thị trường, tích hợp nhiều trung bình động giai đoạn (EMA) để xác nhận xu hướng và cung cấp cài đặt dừng lỗ và lấy lợi nhuận linh hoạt.
Lõi của chiến lược dựa trên sự kết hợp giữa Trình dao động chứng khoán và nhiều hệ thống trung bình động. Các tín hiệu giao dịch được tạo ra khi giá trị K vượt qua mức mua quá mức / bán quá mức (93/15) hoặc mức trung bình (40). Hệ thống hiển thị trực quan điều kiện thị trường thông qua các thay đổi màu sắc (màu đỏ cho thấy khả năng giảm, màu xanh lá cây cho thấy khả năng tăng, màu xanh dương cho thấy trung tính). Nó cũng kết hợp các đường trung bình chuyển động theo hàm số (EMA) 20, 50, 100, và 200 giai đoạn để xác nhận xu hướng. Chiến lược bao gồm một hệ thống quản lý rủi ro thông minh hỗ trợ các tỷ lệ rủi ro-lợi nhuận khác nhau như 1:1, 1:4 và 1:8.
Chiến lược xây dựng một hệ thống giao dịch toàn diện bằng cách kết hợp Trình dao động chứng khoán, hệ thống trung bình động và quản lý rủi ro thông minh.
/*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)