Стратегия оптимизации адаптивного стоп-лосса с отслеживанием многопериодного тренда SAR

PSAR AF EP SAR SL TS MM
Дата создания: 2025-02-18 13:48:30 Последнее изменение: 2025-02-18 13:48:30
Копировать: 1 Количество просмотров: 391
1
Подписаться
1617
Подписчики

Стратегия оптимизации адаптивного стоп-лосса с отслеживанием многопериодного тренда SAR

Обзор

Эта стратегия основана на традиционном параболическом показателе SAR (Parabolic Stop and Reverse) и имеет глубокую оптимизацию в сочетании с многоциклическим трендовым суждением и адаптивным механизмом остановки убытков. Стратегия использует динамическую корректировку фактора ускорения (AF), чтобы отслеживать тенденции рынка с помощью постоянного обновления критических точек (EP), чтобы обеспечить точное понимание и контроль риска по отношению к восходящим тенденциям.

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

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

  1. Расчет динамического SAR: три параметра с использованием начального фактора ускорения ((AF), величины прироста и величины максимума, динамическая коррекция значения SAR в зависимости от интенсивности тренда.
  2. Механизм определения тренда: определение направления тренда путем сравнения значения SAR с отношением к ценовому положению, когда SAR пересекает цену, запускается сигнал об обратном тренде.
  3. Логика входа: в случае подтверждения восходящей тенденции и отсутствия позиции, в качестве входного ордера для установления стоп-лосса используется SAR, прогнозируемый на следующий цикл.
  4. Оптимизация сдерживания убытков: использование предельных значений первых 1-2 K-линий в качестве ориентира для корректировки SAR для повышения точности и своевременности сдерживания убытков.

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

  1. Сильная адаптивность: с помощью динамической коррекции ускорителя стратегия может автоматически корректировать параметры в зависимости от интенсивности рыночных колебаний.
  2. Управление рисками: использование прогнозируемой стоимости SAR, чтобы гарантировать предсказуемость и эффективность.
  3. Тренд точность: многочисленные механизмы подтверждения трендов, снижающие риск ложных прорывов.
  4. Строгость логики вычислений: применение механизма сохранения состояния переменных, обеспечивающего стабильность стратегии в исторической реверсии.

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

  1. Риск шокирующего рынка: во время шокирующего рынка на горизонтальном диапазоне может часто возникать ложный сигнал, что приводит к последовательным остановкам. Решение: Возможны фильтры волатильности, снижающие частоту торгов в условиях низкой волатильности.
  2. Влияние скольжения: прогнозируемая остановка SAR может быть подвержена риску скольжения на высоко волатильных рынках. Рекомендуется установить разумную толерантность скольжения и скорректировать параметры в соответствии с особенностями породы.
  3. Задержка обратного тренда: в случае резкого обратного тренда может возникнуть остановка убытков. Реагирующий план: может сочетаться с вспомогательным суждением по кратковременным динамическим показателям, повышая чувствительность к остановке повреждений.

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

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

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

Стратегия обеспечивает эффективное сочетание трендового отслеживания и управления рисками путем глубокой оптимизации классических показателей PSAR. Адаптируемые свойства стратегии и усовершенствованный механизм остановки убытков делают ее более эффективной для применения в боевых условиях. Ожидается дальнейшее повышение стабильности и прибыльности стратегии с помощью предлагаемой оптимизации.

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

//@version=6
strategy("A股抛物线策略(仅做多)- 完全移除SAR绘图", overlay=true)

// 参数设置
start     = input.float(0.02, "起始加速因子")
increment = input.float(0.02, "加速因子增量")
maximum   = input.float(0.2,  "加速因子最大值")

// 定义变量(var保证变量在整个历史数据中保持状态)
var bool   uptrend    = true    // 默认初始化为上升趋势
var float  EP         = na      // 极值点:上升趋势时为最高价,下降趋势时为最低价
var float  SAR        = na      // 当前K线的SAR
var float  AF         = start   // 当前加速因子
var float  nextBarSAR = na      // 下一根K线的预测SAR

//【1】初始化:针对第一根K线(bar_index==0)
if bar_index == 0
    // 使用首根K线收盘价初始化
    SAR        := close
    nextBarSAR := close
    EP         := close
    uptrend    := true

//【2】从第二根K线开始(bar_index>=1)计算SAR
if bar_index >= 1
    // 先将上一根K线计算得到的 nextBarSAR 赋给当前SAR
    SAR := nz(nextBarSAR, SAR)
    
    // 第2根K线(bar_index==1)做初始化,利用上一根K线(bar_index==0)的高低价
    if bar_index == 1
        if close > close[1]
            uptrend := true
            EP      := high
            SAR     := low[1]
        else
            uptrend := false
            EP      := low
            SAR     := high[1]
        AF := start
        nextBarSAR := SAR + AF * (EP - SAR)
    else
        // 记录是否处于趋势反转的首根K线,方便后续判断
        var bool firstTrendBar = false
        firstTrendBar := false
        
        // 检测趋势反转:
        // 在上升趋势中,如果当前SAR超过最低价,则认为发生反转
        if uptrend
            if SAR > low
                firstTrendBar := true
                uptrend     := false
                // 反转时,SAR取上一次极值与当前最高价中的较大者,极值改为当前最低价
                SAR         := math.max(EP, high)
                EP          := low
                AF          := start
            // 注意:原代码在上升趋势中还有个判断 SAR < high 的分支,但通常反转判据只需检测SAR是否穿过低点即可
        else
            // 在下降趋势中,如果当前SAR低于最高价,则认为反转为上升趋势
            if SAR < high
                firstTrendBar := true
                uptrend     := true
                SAR         := math.min(EP, low)
                EP          := high
                AF          := start
        
        // 若非反转情形,则更新极值和加速因子
        if not firstTrendBar
            if uptrend
                if high > EP
                    EP := high
                    AF := math.min(AF + increment, maximum)
            else
                if low < EP
                    EP := low
                    AF := math.min(AF + increment, maximum)
                    
        // 调整SAR,确保其不超过最近1-2根K线的最低价(上升趋势)或最高价(下降趋势)
        if uptrend
            SAR := math.min(SAR, low[1])
            if bar_index > 1
                SAR := math.min(SAR, low[2])
        else
            SAR := math.max(SAR, high[1])
            if bar_index > 1
                SAR := math.max(SAR, high[2])
        
        // 计算下一根K线的预测SAR
        nextBarSAR := SAR + AF * (EP - SAR)
        
        //【3】交易逻辑(仅做多)
        if barstate.isconfirmed
            // 当出现上升趋势且当前无多头仓位时进场做多(以预测的下一根K线SAR为止损触发价)
            if uptrend and strategy.position_size <= 0
                strategy.entry("Long", strategy.long, stop=nextBarSAR, comment="Long Entry")
            // 当趋势转为下降且持有多头时平仓
            if not uptrend and strategy.position_size > 0
                strategy.close("Long", comment="Long Exit")

// 绘图部分完全移除,不再绘制任何与SAR相关的图形