Stratégie de trading quantitative avec modèle de chandelier d'inversion de tendance à double intervalle de temps

MA
Date de création: 2025-01-10 15:47:53 Dernière modification: 2025-01-10 15:47:53
Copier: 1 Nombre de clics: 385
1
Suivre
1617
Abonnés

Stratégie de trading quantitative avec modèle de chandelier d’inversion de tendance à double intervalle de temps

Aperçu

Cette stratégie est un système de trading quantitatif basé sur deux modèles de chandeliers classiques : la ligne du marteau et le pendu. La stratégie consiste à identifier ces modèles d’inversion sur le marché pour prédire les points de retournement potentiels dans l’action des prix. Le système combine plusieurs indicateurs techniques pour confirmer la validité du signal, y compris la relation proportionnelle entre le corps de la ligne K et l’ombre, la direction de la tendance et d’autres facteurs, pour obtenir une capture précise des points de retournement du marché.

Principe de stratégie

La logique principale de la stratégie consiste à identifier deux modèles de chandeliers clés de manière programmatique :

  1. Marteau : apparaît dans une tendance baissière, suggérant un possible retournement à la hausse. Elle se caractérise par un petit corps, une longue ombre inférieure (au moins deux fois la longueur du corps) et une ombre supérieure très courte ou absente.
  2. Le Pendu : apparaît dans une tendance à la hausse, suggérant un possible renversement et un déclin. Les caractéristiques morphologiques sont similaires à celles de la ligne du marteau, mais la position d’apparence et la signification sont opposées.

La stratégie quantifie ces modèles en définissant des paramètres stricts, notamment :

  • Multiplicateur de longueur minimale du corps du chandelier
  • Le rapport entre l’ombre inférieure et la hauteur du chandelier
  • Période de détention

Avantages stratégiques

  1. Identification systématique : identifier avec précision les signaux de retournement du marché grâce à des méthodes programmatiques, évitant la subjectivité du jugement humain.
  2. Les risques sont contrôlables : une période de détention claire est définie pour éviter les risques causés par des détentions excessives.
  3. Visualisation du signal : affichez intuitivement les signaux de trading sur le graphique pour une analyse et une optimisation faciles.
  4. Paramètres flexibles : les paramètres peuvent être ajustés en fonction des différentes conditions du marché pour améliorer l’adaptabilité de la stratégie.

Risque stratégique

  1. Risque de fausse cassure : les modèles de retournement peuvent produire de faux signaux et doivent être confirmés en combinaison avec d’autres indicateurs techniques.
  2. Risque de timing : une période de détention fixe peut ne pas capturer pleinement le potentiel des mouvements de prix.
  3. Dépendance à l’environnement du marché : trop de faux signaux peuvent être générés dans un marché volatil.

Orientation de l’optimisation de la stratégie

  1. Présentation des filtres de tendance : des indicateurs tels que les moyennes mobiles peuvent être ajoutés pour filtrer les tendances et améliorer la qualité du signal.
  2. Période de conservation dynamique : ajustez dynamiquement le temps de conservation en fonction de la volatilité du marché.
  3. Confirmation multi-périodes : introduction d’un mécanisme de confirmation de tendance pour les périodes plus longues.
  4. Optimisation du stop loss : ajoutez un mécanisme de stop loss dynamique pour améliorer les capacités de contrôle des risques.

Résumer

Cette stratégie réalise l’application systématique de la théorie de l’analyse technique classique au moyen de méthodes quantitatives et présente une forte valeur pratique. En optimisant les paramètres et en améliorant les mécanismes de contrôle des risques, la stratégie peut maintenir des performances stables dans différents environnements de marché. La conception modulaire de la stratégie fournit également une bonne base pour l’optimisation ultérieure.

Code source de la stratégie
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//@version=6
strategy("Hammer and Hanging Man Strategy", overlay=true)

// Input parameters
length = input.int(5, title="Minimum Candle Body Length (Multiplier)", minval=1)
shadowRatio = input.float(1, title="Lower Shadow to Candle Height Ratio", minval=1.0)
holdPeriods = input.int(26, title="Hold Periods (Bars)", minval=1)  // Holding period in bars

// Function to calculate the absolute value
absValue(x) =>
    x >= 0 ? x : -x

// Function to check if it is a Hammer
isHammer() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close > open

// Function to check if it is a Hanging Man
isHangingMan() =>
    bodyLength = absValue(close - open)
    candleHeight = high - low
    lowerShadow = math.min(open, close) - low
    upperShadow = high - math.max(open, close)
    smallBody = bodyLength <= candleHeight / length
    longLowerShadow = lowerShadow >= bodyLength * shadowRatio
    shortUpperShadow = upperShadow <= bodyLength
    smallBody and longLowerShadow and shortUpperShadow and close < open

// Detect the candles
hammer = isHammer()
hangingMan = isHangingMan()

// Trading logic: Long on Hammer, Short on Hanging Man
if hammer
    strategy.entry("Long", strategy.long)  // Long entry on Hammer

if hangingMan
    strategy.entry("Short", strategy.short)  // Short entry on Hanging Man

// Exit after X bars
if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Long")

if strategy.position_size < 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= holdPeriods
    strategy.close("Short")

// Visualization of signals
plotshape(hammer, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(hangingMan, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging Man")