Stratégie quantitative de suivi de tendance de retracement de Fibonacci dynamique

FIBONACCI RETRACEMENT TA RSI MA
Date de création: 2025-05-26 16:12:41 Dernière modification: 2025-05-26 16:12:41
Copier: 0 Nombre de clics: 309
2
Suivre
319
Abonnés

Stratégie quantitative de suivi de tendance de retracement de Fibonacci dynamique Stratégie quantitative de suivi de tendance de retracement de Fibonacci dynamique

Aperçu

La stratégie quantifie le suivi des tendances des retraits de Fibonacci dynamiques. C’est un système de négociation d’analyse technique basé sur les niveaux de retraits de Fibonacci, spécialement conçu pour identifier les signaux d’achat et de vente potentiels dans un marché en tendance. La stratégie calcule les niveaux de retraits de Fibonacci entre les hauts et les bas des prix (23,6%, 38,2%, 50% et 61,8%), en utilisant ces niveaux comme zones de soutien et de résistance potentielles, qui génèrent des signaux de négociation lorsque les prix interagissent avec ces niveaux critiques.

Principe de stratégie

Le principe de fonctionnement de la stratégie est basé sur l’application des nombres de Fibonacci, une relation mathématique largement utilisée dans les marchés financiers. Les étapes de mise en œuvre sont les suivantes:

  1. L’analyse de rétrocession: la stratégie identifie d’abord le prix le plus élevé et le prix le plus bas dans le cycle de rétrocession défini par l’utilisateur (default 144 cycles) comme base pour le calcul du niveau de rétrocession de Fibonacci.

  2. Choix de direction: Selon la direction de Fibonacci choisie par l’utilisateur ((“de haut en bas” ou “de bas en haut”), la stratégie utilise une méthode de calcul différente. Si vous choisissez “de haut en bas”, le point le plus élevé est placé au niveau de 0% et le point le plus bas est placé au niveau de 100%; si vous choisissez “de bas en haut”, c’est le contraire.

  3. Calcul des niveaux: sur la base des hauts et des bas identifiés et de la direction choisie, la stratégie calcule quatre niveaux de rétractation Fibonacci clés: 23,6%, 38,2%, 50% et 61,8%.

  4. Génération du signal:

    • Signal d’achat: déclenché lorsque le prix dépasse le niveau de Fibonacci choisi par l’utilisateur (default 61,8%) et que le prix de clôture est supérieur à ce niveau.
    • Signal de vente: déclenché lorsque le prix franchit le niveau Fibonacci choisi par l’utilisateur (default 38.2%) et que le prix de clôture est inférieur à ce niveau.
  5. Gestion des risques: la stratégie met automatiquement en place un stop et un stop loss lors du déclenchement du signal de trading, le stop par défaut est de 24 points, le stop loss est de 4 points, le prix est converti par syminfo.mintick multiplié par 10.

  6. Visualisation: La stratégie permet de tracer sur un graphique tous les niveaux de Fibonacci, les hauts et les bas, ainsi que les signaux d’achat et de vente, pour une aide visuelle et intuitive à l’analyse.

Avantages stratégiques

  1. Adaptabilité: La stratégie permet aux utilisateurs de choisir la direction de Fibonacci en fonction des tendances actuelles du marché, et peut être appliquée efficacement à la fois en hausse et en baisse, ce qui augmente la flexibilité et l’adaptabilité de la stratégie.

  2. Les paramètres sont personnalisables: l’utilisateur peut personnaliser les paramètres d’entrée, de retour, de stop et de stop loss en fonction de son style de trading et de ses préférences en matière de risque, ce qui améliore la personnalisation de la stratégie.

  3. Une base technique solide: la stratégie est basée sur la théorie bien connue du retrait de Fibonacci, qui a une base théorique solide et une validation pratique dans le domaine de l’analyse technique, renforçant la fiabilité de la stratégie.

  4. Aide à la clarté visuelle: en affichant visuellement les niveaux de Fibonacci, les hauts et les bas et les signaux de négociation sur le graphique, les traders peuvent mieux comprendre la structure du marché et la logique de la stratégie, aidant ainsi le processus de décision.

  5. Gestion intégrée des risques: un mécanisme d’arrêt et de perte intégré à la stratégie, qui définit automatiquement les paramètres de risque pour chaque transaction, contribue à maintenir des règles de gestion des risques cohérentes et à protéger la sécurité des fonds.

  6. Calcul dynamique en temps réel: la stratégie met à jour les niveaux de Fibonacci en permanence, assurant que le calcul est toujours basé sur les hauts et les bas les plus récents, ce qui permet à l’analyse de rester toujours pertinente aux conditions actuelles du marché.

Risque stratégique

  1. Sensitivité des cycles de retours: la stratégie repose sur les cycles de retours pour déterminer les hauts et les bas, et des cycles de retours différents peuvent entraîner des résultats significativement différents. Des cycles trop courts peuvent entraîner trop de signaux de bruit, tandis que des cycles trop longs peuvent manquer d’importants points de basculement du marché.

  2. Faux signaux dans les marchés en tremblement de terre: dans les marchés en cours de marché ou en tremblement de terre, les prix peuvent fréquemment franchir les niveaux de Fibonacci, générant un excès de signaux de négociation, augmentant les coûts de négociation et pouvant entraîner des pertes continues. Solution: envisager d’ajouter des conditions de filtrage supplémentaires, telles que des indicateurs de confirmation de tendance (comme les moyennes mobiles ou l’ADX) pour réduire les faux signaux.

  3. Limitations de l’arrêt-stop à points fixes: la stratégie utilise des points fixes comme arrêt-stop, ce qui peut ne pas être adapté à toutes les conditions du marché, en particulier lorsque la volatilité change. Solution: envisagez d’utiliser un arrêt-stop dynamique basé sur l’ATR (la moyenne de la portée réelle) pour s’adapter à la volatilité du marché actuel.

  4. La dépendance à un seul indicateur: la prise de décision de négociation en se basant uniquement sur les retraits de Fibonacci, sans tenir compte d’autres facteurs et indicateurs importants du marché, peut entraîner une mauvaise qualité du signal. La solution: combiner la stratégie avec d’autres indicateurs techniques ou l’analyse du comportement des prix pour construire un système de confirmation multiple.

  5. Délai d’identification des changements de tendance: la stratégie peut être plus lente à réagir aux changements de tendance, car elle est basée sur des niveaux de calcul des hauts et des bas du passé. Méthode de résolution: réduire les cycles de retour en arrière ou augmenter les mécanismes d’alerte précoce des changements de tendance, tels que les indicateurs de dynamique.

Orientation de l’optimisation de la stratégie

  1. L’intégration de l’analyse de plusieurs périodes: si la stratégie actuelle ne fonctionne que sur une seule période, il est possible d’envisager l’intégration de l’analyse de plusieurs périodes, par exemple, en confirmant la direction de la tendance sur une période plus longue, puis en exécutant le signal d’entrée sur une période plus courte, ce qui améliore la stabilité de la stratégie.

  2. Introduction de la gestion dynamique des risques: le remplacement des points fixes de stop loss par des paramètres dynamiques basés sur l’ATR permet à la gestion des risques de s’adapter à la volatilité du marché. Raison: L’ATR peut mesurer la volatilité du marché, élargir automatiquement la portée des arrêts en cas de forte volatilité et les réduire en cas de faible volatilité, ce qui est plus conforme à la réalité du marché.

  3. Ajout d’une confirmation de volume: ajout d’une analyse de volume au moment de la génération du signal, afin de s’assurer que les ruptures de prix sont suffisamment soutenues par le volume de transactions. Raison: les ruptures soutenues par le volume de transactions sont plus fiables et réduisent les pertes causées par les fausses ruptures.

  4. L’adaptation au calcul de Fibonacci: non seulement basée sur des cycles de retours fixes, mais en ajustant automatiquement les cycles de retours en fonction de la volatilité du marché, en utilisant des cycles plus longs en cas de forte volatilité et plus courts en cas de faible volatilité.

  5. Ajout d’un classifiant de l’état du marché: ajout de fonctionnalités permettant d’identifier l’état actuel du marché (trend, convergence ou transition) dans la stratégie. Différentes règles de négociation sont utilisées en fonction des différentes conditions du marché.

  6. Optimiser le timing de l’entrée: sur la base actuelle, on peut ajouter des schémas de couverture ou des analyses de comportement des prix pour trouver un timing d’entrée plus précis à proximité des niveaux de Fibonacci.

Résumer

La stratégie de suivi quantitatif des tendances des retraits Fibonacci dynamiques est une méthode de négociation systématisée basée sur la théorie classique de l’analyse technique, qui fournit aux traders un cadre de gestion des signaux d’entrée et des risques objectif en identifiant le support et la résistance des niveaux de retraits Fibonacci. Les principaux avantages de la stratégie résident dans son adaptabilité et sa personnalisation, permettant aux traders d’ajuster les paramètres en fonction des différentes conditions du marché.

Code source de la stratégie
/*backtest
start: 2025-05-18 00:00:00
end: 2025-05-19 16:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("简单斐波那契回撤策略", overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// 输入回看周期以识别高点和低点
lookback = input.int(144, title="回看周期", minval=10)

// 输入选择斐波那契计算方向
fib_direction = input.string(title="斐波那契方向", defval="从上到下", options=["从上到下", "从下到上"])

// 输入斐波那契水平
fib_level_236 = input.float(0.236, title="斐波那契 23.6% 水平")
fib_level_382 = input.float(0.382, title="斐波那契 38.2% 水平")
fib_level_50 = input.float(0.5, title="斐波那契 50% 水平")
fib_level_618 = input.float(0.618, title="斐波那契 61.8% 水平")

// 输入选择买入和卖出信号的水平
buy_entry_level = input.string(title="买入入场水平", defval="斐波那契 61.8%", options=["斐波那契 23.6%", "斐波那契 38.2%", "斐波那契 50%", "斐波那契 61.8%"])
sell_entry_level = input.string(title="卖出入场水平", defval="斐波那契 38.2%", options=["斐波那契 23.6%", "斐波那契 38.2%", "斐波那契 50%", "斐波那契 61.8%"])

// 输入止盈和止损(以点数为单位)
take_profit_pips = input.int(24, title="止盈(点数)")
stop_loss_pips = input.int(4, title="止损(点数)")

// 识别回看周期内的高点和低点
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)

// 根据选择的方向计算斐波那契水平
var float fib_0 = na
var float fib_100 = na
var float fib_236 = na
var float fib_382 = na
var float fib_50 = na
var float fib_618 = na

if fib_direction == "从上到下"
    fib_0 := highestHigh
    fib_100 := lowestLow
    fib_236 := highestHigh - (highestHigh - lowestLow) * fib_level_236
    fib_382 := highestHigh - (highestHigh - lowestLow) * fib_level_382
    fib_50 := highestHigh - (highestHigh - lowestLow) * fib_level_50
    fib_618 := highestHigh - (highestHigh - lowestLow) * fib_level_618
else
    fib_0 := lowestLow
    fib_100 := highestHigh
    fib_236 := lowestLow + (highestHigh - lowestLow) * fib_level_236
    fib_382 := lowestLow + (highestHigh - lowestLow) * fib_level_382
    fib_50 := lowestLow + (highestHigh - lowestLow) * fib_level_50
    fib_618 := lowestLow + (highestHigh - lowestLow) * fib_level_618

// 根据用户输入确定买入和卖出信号的水平
var float buy_fib_level = na
var float sell_fib_level = na

if buy_entry_level == "斐波那契 23.6%"
    buy_fib_level := fib_236
if buy_entry_level == "斐波那契 38.2%"
    buy_fib_level := fib_382
if buy_entry_level == "斐波那契 50%"
    buy_fib_level := fib_50
if buy_entry_level == "斐波那契 61.8%"
    buy_fib_level := fib_618

if sell_entry_level == "斐波那契 23.6%"
    sell_fib_level := fib_236
if sell_entry_level == "斐波那契 38.2%"
    sell_fib_level := fib_382
if sell_entry_level == "斐波那契 50%"
    sell_fib_level := fib_50
if sell_entry_level == "斐波那契 61.8%"
    sell_fib_level := fib_618

// 将点数转换为价格单位(假设1点 = 0.0001,适用于如EURUSD的货币对)
pip_value = syminfo.mintick * 10
take_profit = take_profit_pips * pip_value
stop_loss = stop_loss_pips * pip_value

// 交易信号
var bool longSignal = na
var bool shortSignal = na

if fib_direction == "从上到下"
    longSignal := ta.crossover(close, buy_fib_level) and close > buy_fib_level
    shortSignal := ta.crossunder(close, sell_fib_level) and close < sell_fib_level
else
    longSignal := ta.crossover(close, buy_fib_level) and close > buy_fib_level
    shortSignal := ta.crossunder(close, sell_fib_level) and close < sell_fib_level

// 根据信号执行交易,设置止盈和止损
if (longSignal)
    strategy.entry("多头", strategy.long, comment="买入")
    strategy.exit("止盈/止损", "多头", limit=close + take_profit, stop=close - stop_loss)

if (shortSignal)
    strategy.entry("空头", strategy.short, comment="卖出")
    strategy.exit("止盈/止损", "空头", limit=close - take_profit, stop=close + stop_loss)

// 绘制斐波那契水平
plot(fib_0, title="斐波那契 0%", color=color.blue, linewidth=1, style=plot.style_line)
plot(fib_236, title="斐波那契 23.6%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_382, title="斐波那契 38.2%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_50, title="斐波那契 50%", color=color.red, linewidth=1, style=plot.style_line)
plot(fib_618, title="斐波那契 61.8%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_100, title="斐波那契 100%", color=color.blue, linewidth=1, style=plot.style_line)

// 为斐波那契水平创建带有白色文本的标签
var label fibLabel0 = na
var label fibLabel236 = na
var label fibLabel382 = na
var label fibLabel50 = na
var label fibLabel618 = na
var label fibLabel100 = na

if (na(fibLabel0))
    fibLabel0 := label.new(bar_index, fib_0, text="斐波那契 0%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel236 := label.new(bar_index, fib_236, text="斐波那契 23.6%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel382 := label.new(bar_index, fib_382, text="斐波那契 38.2%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel50 := label.new(bar_index, fib_50, text="斐波那契 50%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel618 := label.new(bar_index, fib_618, text="斐波那契 61.8%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel100 := label.new(bar_index, fib_100, text="斐波那契 100%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
else
    label.set_xy(fibLabel0, bar_index, fib_0)
    label.set_xy(fibLabel236, bar_index, fib_236)
    label.set_xy(fibLabel382, bar_index, fib_382)
    label.set_xy(fibLabel50, bar_index, fib_50)
    label.set_xy(fibLabel618, bar_index, fib_618)
    label.set_xy(fibLabel100, bar_index, fib_100)

// 绘制信号
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, title="买入信号", text="买入")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="卖出信号", text="卖出")

// 绘制最高点和最低点
plot(highestHigh, title="最高点", color=color.purple, linewidth=2, offset=-lookback)
plot(lowestLow, title="最低点", color=color.purple, linewidth=2, offset=-lookback)