Cet article fournit une analyse approfondie de la stratégie de négociation de l'écart de moyenne mobile codée par Noro.
La stratégie calcule d'abord la moyenne mobile simple (SMA) de 3 jours. Elle calcule ensuite le rapport entre le prix de clôture (close) et le SMA moins un en tant qu'indicateur (ind). Lorsque l'ind dépasse la limite du paramètre prédéfini, cela signifie que le prix de clôture a significativement dépassé la SMA et que la position longue est considérée. Lorsque l'ind dépasse la limite, cela signifie que le prix de clôture est tombé bien en dessous de la SMA et que la position courte est considérée.
L'indicateur ind est couleur différente dans des zones séparées pour faciliter le jugement.
Lorsqu'il est signalé long/short, la stratégie ferme d'abord la position opposée, puis ouvre la position long/short.
Adoption du principe de négociation de la différence pour attraper les renversements de tendance, contrairement aux stratégies de suivi de tendance.
Tracer les axes des indicateurs pour un jugement intuitif de la position et du croisement des indicateurs.
Logique de fermeture optimisée, fermant la position existante avant de renverser la direction.
Plage de temps de négociation définie afin d'éviter les positions overnight inutiles.
Flexibilité pour activer ou désactiver les opérations longues ou courtes.
Les stratégies de moyennes mobiles ont tendance à générer de multiples transactions perdantes, ce qui nécessite de la patience dans la détention.
Les moyennes mobiles manquent de souplesse pour capturer les variations de prix en temps réel.
Le paramètre limite prédéfini est statique, ce qui nécessite des ajustements pour différents produits et environnements de marché.
Impossible d'identifier les fluctuations des tendances, nécessitant une combinaison avec des indicateurs de volatilité.
Besoin d'optimiser les règles de détention, par exemple le stop loss, le take profit ou uniquement la capture des lacunes initiales.
Testez différents paramètres tels que la période SMA ou les moyennes mobiles adaptatives comme EMA.
Ajoutez la direction de la moyenne mobile et la validation de la pente pour éviter les transactions inutiles.
Pensez à combiner avec des indicateurs de volatilité comme les bandes de Bollinger pour mettre en pause les transactions lorsque la volatilité augmente.
Mettre en œuvre des règles de dimensionnement des positions, par exemple quantité fixe, pyramide incrémentielle, gestion de l'argent.
Définir les lignes stop loss/take profit ou mettre en pause les nouveaux ordres lorsque le stop loss à pourcentage fixe est déclenché, pour contrôler le risque par transaction.
Cet article a analysé de manière exhaustive la stratégie de trading de Noro
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Shift Close Strategy v1.0", shorttitle = "Shift Close 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") limit = input(10) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day") //Shift MA sma = sma(ohlc4, 3) ind = ((close / sma) - 1) * 100 //Oscilator plot(3 * limit, color = na, transp = 0) plot(limit, color = black, transp = 0) plot(0, color = black, transp = 0) plot(-1 * limit, color = black, transp = 0) plot(-3 * limit, color = na, transp = 0) plot(ind, linewidth = 3, transp = 0) col = ind > limit ? red : ind < -1 * limit ? lime : na bgcolor(col, transp = 0) //Signals size = strategy.position_size up = ind < -1 * limit dn = ind > limit exit = ind > -1 * limit and ind < limit //Trading lot = 0.0 lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if exit strategy.close_all()