
La stratégie de rupture de la fenêtre de réversion (Reversal Momentum Breakout Strategy) est une stratégie de négociation quantitative qui utilise les retournements de prix et les indicateurs de dynamique pour générer des signaux de négociation. La stratégie est basée sur la théorie de la primauté de la dynamique.
La stratégie consiste à déterminer si le marché se trouve à un point de basculement critique en calculant les prix les plus élevés et les plus bas d’une période donnée (par exemple, 20 jours). La logique est la suivante:
Calculer le prix le plus élevé (window_high) et le prix le plus bas (window_low) des 20 derniers jours.
Si le sommet de la ligne K actuelle est supérieur au sommet des 20 derniers jours (c’est-à-dire qu’un nouveau sommet apparaît), on entre dans la période de suivi de l’inversion du sommet, le compteur étant placé à 5 jours.
Si le sommet n’a pas créé de nouveau sommet, le compteur quotidien est diminué de 1 ≠ 1. Lorsque le compteur est réduit à 0, la période de surveillance de l’inversion du sommet est terminée ≠ 2.
La logique est similaire pour le prix le plus bas, si un nouveau bas se produit, on entre dans la période de surveillance de l’inversion du bas.
Au cours de la période de surveillance du renversement, effectuez des opérations d’excédent ou de reprise. Si un signal de renversement se produit à proximité du point critique de renversement, une situation plus importante peut être capturée.
Cette stratégie permet de définir une heure de début de transaction et d’éviter de générer des signaux de transaction dans les données historiques.
Les principaux avantages d’une stratégie de déverrouillage par rotation sont les suivants:
Capture des occasions de revers, adaptées à des situations de revers. Après une hausse ou une baisse continue du marché, il y a souvent un certain degré de revers. Cette stratégie peut capturer ces points de revers.
La dynamique précède et est plus sensible. En calculant les prix les plus élevés et les plus bas d’un certain cycle, il est possible de juger de manière plus sensible la tendance et le moment de la reprise des prix.
Réglez une période de surveillance de retour en arrière pour éviter les faux signaux. Les signaux ne sont émis qu’à proximité du point critique de retour en arrière et peuvent filtrer une partie du bruit.
Il est permis d’effectuer plusieurs opérations de blanchiment.
Les règles sont relativement simples et faciles à mettre en œuvre. La stratégie repose principalement sur des indicateurs de prix et de dynamisme simples, faciles à traduire en une implémentation de code.
Les stratégies de rupture de vitesses réversibles présentent également les principaux risques suivants:
La prédiction inverse n’est pas admissible. La stratégie est perdante si le marché reste directionnel.
Il n’est pas possible de prendre en compte l’ensemble de la tendance du marché. Une reprise du cours d’une action ne signifie pas nécessairement une reprise du marché, elle doit être combinée à une analyse du marché.
Les retraits peuvent être plus importants. Lorsque l’inversion ne se produit pas, NetDevice peut être élargi.
Risque d’adaptation des données. Les stratégies peuvent s’appuyer trop sur les données historiques et être moins efficaces dans le monde réel que dans la rétroanalyse.
Les paramètres sont sensibles. Les paramètres tels que la période de la fenêtre et le compte à rebours peuvent affecter la stabilité de la stratégie.
Les solutions pour faire face au risque comprennent: optimiser les stratégies de stop loss, prendre en compte les facteurs de risque, ajuster les combinaisons de paramètres pour les tests de stabilité, etc.
Les principaux axes d’optimisation de la stratégie sont les suivants:
Combiner les indicateurs du gros panier avec les indicateurs du gros panier plus fort et plus faible, éviter les retournements dans des conditions défavorables pour le gros panier.
Les critères de sélection multifonctionnelle sont les suivants: la bonne situation financière, les conditions fondamentales favorables et les actions surévaluées.
Optimiser les combinaisons de paramètres. Ajuster la période de la fenêtre, inverser les paramètres du compteur et rechercher les combinaisons de paramètres optimales.
Ajout de stratégies de stop-loss, telles que le stop-trace, le stop-amplitude, etc., pour contrôler le maximum de rétractation.
Augmentation de l’apprentissage automatique. Utilisation de modèles d’intelligence artificielle pour prédire la probabilité d’un renversement des prix et améliorer la précision du signal.
La stratégie de rupture de la fenêtre de rétrogradation cherche des opportunités de rétrogradation en suivant les prix et les indicateurs de dynamique. Elle est sensible et peut identifier les tendances et les moments de rétrogradation. Mais il existe également un certain degré de risque qui nécessite une optimisation et un contrôle appropriés des risques.
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
window = input.int(20, title="New Highs and Lows Window", minval=1)
decay = input.int(5, title="Decay", minval=1)
startDate = input(timestamp("1 Jan 2023"), title = "Start Date")
allowShort = input.bool(false, title = "Allow shorting")
var int highDecayCounter = 0
var bool isHighPeriod = false
var int lowDecayCounter = 0
var bool isLowPeriod = false
inTradeWindow = true
window_high = ta.highest(close, window)
window_low = ta.lowest(low, window)
// Logic for Highs
if window_high > ta.highest(close, window)[1]
highDecayCounter := decay
isHighPeriod := true
else
if highDecayCounter > 0
highDecayCounter := highDecayCounter - 1
else
isHighPeriod := false
// Logic for Lows
if window_low < ta.lowest(low, window)[1]
lowDecayCounter := decay
isLowPeriod := true
else
if lowDecayCounter > 0
lowDecayCounter := lowDecayCounter - 1
else
isLowPeriod := false
// Strategy Execution
if inTradeWindow
if isHighPeriod and highDecayCounter == decay
strategy.entry("Long", strategy.long)
if isHighPeriod and highDecayCounter == 0
strategy.close("Long")
if isLowPeriod and lowDecayCounter == decay and allowShort
strategy.entry("Short", strategy.short)
if isLowPeriod and lowDecayCounter == 0 and allowShort
strategy.close("Short")
// Plotting
plot(window_high, color=color.green)
plot(window_low, color=color.red)