Cette stratégie combine des moyennes mobiles, des modèles de prix et du volume pour identifier les points de renversement de tendance potentiels sur le marché.
L'idée de base de cette stratégie est d'utiliser une combinaison de moyennes mobiles, de modèles d'action des prix et de volume comme signaux pour les revers à venir. Plus précisément, les croix d'or et les croix de mort des moyennes mobiles peuvent indiquer des changements de tendance.
En termes logiques, la stratégie calcule d'abord les moyennes mobiles rapides et lentes. Elle définit ensuite les conditions pour identifier les tendances haussières / baissières. Les niveaux de support et de résistance sont incorporés avec l'expansion du volume comme conditions supplémentaires. Les signaux d'achat sont déclenchés lorsque le MA rapide dépasse le MA lent, un modèle haussier apparaît, la résistance se brise et le volume augmente. Les conditions opposées déclenchent des signaux de vente.
Le plus grand avantage de cette stratégie est l'utilisation d'une combinaison de plusieurs signaux pour confirmer les inverses, ce qui aide à éviter les faux signaux.
En outre, cette stratégie utilise à la fois les concepts de tendance et d'inversion. Les inversions ne sont recherchées qu'après une tendance existante. En d'autres termes, la stratégie ne recherche que des retraits de contre-tendance dans les marchés en tendance. Cela aide à réduire le hasard et augmente la rentabilité.
Le plus grand risque de cette stratégie est l'échec des renversements, où le prix continue de se déplacer contre la direction du commerce après les signaux d'entrée.
Les solutions comprennent l'ajustement des périodes moyennes mobiles pour mieux définir les tendances, l'utilisation de stop-loss plus larges et l'incorporation de plus de facteurs de confirmation avant de négocier des signaux d'inversion.
Les voies d'optimisation possibles pour cette stratégie comprennent:
Ajuster les périodes moyennes mobiles afin d'identifier les tendances optimales à court et à long terme.
Tester différentes méthodes de calcul de support/résistance comme les points pivots.
J'essaie d'autres indicateurs de volume comme le flux monétaire de Chaikin, l'oscillateur de volume.
Incorporer plus de facteurs de confirmation d'inversion comme les schémas de graphique à long terme, les énormes pics de volume, etc.
Utiliser les contrats à terme sur indices boursiers pour vérifier les signaux entre les marchés.
Grâce à des essais rigoureux de combinaisons de paramètres, d'autres améliorations des performances peuvent être obtenues.
Cette stratégie combine soigneusement les moyennes mobiles, l'action des prix et le volume aux inversions commerciales uniquement sur les marchés en tendance.
/*backtest start: 2023-01-10 00:00:00 end: 2024-01-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Profit Table Strategy", overlay=true) // Input parameters fastLength = input(10, title="Fast MA Length") slowLength = input(20, title="Slow MA Length") takeProfitPercent = input(1, title="Take Profit (%)") / 100 stopLossPercent = input(1, title="Stop Loss (%)") / 100 trailingStopPercent = input(1, title="Trailing Stop (%)") / 100 // Price action conditions bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1] bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1] // Support and resistance levels supportLevel = input(100, title="Support Level") resistanceLevel = input(200, title="Resistance Level") // Volume conditions volumeCondition = volume > ta.sma(volume, 20) // Calculate moving averages fastMA = ta.sma(close, fastLength) slowMA = ta.sma(close, slowLength) // Buy condition buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition // Sell condition sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition // Strategy logic strategy.entry("Buy", strategy.long, when=buyCondition) strategy.close("Buy", when=sellCondition) // Calculate take profit, stop loss, and trailing stop levels takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent) stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent) trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent) // Plotting levels on the chart plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level") plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level") plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level") plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level") plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level") // Plotting buy and sell signals on the chart plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar) plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)