Динамическая многопериодная стратегия прорыва тренда центральной оси

RSI PP R1 S1 EMA TF
Дата создания: 2025-03-31 17:27:39 Последнее изменение: 2025-03-31 17:27:39
Копировать: 4 Количество просмотров: 332
2
Подписаться
319
Подписчики

Динамическая многопериодная стратегия прорыва тренда центральной оси Динамическая многопериодная стратегия прорыва тренда центральной оси

Обзор

Эта стратегия представляет собой динамическую стратегию для взлома тренда, основанную на многоциклическом среднециклическом оси и относительно сильном индексе ((RSI)). Эта стратегия направлена на то, чтобы захватить трендовые возможности на финансовых рынках, используя объединение ценовой поддержки и давления на уровне круговой линии с показателем RSI, а также предоставляет тонкий механизм управления позициями и контроля риска.

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

Основные принципы стратегии включают в себя следующие ключевые шаги:

  1. Центробанк рассчитывает цены в течение многих периодов:
  • Вычисление ключевых уровней давления поддержки с использованием цены закрытия, максимума и минимума на первой K-линии на уровне окружности
  • Расчет типовых уровней поддержки S1, S2 и S3 и уровней давления R1, R2 и R3
  • Регулирование чувствительности опорного давления с помощью динамического фактора
  1. Оптимизация динамики RSI:
  • Расчет RSI на 21 цикл
  • Введение скользящих средних индексов (EMA) для сглаживания RSI
  • Построение комбинированного индикатора, объединяющего RSI-первоначальные значения и EMA-сглаживающие значения
  1. Сигналы транзакций генерируются:
  • Многоглазый вход: 0 на комбинированном показателе
  • Выход в многоборье: максимальная цена превышает давление R3
  • Вход в пустой рынок: минимальная цена упала ниже уровня поддержки S3
  • Головоломка: носил 0

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

  1. Многоциклический взгляд: эффективная фильтрация краткосрочного рыночного шума путем введения данных на уровне периферии
  2. Гибкий менеджмент позиций: поэтапный механизм остановки, снижение риска по одной сделке
  3. Конструкция динамического индикатора: в сочетании с RSI и EMA, повышает точность сигналов
  4. Симметричная многопространственная логика торговли: гибкая стратегия для различных рыночных условий
  5. Контролируемые риски: встроенные механизмы остановки убытков и поэтапной остановки

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

  1. Отставание индикаторов: RSI и ценные центры могут иметь проблемы отставания
  2. Чувствительность параметров: эффективность стратегии сильно зависит от выбора параметров
  3. Влияние на стоимость транзакций: частое совершение транзакций может привести к высоким комиссионным
  4. Экстремальная ситуация на рынке: резкие колебания могут привести к неэффективности стратегии

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

  1. Внедрение алгоритмов машинного обучения для оптимизации выбора параметров
  2. Фильтрация для увеличения объема сделок и колебаний
  3. Проверка сигнала в сочетании с другими техническими показателями
  4. Разработка динамических алгоритмов остановки и остановки
  5. Внедрение более сложной модели управления размером позиций

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

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

Исходный код стратегии
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © yuxishejiang

//@version=6
//@version=5
strategy(title="BTC中轴策略优化-V2", overlay=true, pyramiding=1, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.075)

// 核心参数
strat_dir_input = input.string(title="Strategy Direction", defval="long", options=["long", "short"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

// 指标计算
higherTF = input.timeframe("W", "Higher Timeframe")
pc = request.security(syminfo.tickerid, higherTF, close[1], barmerge.gaps_off, barmerge.lookahead_on)
ph = request.security(syminfo.tickerid, higherTF, high[1], barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, higherTF, low[1], barmerge.gaps_off, barmerge.lookahead_on)

PP = (ph + pl + pc) / 3
R1 = PP + (PP - pl)
S1 = PP - (ph - PP)
R2 = PP + (ph - pl)
S2 = PP - (ph - pl)
factor = input.int(2, "Factor")
R3 = ph + factor * (PP - pl)
S3 = pl - 2 * (ph - PP)

length = input.int(21, "RSI Length")
p = close
vrsi = ta.rsi(p, length)
pp_ema = ta.ema(vrsi, length)
d = (vrsi - pp_ema) * 5
cc = (vrsi + d + pp_ema) / 2

// 仓位管理变量
var float entry_qty = na

// 交易执行逻辑
longEntry = ta.crossover(cc, 0)
longExit = ta.crossover(high, R3)  // 使用实时最高价判断

shortEntry = ta.crossunder(low, S3)  // 改为使用S3支撑位
shortExit = ta.crossunder(cc, 0)     // 同步修改为下穿

if (longEntry)
    strategy.entry("Long", strategy.long)
    entry_qty := strategy.position_size

if (strategy.position_size > 0 and longExit)
    strategy.close("Long", comment="5M背离离场")

if (shortEntry)
    strategy.entry("Short", strategy.short)
    entry_qty := strategy.position_size

if (strategy.position_size < 0 and shortExit)
    strategy.close("Short", comment="空头离场")

// 止盈止损模块
per(pcnt) =>
    strategy.position_size != 0 ? math.round(math.abs(pcnt/100 * strategy.position_avg_price / syminfo.mintick)) : na

stoploss = input.float(15, "Stop Loss (%)", minval=0.01)
tp1 = input.float(3, "Take Profit 1 (%)", minval=0.01)
tp2 = input.float(5, "Take Profit 2 (%)", minval=0.01)
tp3 = input.float(7, "Take Profit 3 (%)", minval=0.01)
tp4 = input.float(10, "Take Profit 4 (%)", minval=0.01)

// 分阶段平仓逻辑
if strategy.position_size != 0
    qty_total = math.abs(entry_qty)
    qty1 = math.floor(qty_total * 0.25)
    qty2 = math.floor(qty_total * 0.25)
    qty3 = math.floor(qty_total * 0.25)
    qty4 = qty_total - (qty1 + qty2 + qty3)
    
    if strategy.position_size > 0
        strategy.exit("x1", qty=qty1, profit=per(tp1), loss=per(stoploss))
        strategy.exit("x2", qty=qty2, profit=per(tp2), loss=per(stoploss))
        strategy.exit("x3", qty=qty3, profit=per(tp3), loss=per(stoploss))
        strategy.exit("x4", qty=qty4, profit=per(tp4), loss=per(stoploss))
    else
        strategy.exit("x1", qty=qty1, profit=per(tp1), loss=per(stoploss))
        strategy.exit("x2", qty=qty2, profit=per(tp2), loss=per(stoploss))
        strategy.exit("x3", qty=qty3, profit=per(tp3), loss=per(stoploss))
        strategy.exit("x4", qty=qty4, profit=per(tp4), loss=per(stoploss))

// 可视化部分保持不变
// 多头入场可视化
if (longEntry)
    label.new(bar_index, low, "多头入场", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

// 多头离场可视化
if (strategy.position_size > 0 and longExit)
    label.new(bar_index, high, "多头离场", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

// 空头入场可视化
if (shortEntry)
    label.new(bar_index, high, "空头入场", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

// 空头离场可视化
if (strategy.position_size < 0 and shortExit)
    label.new(bar_index, low, "空头离场", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)