
이 전략은 슈퍼트렌드 지표와 RSI 지표에 기반한 이중 시간 주기의 거래 시스템이다. 120분과 15분 두 개의 시간 주기의 기술 분석 지표를 결합하여, 슈퍼트렌드 지표를 통해 중간 트렌드 방향을 캡처하고, RSI 지표를 사용하여 수익을 창출한다. 전략은 자본 관리 장치를 채택하고, 지위를 분배하는 비율을 사용하며, 백분율에 기반한 중지 조건을 설정한다.
이 전략의 핵심 논리는 다음과 같은 몇 가지 핵심 요소에 기반합니다.
이것은 구조가 완전하고, 논리가 명확한 트렌드 추적 전략이다. 다양한 시간 주기에서 기술 지표를 조합하여 트렌드를 파악하면서도 위험 통제에 주의한다. 최적화 할 수있는 공간이 있지만, 전체적인 디자인 아이디어는 정량 거래의 기본 원칙에 부합한다. 거래자는 실장에 사용하기 전에 먼저 역측정을 통해 각 변수를 최적화하고, 자신의 위험 견딜 능력에 따라 포지션 조율을 조정하는 것이 좋습니다.
/*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)