Strategi ini adalah sistem perdagangan jangka masa ganda berdasarkan penunjuk SuperTrend dan RSI. Ia menggabungkan penunjuk analisis teknikal dari jangka masa 120 minit dan 15 minit, menggunakan SuperTrend untuk menangkap arah trend jangka menengah sambil menggunakan RSI untuk mengambil keuntungan. Strategi ini melaksanakan ukuran kedudukan melalui peruntukan peratusan dan termasuk syarat mengambil keuntungan berasaskan peratusan.
Logik teras dibina di atas beberapa elemen utama:
Ini adalah strategi trend yang terstruktur dengan logik yang jelas. Ia menggabungkan indikator teknikal jangka masa yang berbeza untuk menangkap trend sambil mengekalkan kawalan risiko. Walaupun terdapat ruang untuk pengoptimuman, reka bentuk keseluruhan sejajar dengan prinsip perdagangan kuantitatif. Pedagang harus menguji dan mengoptimumkan parameter sebelum perdagangan langsung dan menyesuaikan saiz kedudukan mengikut toleransi risiko mereka.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h 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/ // © felipemiransan //@version=5 strategy("Supertrend Strategy", overlay=true) // Function for Supertrend supertrend(_factor, _atrPeriod) => [out, _] = ta.supertrend(_factor, _atrPeriod) out // Supertrend Settings factor = input.float(3.42, title="Supertrend Factor") atrPeriod = input.int(14, title="ATR Period") tf2 = input.timeframe("120", title="Supertrend Timeframe") // RSI Settings rsi_tf = input.timeframe("15", title="RSI Timeframe") rsiLength = input.int(5, title="RSI Length") rsiUpper = input.int(95, title="RSI Upper Limit") rsiLower = input.int(5, title="RSI Lower Limit") // RSI Timeframe rsi_tf_value = request.security(syminfo.tickerid, rsi_tf, ta.rsi(close, rsiLength), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off) // Supertrend Timeframe supertrend_tf2 = request.security(syminfo.tickerid, tf2, supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off, gaps=barmerge.gaps_off) // Take Profit Settings (Percentage in relation to the average price) takeProfitPercent = input.float(30, title="Take Profit", step=0.1) / 100 // Entry conditions based on price crossover with Supertrend Timeframe longCondition = ta.crossover(close, supertrend_tf2) and barstate.isconfirmed shortCondition = ta.crossunder(close, supertrend_tf2) and barstate.isconfirmed // Execution of reversal orders with closing of previous position if (longCondition) // Close a short position before opening a long position if (strategy.position_size < 0) strategy.close("Short", comment="Close Short for Long Entry") strategy.entry("Long", strategy.long) if (shortCondition) // Close long position before opening short position if (strategy.position_size > 0) strategy.close("Long", comment="Close Long for Short Entry") strategy.entry("Short", strategy.short) // Calculate take profit levels relative to the average entry price if (strategy.position_size > 0) takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent) strategy.exit("Take Profit Long", "Long", limit=takeProfitLong) if (strategy.position_size > 0 and (rsi_tf_value >= rsiUpper)) strategy.close("Long", comment="RSI Take Profit Long") if (strategy.position_size < 0) takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent) strategy.exit("Take Profit Short", "Short", limit=takeProfitShort) if (strategy.position_size < 0 and (rsi_tf_value <= rsiLower)) strategy.close("Short", comment="RSI Take Profit Short") // Plot Supertrend timeframe with commit check to avoid repainting plot(barstate.isconfirmed ? supertrend_tf2 : na, color=color.blue, title="Supertrend Timeframe (120 min)", linewidth=1) // Plot RSI for visualization plot(rsi_tf_value, "RSI", color=color.purple) hline(rsiUpper, "RSI Upper", color=color.red) hline(rsiLower, "RSI Lower", color=color.green)