La stratégie d'inversion du croisement de la moyenne mobile double est une stratégie de trading quantitative typique qui suit les tendances. La stratégie utilise les signaux de croisement de la ligne de 9 jours et de la ligne de 14 jours dans l'indicateur de moyenne mobile double pour construire des signaux d'achat et de vente. Elle achète lorsque la ligne de 9 jours traverse la ligne de 14 jours en bas pour former une croix dorée, et vend lorsque la ligne de 9 jours traverse la ligne de 14 jours en haut pour former une croix de mort. Pour filtrer les faux signaux, la stratégie introduit également l'indicateur de ligne de 50 jours pour déterminer si le prix traverse.
Cette stratégie se base principalement sur les signaux de croix dorée et de croix de mort de l'indicateur de moyenne mobile double. Dans les moyennes mobiles doubles, la ligne de 9 jours représente les tendances à court terme, la ligne de 14 jours représente les tendances à moyen terme, et leur croisement est un indicateur technique efficace pour juger des virages dans les tendances du marché. Lorsque la ligne de tendance à court terme traverse la ligne de tendance à moyen terme par le bas pour former une croix dorée, elle indique que la ligne de tendance à court terme se renforce, ce qui est un signal d'achat; lorsqu'elle traverse par le haut pour former une ligne de tendance à mort, elle indique que la ligne de tendance à court terme s'affaiblit, ce qui est un signal de vente.
En outre, la stratégie introduit également la ligne de 50 jours pour filtrer les signaux trompeurs. Elle ne génère un achat que lorsque le prix est au-dessus de la ligne de 50 jours; et ne génère une vente que lorsque le prix est en dessous de la ligne de 50 jours. La ligne de 50 jours représente les tendances à moyen et long terme.
La logique de base est la suivante:
// Buy condition: 9-day line crosses above 14-day line and close price is above 50-day line
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// Sell condition: 9-day line crosses below 14-day line and close price is below 50-day line
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
Les avantages de la double stratégie de moyenne mobile sont évidents:
La stratégie de la double moyenne mobile comporte également certains risques:
Pour faire face aux risques, des optimisations telles que celles ci-dessous peuvent être effectuées:
La double stratégie de moyenne mobile peut être optimisée sous plusieurs aspects:
La stratégie de la moyenne mobile double est généralement une stratégie efficace de génération de bénéfices. Elle peut profiter en suivant les tendances en continu. En même temps, elle comporte certains risques et doit être améliorée. En optimisant les paramètres, les méthodes d'arrêt et les combinaisons de stratégies, les effets de cette stratégie peuvent être encore améliorés.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true) // Define the length for the SMAs sma9Length = input(9, title="SMA 9 Length") sma14Length = input(14, title="SMA 14 Length") sma50Length = input(50, title="SMA 50 Length") // Add input for SMA 50 // Calculate SMAs sma9 = ta.sma(close, sma9Length) sma14 = ta.sma(close, sma14Length) sma50 = ta.sma(close, sma50Length) // Calculate SMA 50 // Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50 buyCondition = ta.crossover(sma9, sma14) and close > sma50 // Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50 sellCondition = ta.crossunder(sma9, sma14) and close < sma50 // Track the time since position was opened var float timeElapsed = na if (buyCondition) timeElapsed := 0 else timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1 // Close the buy position after 5 minutes if (timeElapsed >= 5) strategy.close("Buy") // Track the time since position was opened var float timeElapsedSell = na if (sellCondition) timeElapsedSell := 0 else timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1 // Close the sell position after 5 minutes if (timeElapsedSell >= 5) strategy.close("Sell") // Plot the SMAs on the chart plot(sma9, title="SMA 9", color=color.blue) plot(sma14, title="SMA 14", color=color.red) plot(sma50, title="SMA 50", color=color.green) // Plot SMA 50 on the chart // Strategy entry and exit conditions using if statements if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short)