
Cette stratégie est basée sur des moyennes mobiles. Elle génère des signaux de négociation en calculant des moyennes mobiles simples de différentes périodes et en les comparant. Plus précisément, elle génère des signaux d’achat en traversant les moyennes mobiles à court terme au-dessus des moyennes mobiles à long terme et des signaux de vente en traversant les moyennes mobiles à long terme en dessous des moyennes mobiles à court terme.
La logique de base de cette stratégie est basée sur l’effet de dynamique, c’est-à-dire la continuité de la tendance des prix des actions. Les moyennes mobiles sont capables de refléter efficacement la tendance des changements de prix des actions.
Plus précisément, la stratégie définit une moyenne mobile simple de 13 jours et une moyenne mobile simple de 34 jours. Après avoir calculé les deux moyennes mobiles de clôture quotidienne, la taille de la relation est comparée. Si la ligne 13 traverse la ligne 34, un signal d’achat est généré, indiquant que le prix de l’action est entré dans une tendance à la hausse et une position de tête est établie.
Le plus grand avantage de cette stratégie réside dans sa simplicité et sa facilité d’implémentation. La moyenne mobile est l’un des indicateurs techniques les plus basiques et les plus couramment utilisés.
De plus, les paramètres de la stratégie sont flexibles et peuvent être ajustés en fonction des variétés et des conditions du marché. Par exemple, les paramètres périodiques des moyennes mobiles peuvent être modifiés pour ajuster la sensibilité de la stratégie. Cela offre de la place pour l’optimisation et l’ajustement de la stratégie.
Le plus grand risque de cette stratégie réside dans le fait qu’il peut y avoir plus de faux signaux et de pièges dans les marchés instables. Les moyennes mobiles peuvent produire des croisements fréquents, ce qui entraîne des faux signaux, lorsque les prix sont fortement fluctuants. Il est alors nécessaire d’ajuster les paramètres de cycle des moyennes mobiles pour filtrer certains bruits.
En outre, lorsque la situation se retourne de manière significative, le point de rupture de la stratégie peut être franchi, ce qui entraîne des pertes plus importantes. Cela nécessite l’optimisation de la stratégie d’arrêt des pertes et l’assouplissement approprié du seuil de rupture.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimiser les paramètres cycliques des moyennes mobiles pour trouver la combinaison optimale de paramètres pour différentes variétés et environnements de marché
Ajout de filtres pour d’autres indicateurs techniques, tels que MACD, KD, etc., afin d’éviter de produire des signaux erronés dans des conditions de tremblement
Optimisation et adaptation dynamique des stratégies de stop loss, tout en garantissant le stop loss, en évitant que le stop loss ne soit trop proche et que la probabilité d’être dépassé soit plus élevée
Augmentation des mécanismes de gestion des positions, tels que les apports fixes et les ratios de position, afin de contrôler le risque d’une seule transaction
Cette stratégie est une très classique stratégie de croisement des moyennes mobiles, qui génère des signaux d’achat et de vente en calculant et en comparant les relations des moyennes mobiles à court et à long terme. L’avantage de cette stratégie est qu’elle est simple et facile à comprendre, avec des paramètres flexibles et adaptés à l’apprentissage des débutants; l’inconvénient est que le signal peut ne pas être assez stable et être facilement piégé dans un marché en mouvement.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// TODO: update strategy name
strategy("{STRATEGY NAME}", overlay=true)
// === TA LOGIC ===
//
//
// TODO: PUT YOUR TA LOGIC HERE
LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34))
SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21))
// === INPUT BACKTEST DATE RANGE ===
enableShorts = input(false, title="Enable short entries?")
FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2018, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// === STRATEGY BUY / SELL ENTRIES ===
// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy() => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN
if buy()
strategy.entry("Long", strategy.long, comment="Long")
if sell()
if (enableShorts)
strategy.entry("Short", strategy.short, comment="Short")
else
strategy.close("Long")
// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(30, title='Take Profit %', type=float)/100
stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)