
La stratégie d’inversion de la fourchette est une stratégie de négociation quantitative typique du suivi de la tendance. Elle utilise la ligne 9 et la ligne 14 des deux indicateurs de la moyenne mobile pour construire des signaux d’achat et de vente.
La stratégie est principalement basée sur les signaux de forcage d’or et de forcage mort des deux indicateurs de la moyenne mobile. La ligne de 9 jours représente la tendance à court terme, la ligne de 14 jours représente la tendance à moyen terme, et leur croisement est un indicateur technique efficace pour déterminer le changement de tendance du marché.
En outre, la stratégie introduit une ligne de 50 jours pour filtrer les signaux trompeurs. Les achats ne sont effectués que lorsque le prix est supérieur à la ligne de 50 jours; les ventes ne sont effectuées que lorsque le prix est inférieur à la ligne de 50 jours. La ligne de 50 jours représente la tendance à moyen et long terme et les opérations à court terme ne sont effectuées que si la tendance à moyen et long terme est acceptée.
La logique de base du code est la suivante:
// 买入条件:9日线上穿14日线 且 当前价格高于50日线
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// 卖出条件:9日线下穿14日线 且 当前价格低于50日线
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
Les avantages d’une stratégie de double moyenne mobile sont évidents:
La stratégie de la ligne moyenne mobile double comporte aussi des risques:
Pour optimiser les risques, vous pouvez:
Les stratégies de double équilibre mobile peuvent être optimisées dans les domaines suivants:
La stratégie de la double ligne moyenne mobile est globalement une stratégie rentable et efficace. Elle peut être rentable au fur et à mesure; elle comporte également certains risques et nécessite une amélioration supplémentaire. L’efficacité de la stratégie peut être encore renforcée par l’optimisation des paramètres, la méthode de stop-loss et la combinaison de stratégies.
/*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)