Эта стратегия представляет собой двойную торговую систему временных рамок, основанную на индикаторе SuperTrend и RSI. Она сочетает в себе технические индикаторы анализа из 120-минутных и 15-минутных временных рамок, используя SuperTrend для определения среднесрочного направления тренда при использовании 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)