Stratégie de suivi des tendances basée sur le filtre de Kalman


Date de création: 2024-01-25 14:12:26 Dernière modification: 2024-01-25 14:12:26
Copier: 0 Nombre de clics: 1091
1
Suivre
1617
Abonnés

Stratégie de suivi des tendances basée sur le filtre de Kalman

Aperçu

Le cœur de cette stratégie est de traiter la moyenne des prix en utilisant la technique de filtrage de Kármán pour lisser la moyenne en calculant l’angle de coupe de la moyenne après l’aplatissement, générant un signal de transaction lorsque l’angle de coupe dépasse une certaine seuil au cours d’une période donnée. La stratégie vise à suivre les tendances de la ligne moyenne longue et à réduire l’impact du bruit grâce à la technique de filtrage de Kármán, afin d’obtenir un signal de tendance plus clair et plus fiable.

Principe de stratégie

La logique de base de cette stratégie consiste principalement en les étapes suivantes:

  1. calculer une moyenne mobile simple (SMA) du prix à 1 minute comme moyenne brute;

  2. un filtrage de Karmann sur la ligne d’origine et une ligne d’extraction après lissage;

  3. calculer l’angle de coupe de la ligne moyenne après lissage;

  4. Définition de la période paramétrique, la somme des angles de coupe dans la période statistique;

  5. Un signal d’achat est généré lorsque la somme des angles de coupe dans le cycle est supérieure à 360 degrés; un signal de vente est généré lorsque la somme des angles de coupe est inférieure à 360 degrés.

Grâce à cette conception, lorsque les prix tendent à la hausse ou à la baisse, les angles de coupe de la ligne uniforme s’accumulent progressivement, et lorsqu’ils s’accumulent jusqu’à un certain point, ils génèrent un signal de transaction, permettant ainsi de suivre efficacement la tendance de la ligne moyenne longue.

L’onde de Kármán est un algorithme récurrent qui, tout en prédisant l’état actuel, prédit le bruit du processus et mesure les valeurs du bruit, et utilise les valeurs de ce bruit pour corriger les prévisions de l’état précédent, ce qui permet d’obtenir une estimation de l’état plus précise et plus fiable.

Dans cette stratégie, le SMA des prix peut être considéré comme une mesure de l’état, influencé par le bruit du marché. Le filtre de Kalman estimera récursivement la tendance réelle des prix, réduisant considérablement l’effet du bruit, rendant les opérations de la ligne moyenne ultérieures plus fiables et produisant ainsi un signal de transaction plus stable et plus précis.

Avantages stratégiques

Le plus grand avantage de cette stratégie par rapport aux stratégies d’indicateurs telles que les moyennes mobiles simples réside dans la réduction de l’effet de bruit du filtrage de Kalman, ce qui rend les signaux de négociation plus clairs et plus fiables. Les avantages concrets se manifestent principalement dans les aspects suivants:

  1. Réduction des faux signaux. Le filtre de Kármán, en estimant et en éliminant le bruit de manière adaptative, filtre efficacement un grand nombre de faux signaux déclenchés par des fluctuations aléatoires, ce qui rend le signal de transaction généré plus fiable.

  2. Un meilleur suivi des tendances. La forme uniforme après lissage est plus lisse et reflète mieux la tendance des longues lignes de prix, ce qui permet un meilleur suivi des tendances.

  3. Les paramètres réglables incluent la longueur moyenne de la ligne, les paramètres de l’onde de Kármán et les périodes statistiques, permettant une adaptation flexible aux différents environnements de marché.

  4. Le risque est maîtrisé. La stratégie se concentre davantage sur les tendances à long terme plutôt que sur les fluctuations à court terme, ce qui permet d’obtenir un meilleur équilibre entre le risque et le rendement.

  5. L’implémentation est simple et facile à étendre. Les algorithmes de base de cette stratégie sont simples, faciles à mettre en œuvre et à tester, mais offrent également un espace pour l’extension, comme les paramètres d’optimisation automatique des algorithmes d’apprentissage automatique qui peuvent être introduits.

Risque stratégique

La stratégie présente également les principaux risques suivants:

  1. Le risque de renversement de tendance. Cette stratégie est axée sur le suivi de la tendance, et une fois qu’une forte reprise de tendance se produit, des pertes importantes peuvent être causées.

  2. Risque d’optimisation des paramètres: les paramètres mal définis peuvent entraîner une fréquence de transaction ou un retard de signal, ce qui nécessite une optimisation bien testée. L’optimisation automatique peut être combinée à un algorithme d’apprentissage automatique.

  3. Risque d’optimisation excessive. Une optimisation excessive sur les données historiques peut également entraîner une défaillance des paramètres, ce qui nécessite un contrôle de l’efficacité hors échantillon.

  4. La complexité de la mise en œuvre augmente les risques. L’introduction d’algorithmes de filtres de Kalman et de cutouts augmente la complexité du code, et il est nécessaire de s’assurer de la bonne mise en œuvre.

Orientation de l’optimisation de la stratégie

Compte tenu des facteurs de risque susmentionnés, la stratégie peut être optimisée dans les domaines suivants:

  1. Introduction d’un arrêt et d’une gestion des positions. Un arrêt approprié permet de contrôler efficacement le risque de perte individuelle; la gestion dynamique des positions permet également d’ajuster le risque de couverture des positions en fonction des conditions du marché.

  2. Optimisation automatique des paramètres. Grâce à l’algorithme d’optimisation par apprentissage automatique, il est possible d’optimiser automatiquement les paramètres et d’éviter le risque de sur-optimisation.

  3. L’intégration d’autres indicateurs. Il est possible d’intégrer d’autres indicateurs dans la stratégie pour former un ensemble d’indicateurs afin d’améliorer la stabilité de la stratégie.

  4. Augmentation de l’évaluation de l’efficacité. Introduction de plus d’indicateurs d’ajustement au risque, évaluation de l’efficacité et de la stabilité de la stratégie, permettant de tirer des conclusions plus complètes et plus précises.

  5. Étendre plusieurs variétés. Si l’effet est bon, il est possible d’envisager d’étendre à plus de variétés, d’accumuler des échantillons plus riches à moyen et à long terme, et d’optimiser les paramètres entre les variétés.

Résumer

Cette stratégie est généralement une stratégie de suivi de tendance plus simple et plus pratique. Par rapport à la stratégie de moyenne mobile traditionnelle, l’introduction de l’algorithme d’onde de Kalman est sa plus grande innovation et permet également à la stratégie de produire des signaux de négociation plus clairs et plus fiables.

Code source de la stratégie
/*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="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角