La stratégie de suivi de la tendance de la moyenne mobile est une stratégie de trading quantitative qui suit les tendances du marché.
Le principe de base de cette stratégie est de juger les tendances du marché en utilisant des moyennes mobiles exponentielles (EMA) avec différents paramètres. La stratégie définit une EMA rapide et une EMA lente. Lorsque l'EMA rapide dépasse la EMA lente, cela indique un renversement de tendance haussière sur le marché. Lorsque l'EMA rapide dépasse la EMA lente, cela indique un renversement de tendance baissière.
Lors des croisements à la hausse, la stratégie ouvrira des positions longues. Lors des croisements à la baisse, la stratégie ouvrira des positions courtes. La stratégie maintiendra sa position jusqu'à ce que le profit ou le stop loss soit déclenché, ou qu'un croisement dans la direction opposée se produise à nouveau.
La stratégie présente les avantages suivants:
La stratégie comporte également certains risques:
Pour atténuer les risques, envisagez de combiner d'autres indicateurs pour déterminer les types de tendance ou de définir des ratios d'arrêt-perte plus larges.
La stratégie peut également être optimisée dans les aspects suivants:
En résumé, la stratégie de suivi de tendance de la moyenne mobile est une stratégie de trading de tendance simple et pratique. Les idées de base de la stratégie sont claires et faciles à mettre en œuvre, et il y a également de la place pour l'optimisation. En ajustant les paramètres, en ajoutant une analyse multi-temporelle, des arrêts dynamiques, etc., la stabilité et la rentabilité de la stratégie peuvent être continuellement améliorées.
/*backtest start: 2024-01-28 00:00:00 end: 2024-02-04 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Zhukov trade', overlay=true, calc_on_every_tick=true, currency=currency.USD) // INPUT: // Options to enter fast and slow Exponential Moving Average (EMA) values emaFast = input.int(title='Fast EMA', defval=10, minval=1, maxval=9999) emaSlow = input.int(title='Slow EMA', defval=20, minval=1, maxval=9999) // Option to select trade directions tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both') // Options that configure the backtest date range startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00')) endDate = input(title='End Date', defval=timestamp('31 Dec 2030 23:59')) // Set take profit and stop loss percentages take_profit_percent = input(1.0, title ="Take Profit Percent") / 100.0 stop_loss_percent = input(1.0, title ="Stop Loss Percent") / 100.0 // CALCULATIONS: // Use the built-in function to calculate two EMA lines fastEMA = ta.ema(close, emaFast) slowEMA = ta.ema(close, emaSlow) emapos = ta.ema(close, 200) // PLOT: // Draw the EMA lines on the chart plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2) plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2) plot(series=emapos, color=color.new(color.red, 0), linewidth=2) // CONDITIONS: // Check if the close time of the current bar falls inside the date range inDateRange = true // Translate input into trading conditions longOK = tradeDirection == 'Long' or tradeDirection == 'Both' shortOK = tradeDirection == 'Short' or tradeDirection == 'Both' // Decide if we should go long or short using the built-in functions longCondition = ta.crossover(fastEMA, slowEMA) and inDateRange shortCondition = ta.crossunder(fastEMA, slowEMA) and inDateRange // ORDERS: // Submit entry (or reverse) orders if longCondition and longOK strategy.entry(id='long', direction=strategy.long) if shortCondition and shortOK strategy.entry(id='short', direction=strategy.short) // Exit orders if strategy.position_size > 0 and longOK strategy.exit(id='exit long', from_entry='long', limit=strategy.position_avg_price * (1 + take_profit_percent), stop=strategy.position_avg_price * (1 - stop_loss_percent)) if strategy.position_size < 0 and shortOK strategy.exit(id='exit short', from_entry='short', limit=strategy.position_avg_price * (1 - take_profit_percent), stop=strategy.position_avg_price * (1 + stop_loss_percent))