Cette stratégie utilise la croix d'or et la croix de la mort des moyennes mobiles (MA) pour identifier les points tournants des tendances du marché et capitaliser sur les fluctuations de prix à court terme des actions. Elle calcule deux MA avec des périodes de temps différentes, à savoir une MA à courte durée et une MA à plus longue durée. Lorsque la MA à courte durée dépasse la MA à plus longue durée, un signal d'achat est généré. Lorsque la MA à courte durée dépasse la MA à plus longue durée, un signal de vente est généré.
La logique de base de cette stratégie réside dans les relations croisées entre le MA à plus courte période et le MA à plus longue période. Le MA à plus courte période reflète plus rapidement les changements de prix récents, tandis que le MA à plus longue période a de meilleures capacités de réduction du bruit pour décrire les tendances des prix à long terme. Lorsque le MA plus court franchit le sommet du MA plus long, il indique que les prix ont commencé à tendre plus haut récemment et peut signaler un renversement à court terme, déclenchant ainsi un signal d'achat pour capturer la hausse ultérieure. Inversement, lorsque le MA plus court franchit le sommet du MA plus long, il signale la dynamique récente des prix à la baisse et le potentiel d'un renversement à court terme, générant ainsi un signal de vente.
Plus précisément, cette stratégie applique la fonction ta.sma sur les prix de clôture pour calculer deux lignes MA: maShort (9 périodes) et maLong (21 périodes). Elle utilise ensuite les fonctions ta.crossover et ta.crossunder pour déterminer si la plus courte MA a franchi au-dessus ou en dessous de la plus longue MA, afin de produire des signaux d'achat et de vente en conséquence.
Comparée aux systèmes d'AM unique, cette stratégie synthétise la valeur des AM à plus courte et à plus longue durée, ce qui entraîne moins de faux signaux et une plus grande probabilité de rentabilité.
La poursuite mécanique des signaux de croisement MA sans juger des conditions du marché et des caractéristiques des stocks peut entraîner une faible rentabilité ou des coûts de transaction élevés dus à un suréchange.
Par exemple, d'autres indicateurs techniques tels que MACD, KDJ peuvent être utilisés pour valider les signaux de croisement MA et prévenir les ratés. Les paramètres MA peuvent également être ajustés en fonction de différents instruments de trading pour améliorer la stabilité. Pendant ce temps, les niveaux de stop loss doivent être réglés de manière appropriée pour éviter des pertes de taille excessive sur les transactions individuelles. L'application complète de toutes ces techniques d'optimisation peut améliorer considérablement les performances de la stratégie réelle en s'appuyant sur le simple concept de croisement MA.
Cette stratégie conçoit une approche de négociation à court terme simple basée sur le principe de croisement MA. En harmonisant les forces des MA à courte et à longue période, elle prend en compte à la fois les évolutions de prix récentes et les tendances à long terme pour produire des signaux de trading de haute qualité.
/*backtest start: 2023-12-19 00:00:00 end: 2024-01-18 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Intraday MA Crossover Strategy", overlay=true) // Define MA lengths maLengthShort = input.int(9, title="Short MA Length", minval=1) maLengthLong = input.int(21, title="Long MA Length", minval=1) // Calculate MAs maShort = ta.sma(close, maLengthShort) maLong = ta.sma(close, maLengthLong) // Plot MAs on the chart plot(maShort, color=color.blue, title="Short MA") plot(maLong, color=color.red, title="Long MA") // Generate Buy Signal (Golden Cross: Short MA crosses above Long MA) buySignal = ta.crossover(maShort, maLong) strategy.entry("Buy", strategy.long, when=buySignal) // Generate Sell Signal (Death Cross: Short MA crosses below Long MA) sellSignal = ta.crossunder(maShort, maLong) strategy.entry("Sell", strategy.short, when=sellSignal) // Set stop loss and take profit levels stopLossPercent = input.float(1, title="Stop Loss %", minval=0.1, maxval=5) takeProfitPercent = input.float(1, title="Take Profit %", minval=0.1, maxval=5) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100) strategy.exit("Take Profit/Stop Loss", from_entry="Sell", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)