
Cette article présente une stratégie de trading quantitatif qui combine l’analyse de la forme avec la forme de la courbe. Cette stratégie permet d’automatiser les transactions à faible risque et à haut rendement en détectant les virages importants dans le graphique des prix et les formes de courbe qui représentent des retournements de force.
La stratégie est basée sur une analyse détaillée des mouvements de prix, combinée à l’analyse de la forme et à l’analyse de la courbe, et définit une logique d’entrée et une logique d’arrêt claires, permettant un suivi efficace des tendances.
Sa condition d’entrée est la plus haute qui traverse les deux premières lignes de K et la rupture de l’une des formes de sommet préliminaires ou de la forme de pluri-souffle ou de la forme de bloc. Cette condition combinée permet de confirmer efficacement l’opportunité de hausse. Sa condition d’arrêt est la plus basse qui traverse les deux premières lignes de K. Cette logique d’arrêt garantit une efficacité de l’arrêt en temps opportun.
En ce qui concerne les formes de jugement, la stratégie combine l’utilisation de lignes de classement pour identifier les virages importants et les trois types typiques de formes de piles pour juger du renversement de tendance. Les formes de jugement des virages importants utilisent une théorie de la classification plus large, tandis que les formes telles que les polyèdres, les englouts à ciel ouvert et les piles utilisent des algorithmes plus avancés.
Dans la mise en œuvre concrète, la stratégie est écrite en utilisant le script de pin. La logique de mise en œuvre de la typographie de détection est de classer le sommet lorsque le prix le plus élevé de la ligne K actuelle est égal au prix le plus élevé des 3 lignes K précédentes. Le principe de jugement de la typographie de base est similaire.
Les principaux avantages de cette stratégie sont:
Il y a encore des risques à prendre en compte:
Les risques mentionnés ci-dessus peuvent être maîtrisés par l’optimisation des stratégies de stop loss, l’introduction de filtres de tendance, l’utilisation d’outils quantifiés pour vérifier les paramètres de la stratégie, etc.
La stratégie peut être optimisée dans les domaines suivants:
Ces optimisations permettent d’améliorer encore la stabilité et la rentabilité de la stratégie.
Cet article décrit en détail une stratégie de trading quantitatif basée sur la ligne de tri et la forme de la courbe. Cette stratégie est précise, facile à mettre en œuvre, capte efficacement les tendances des prix et permet d’automatiser les transactions.
/*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)