Cet article présente une stratégie de trading quantitative qui combine l'analyse fractale et les modèles de bougies.
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.
Principaux avantages de cette stratégie:
Il y a encore des risques à noter:
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.
Les domaines à améliorer:
Ces améliorations renforceront encore la stabilité et la rentabilité de la stratégie.
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)