Une stratégie d'inversion de tendance basée sur les moyennes mobiles, les tendances de prix et le volume

Auteur:ChaoZhang est là., Date: 2024-01-17 17:48:40 La date est le 17 janvier 2024.
Les étiquettes:

img

Résumé

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é.

Principaux

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.

Les avantages

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é.

Les risques

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.

Améliorations

Les voies d'optimisation possibles pour cette stratégie comprennent:

  1. Ajuster les périodes moyennes mobiles afin d'identifier les tendances optimales à court et à long terme.

  2. Tester différentes méthodes de calcul de support/résistance comme les points pivots.

  3. J'essaie d'autres indicateurs de volume comme le flux monétaire de Chaikin, l'oscillateur de volume.

  4. Incorporer plus de facteurs de confirmation d'inversion comme les schémas de graphique à long terme, les énormes pics de volume, etc.

  5. 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.

Conclusion

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)


Plus de