Cette stratégie est une stratégie de dynamique basée sur des lignes moyennes mobiles. Elle génère des signaux de négociation en calculant des moyennes mobiles simples de différentes périodes et en comparant leurs situations de croisement. Plus précisément, lorsque la ligne moyenne mobile à court terme traverse au-dessus de la ligne moyenne mobile à long terme, un signal d'achat est généré; lorsque la ligne moyenne mobile à court terme traverse au-dessous de la ligne moyenne mobile à long terme, un signal de vente est généré.
La logique de base de cette stratégie est basée sur l'effet de dynamique, qui est la persistance des tendances des prix des actions. Les lignes moyennes mobiles peuvent refléter efficacement la tendance de changement des prix des actions. Lorsque la ligne moyenne mobile à court terme traverse au-dessus de la ligne moyenne mobile à long terme, cela signifie que le prix des actions commence à entrer dans une tendance à la hausse; au contraire, lorsque la ligne moyenne mobile à court terme traverse en dessous de la ligne moyenne mobile à long terme, cela signifie que le prix des actions commence à entrer dans une tendance à la baisse. Cette stratégie génère des signaux de trading basés sur ce principe.
Plus précisément, une moyenne mobile simple de 13 jours et une moyenne mobile simple de 34 jours sont définies dans la stratégie. Après avoir calculé ces deux moyennes mobiles en fonction du prix de clôture quotidien, leur relation d'ampleur est comparée. Si la ligne de 13 jours dépasse la ligne de 34 jours, un signal d'achat est généré, indiquant que le prix de l'action entre dans une tendance à la hausse et qu'une position longue doit être établie; si la ligne de 13 jours dépasse la ligne de 34 jours, un signal de vente est généré, indiquant que le prix de l'action entre dans une tendance à la baisse et que la position doit être fermée.
Le principal avantage de cette stratégie est qu'elle est simple et facile à comprendre et à mettre en œuvre. La ligne moyenne mobile est l'un des indicateurs techniques les plus basiques et les plus couramment utilisés. Son principe est simple et facile à comprendre et à appliquer.
En outre, le paramétrage de cette stratégie est flexible et peut être ajusté en fonction de différentes variétés et conditions du marché. Par exemple, les paramètres de cycle de la ligne de moyenne mobile peuvent être modifiés pour ajuster la sensibilité de la stratégie. Cela laisse place à l'optimisation et à l'ajustement de la stratégie.
Le plus grand risque de cette stratégie est qu'il peut y avoir plus de faux signaux et être pris dans les marchés à plage. Lorsque les prix fluctuent fortement, les lignes moyennes mobiles peuvent produire des croisements fréquents, ce qui entraîne de faux signaux. À ce stade, vous devez ajuster les paramètres du cycle de la ligne moyenne mobile pour filtrer un peu de bruit.
En outre, lorsqu'il y a un plus grand renversement du marché, le point de stop loss de la stratégie peut être brisé, ce qui entraîne des pertes plus importantes.
Les aspects suivants de cette stratégie peuvent être optimisés:
Optimiser les paramètres du cycle de la ligne de la moyenne mobile pour trouver la combinaison optimale de paramètres pour différentes variétés et conditions de marché.
Ajouter la filtration d'autres indicateurs techniques tels que le MACD et le KD pour éviter de générer de faux signaux sur les marchés à plage.
Optimiser et ajuster dynamiquement la stratégie d'arrêt des pertes pour éviter que le point d'arrêt des pertes ne soit trop proche tout en assurant l'arrêt des pertes, avec une probabilité plus élevée d'être franchi.
Augmenter les mécanismes de gestion des positions tels que les investissements fixes et le ratio de position pour contrôler le risque lié à une seule transaction.
Cette stratégie est une stratégie de croisement de moyenne mobile très classique. Elle génère des signaux d'achat et de vente en calculant et en comparant la relation entre les moyennes mobiles à court terme et à long terme. Les avantages de cette stratégie sont des paramètres simples et flexibles, et adaptés aux débutants; les inconvénients sont que les signaux peuvent ne pas être assez stables et qu'il est facile de se retrouver sur des marchés à plage. Avec une optimisation appropriée, elle peut toujours devenir une stratégie quantitative très pratique.
/*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)