
Strategi ini adalah sistem perdagangan dua kitaran masa berdasarkan petunjuk SuperTrend dan petunjuk RSI. Ia menggabungkan dua kitaran masa 120 minit dan 15 minit dengan petunjuk analisis teknikal, menangkap arah trend pertengahan dengan petunjuk SuperTrend, dan menghasilkan keuntungan dengan petunjuk RSI.
Logik utama strategi ini adalah berdasarkan kepada beberapa elemen utama:
Ini adalah strategi pengesanan trend yang lengkap dan logik yang jelas. Dengan menggabungkan petunjuk teknikal dari pelbagai tempoh masa, anda dapat mengawal risiko sambil memahami trend. Walaupun terdapat ruang untuk pengoptimuman, konsep reka bentuk keseluruhan sesuai dengan prinsip asas perdagangan kuantitatif.
/*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)