Система оптимизации стратегии Dual Time Cycle Super Trend и RSI

RSI ATR
Дата создания: 2024-11-25 17:27:21 Последнее изменение: 2024-11-25 17:27:21
Копировать: 0 Количество просмотров: 464
1
Подписаться
1617
Подписчики

Система оптимизации стратегии Dual Time Cycle Super Trend и RSI

Обзор

Стратегия представляет собой систему торговли с двумя временными циклами, основанную на индикаторе SuperTrend и индикаторе RSI. Она сочетает в себе два временных цикла - 120-минутный и 15-минутный.

Стратегический принцип

Основная логика стратегии основана на следующих ключевых элементах:

  1. Используется индикатор SuperTrend с 120-минутным циклом в качестве основного инструмента для определения тенденций, который основан на ATR с периодом 14, с коэффициентом 3,42
  2. Торговые сигналы определяются скрещиванием цены с линией SuperTrend, вверх прохождение приводит к множественному сигналу, вниз прохождение - к пустому сигналу
  3. RSI с 15-минутным циклом в качестве вспомогательного инструмента, RSI с циклом 5 для определения перегрева или переохлаждения рынка
  4. Выравнивание позиций сверхглавных позиций при достижении RSI зоны сверхпокупа ((95)), устранение позиций сверхглавных позиций при достижении зоны сверхпродажи ((5))
  5. Установите 30%-ную процентную остановку по отношению к средней цене открытия позиции

Стратегические преимущества

  1. Комбинация многочасовых циклов повышает надежность сигнала и снижает влияние ложных сигналов.
  2. Параметры индикатора SuperTrend оптимизированы умеренно, чтобы обеспечить чувствительность к тренду и избежать частых торгов, вызванных чрезмерной чувствительностью.
  3. RSI имеет очень строгие предельные параметры ((5 и 95)), которые гарантируют, что только в экстремальных ситуациях можно выйти из позиции и избежать преждевременного выхода из нее.
  4. Управление капиталом с использованием фиксированной доли чистой стоимости счетов (<35%) обеспечивает эффективный контроль рисков и одновременно гарантирует доходность
  5. Автоматически ликвидирует обратную позицию перед открытием новой позиции, избегая риска одновременного владения многочисленными пустыми позициями

Стратегический риск

  1. Двойная стратегия временного цикла может иметь запаздывающий эффект на рынке в условиях потрясений, необходимо обратить внимание на контролируемые отступления.
  2. Слишком строгие предельные значения RSI могут привести к тому, что вы упустите возможность получить прибыль.
  3. 30% стоп-пунктов настроены более радикально, возможно, преждевременно прибыли в более волатильных рынках
  4. Стратегия не устанавливает условия для остановки убытков и может понести большие потери в случае внезапного поворота тренда
  5. 35% позиций относительно радикальны и рискованны при резких рыночных колебаниях

Направление оптимизации стратегии

  1. Рекомендуется добавление динамического механизма остановки убытков, возможно рассмотрение возможности остановки убытков на основе ATR
  2. RSI может быть надлежащим образом ослаблен, рекомендуется скорректировать на 10 и 90, чтобы повысить адаптивность стратегии
  3. Можно добавить показатель перехода в качестве вспомогательного подтверждения, чтобы повысить надежность сигнала
  4. Подумайте о том, чтобы динамически корректировать долю позиции в зависимости от рыночных колебаний, используя ATR или индикатор волатильности
  5. Рекомендуется добавление фильтров на интенсивность тренда, таких как индикаторы DMI или ADX, для фильтрации слабых тенденций

Подвести итог

Это целостная, логически ясная стратегия отслеживания тенденций. С помощью комбинации технических показателей различных временных периодов, в то же время обратите внимание на контроль риска при поимке тенденций. Хотя есть некоторые возможности для оптимизации, общая концепция дизайна соответствует основным принципам количественной торговли.

Исходный код стратегии
/*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)