Стратегия отслеживания трендов на основе фильтра Калмана

Автор:Чао Чжан, Дата: 2024-01-25 14:12:26
Тэги:

img

Обзор

Принцип стратегии

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

  1. Вычислять простую скользящую среднюю (SMA) 1-минутной цены как исходную скользящую среднюю;

  2. Kalman фильтрует исходную скользящую среднюю величину, чтобы получить сглаженную скользящую среднюю величину;

  3. Вычислить угол касания сглаженной скользящей средней;

  4. Определить период параметра и статистически суммировать углы касания в пределах периода;

  5. Сгенерировать сигнал покупки, когда сумма касательных углов в пределах периода больше 360 градусов; генерировать сигнал продажи, когда меньше -360 градусов.

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

В этой стратегии SMA цены можно рассматривать как измерение состояния. Задействованный рыночным шумом, фильтр Калмана рекурсивно оценивает истинную тенденцию цен, значительно уменьшает влияние шума, делает последующий расчет скользящей средней более надежным и, таким образом, производит более стабильные и точные торговые сигналы.

Анализ преимуществ

По сравнению с простыми скользящими средними и другими стратегиями технических индикаторов, наибольшее преимущество этой стратегии заключается в том, что она использует фильтр Калмана для уменьшения воздействия шума, делая торговые сигналы более ясными и надежными.

  1. Фильтрация Калмана эффективно отфильтровывает множество ложных сигналов, вызванных случайными колебаниями, адаптивно оценивая и устраняя шум, делая генерируемые торговые сигналы более надежными.

  2. Гибкие регулируемые параметры: регулируемые параметры включают длину скользящей средней, параметры фильтра Калмана и статистический цикл, которые могут гибко адаптироваться к различным условиям рынка.

  3. Контролируемый риск. Эта стратегия больше фокусируется на среднесрочных и долгосрочных тенденциях, а не на краткосрочных колебаниях, достигая хорошего баланса риска и прибыли.

Анализ рисков

К основным рискам этой стратегии также относятся:

  1. Риск оптимизации параметров. Ненадлежащие параметры могут привести к частой торговле или задержке сигнала. Это требует достаточного тестирования и оптимизации. Он может быть объединен с алгоритмами машинного обучения для автоматической оптимизации.

  2. Риск чрезмерной оптимизации. Чрезмерная оптимизация исторических данных также может привести к неэффективным параметрам. Должна быть контролирована валидность вне выборки.

  3. Увеличение риска сложности. Внедрение алгоритмов фильтра Калмана и углового касания увеличивает сложность кода. Необходимо обеспечить правильную реализацию.

Руководство по оптимизации

Учитывая вышеуказанные риски, направления оптимизации этой стратегии включают:

  1. Соответствующий стоп-лосс может эффективно контролировать риск потери одной сделки; динамический размер позиций также может корректировать позиции для хеджирования рисков в соответствии с рыночными условиями.

  2. Автоматическая оптимизация параметров. Алгоритмы оптимизации машинного обучения могут достичь автоматической оптимизации параметров, чтобы избежать рисков чрезмерной оптимизации.

  3. Некоторые другие показатели могут быть интегрированы в стратегию для формирования комбинаций индикаторов для повышения стабильности стратегии.

  4. Увеличить оценку эффективности.Ввести больше рискованных показателей для оценки эффективности и стабильности стратегий для более всеобъемлющего и точного заключения.

  5. Расширение на большее количество продуктов. Если это эффективно, можно рассматривать возможность расширения на большее количество продуктов. В среднесрочной и долгосрочной перспективе он накапливает более богатые образцы и облегчает оптимизацию параметров кросс-продуктов.

Заключение


/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@library=math
strategy("策略360°(测试)", overlay=true)

// 定义1分钟均线
ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数
//plot(ma1, color=color.yellow, title="原始均线")

// 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码
kalman(x, g) => 
    kf = 0.0 
    dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数
    smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数
    velo = 0.0 
    velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数
    kf := smooth + velo 
    kf 

// 定义卡尔曼滤波后的均线
ma2 = kalman(ma1, 0.01) 
plot(ma2, color=color.blue, title="卡尔曼滤波后的均线")

// 定义切线角
angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数

// 定义累加的切线角
cum_angle = 0.0
cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数

// 定义30分钟周期
period = 30 // 您可以根据您的需要修改这个参数

// 定义周期内的切线角总和
sum_angle = 0.0
sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加

// 定义买入和卖出条件
buy = sum_angle > 360// 在这里使用了 math.radians() 函数
sell = sum_angle < -360

// 执行买入和卖出操作
strategy.entry("Long", strategy.long, when=buy)
strategy.close("Short", when=buy)
strategy.entry("Short", strategy.short, when=sell)
strategy.close("Long", when=sell)

// 绘制曲线图
plot(sum_angle, color=color.green, title="周期内的切线角总和")
plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角


Больше