Stratégie de négociation quantitative basée sur les fractals et les modèles

Auteur:ChaoZhang est là., Date: 2024-02-19 14:32:45 Je vous en prie.
Les étiquettes:

img

Résumé

Cet article présente une stratégie de trading quantitative qui combine l'analyse fractale et les modèles de bougies.

Principe de stratégie

Cette stratégie est basée sur une analyse détaillée de l'action des prix, en utilisant une combinaison d'analyse fractale et de reconnaissance de modèles de bougies pour définir une logique d'entrée et de stop loss claire pour capturer la tendance.

Plus précisément, sa condition d'entrée est la suivante: le prix dépasse le sommet des 2 barres précédentes, et une rupture fractale ou un englouissement haussier ou un modèle de marteau se produit.

Pour la détection de modèles, cette stratégie utilise la théorie fractale couramment utilisée pour identifier les points d'inversion clés, ainsi que des algorithmes pour détecter les 3 modèles d'inversion de chandelier classiques.

Le codage est fait en écriture Pine. Le fractal high/low est identifié lorsque le prix fait un nouveau high/low de 3 bar, et des règles strictes sur les prix d'ouverture/fermeture sont utilisées pour les modèles engulfants.

Les avantages

Principaux avantages de cette stratégie:

  1. Un signal précis combinant fractales et motifs
  2. Logique d'entrée et de stop-loss claire
  3. Les théories matures empêchent le sur-ajustement
  4. Le script Pine permet le backtesting

Les risques

Il y a encore des risques à noter:

  1. Subjectivité dans la détection fractale et de motifs
  2. Les frais d'échange sont les frais d'échange qui sont les frais d'échange les plus élevés.
  3. La taille du stop loss nécessite un ajustement pour les opérations à haute fréquence

Des méthodes telles que les arrêts optimisés, le filtrage des tendances et l'analyse de marche vers l'avant peuvent aider à contrôler les risques ci-dessus.

Améliorations

Les domaines à améliorer:

  1. Paramètre de modèle de chandelier à réglage fin pour la robustesse
  2. Ajoutez le filtre de biais de tendance pour éviter les fouets
  3. Introduire l'apprentissage automatique pour l'optimisation automatique des paramètres

Ces améliorations renforceront encore la stabilité et la rentabilité de la stratégie.

Conclusion

Cet article couvre en détail une stratégie de trading d'action de prix combinant des fractales et des modèles de bougies. Avec une signalisation précise, une mise en œuvre facile et un suivi efficace de la tendance, cette stratégie peut grandement bénéficier aux traders systématiques et aux traders discrétionnaires.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)


Plus de