Stratégie de négociation de la moyenne mobile par écart

Auteur:ChaoZhang est là., Date: le 26 octobre 2023 à 16h05
Les étiquettes:

img

Cet article fournit une analyse approfondie de la stratégie de négociation de l'écart de moyenne mobile codée par Noro.

La logique de la stratégie

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.

Les avantages

  1. Adoption du principe de négociation de la différence pour attraper les renversements de tendance, contrairement aux stratégies de suivi de tendance.

  2. Tracer les axes des indicateurs pour un jugement intuitif de la position et du croisement des indicateurs.

  3. Logique de fermeture optimisée, fermant la position existante avant de renverser la direction.

  4. Plage de temps de négociation définie afin d'éviter les positions overnight inutiles.

  5. Flexibilité pour activer ou désactiver les opérations longues ou courtes.

Les risques

  1. 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.

  2. Les moyennes mobiles manquent de souplesse pour capturer les variations de prix en temps réel.

  3. Le paramètre limite prédéfini est statique, ce qui nécessite des ajustements pour différents produits et environnements de marché.

  4. Impossible d'identifier les fluctuations des tendances, nécessitant une combinaison avec des indicateurs de volatilité.

  5. Besoin d'optimiser les règles de détention, par exemple le stop loss, le take profit ou uniquement la capture des lacunes initiales.

Directions de renforcement

  1. Testez différents paramètres tels que la période SMA ou les moyennes mobiles adaptatives comme EMA.

  2. Ajoutez la direction de la moyenne mobile et la validation de la pente pour éviter les transactions inutiles.

  3. Pensez à combiner avec des indicateurs de volatilité comme les bandes de Bollinger pour mettre en pause les transactions lorsque la volatilité augmente.

  4. Mettre en œuvre des règles de dimensionnement des positions, par exemple quantité fixe, pyramide incrémentielle, gestion de l'argent.

  5. 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.

Résumé

Cet article a analysé de manière exhaustive la stratégie de trading de Noro. Il utilise l'écart de prix de la caractéristique de moyenne mobile et implémente des axes et des couleurs d'indicateur pour le timing d'entrée. Il optimise également la logique de fermeture et définit la plage de temps de trading. Cependant, les faiblesses inhérentes au suivi de la moyenne mobile demeurent, nécessitant d'autres optimisations des paramètres, des règles de stop loss, de la combinaison des indicateurs, etc. pour améliorer la robustesse.


/*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()

Plus de