Stratégie de croisement des moyennes mobiles des indices

Auteur:ChaoZhang est là., Date: 2023-10-17 16:55:10 Je suis désolé
Les étiquettes:

指数移动平均交叉策略

Résumé

Il s'agit d'une stratégie de trading automatique basée sur l'intersection d'une moyenne mobile d'un indice sur deux périodes de temps différentes. Il utilise des indicateurs techniques simples, ce qui est très pratique pour l'apprentissage et la pratique des débutants.

Le principe

Cette stratégie utilise deux moyennes mobiles indicielles, une moyenne du grand cycle de temps et une moyenne du cycle en cours.

Plus précisément, la stratégie définit d'abord deux paramètres homogènes:

  1. tf - grand cycle de temps, ligne par défaut
  2. len - longueur de cycle de la ligne moyenne, par défaut 3

Les deux EMA sont ensuite calculés séparément:

  1. ma1 - EMA de 3 jours sur le calendrier cyclique majeur
  2. ma2 - EMA de 3 jours pour le cycle en cours

Pour finir, la logique de transaction:

  • Faites plus quand ma2 est égal à ma1.
  • Donc ma2 est égal à ma1.

Ainsi, les transactions automatiques sont effectuées en déterminant la direction de la tendance par l'intersection des lignes homogènes de différentes périodes de temps.

Les avantages

La stratégie présente les avantages suivants:

  1. Les principes sont simples, faciles à comprendre et à mettre en œuvre, parfaits pour les débutants.
  2. Les transactions progressives, qui suivent la tendance, peuvent générer de meilleurs bénéfices.
  3. L'utilisation d'une moyenne mobile indicielle est plus sensible aux variations de prix et permet de saisir les changements de tendance en temps opportun.
  4. Les combinaisons de différentes cycles homogènes peuvent jouer leurs avantages respectifs et améliorer la stabilité du système.
  5. Il n'y a pas besoin de beaucoup de paramètres, il est facile à tester et à optimiser, et le disque virtuel fonctionne facilement.

Le risque

La stratégie comporte également des risques:

  1. Les tendances ne sont pas très fortes et pourraient être prises en charge par la volatilité du marché.
  2. Les deux intersections sont en retard et peuvent manquer certaines opportunités.
  3. Les situations où les deux lignes sont en désordre ne peuvent pas être filtrées efficacement.
  4. Il est difficile de s'adapter à un marché complexe basé uniquement sur des lignes moyennes simples.

Le risque peut être réduit par la mise en place d'un stop-loss, l'optimisation de la combinaison de paramètres ou l'intégration d'autres indicateurs.

Optimisation

La stratégie peut être optimisée pour les domaines suivants:

  1. Les paramètres de la ligne droite de la grande périodicité sont testés pour trouver la meilleure combinaison.
  2. L'augmentation du filtrage de l'indicateur de transaction pour éviter les faux signaux.
  3. La combinaison d'indicateurs de tendance permet d'améliorer la capacité de détention et l'efficacité opérationnelle.
  4. Le point de stop-loss adaptatif est mis en place pour contrôler les pertes monétaires.
  5. Optimiser la gestion des positions et ajuster la taille des positions en fonction du marché.
  6. L'intégration d'un modèle d'apprentissage automatique rend les stratégies plus intelligentes.

Résumé

L'indice utilise une stratégie de capture des tendances d'indicateurs simples, adaptée à la pratique d'apprentissage pour les débutants. L'optimisation a plus de place, il est possible d'introduire plus d'indicateurs techniques et de modèles pour les améliorer et de développer des stratégies de trading quantitatives plus efficaces.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Noro's Singapore Strategy", shorttitle = "Singapore str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//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")
tf = input("D", title = "Big Timeframe")
len = input(3, minval = 1, title = "MA length")
src = input(close, title = "MA Source")
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")

//MAs
ma1 = request.security(syminfo.tickerid, tf, sma(src, len))
ma2 = sma(src, len)
plot(ma1, linewidth = 2, color = blue, title = "Big TF MA")
plot(ma2, linewidth = 2, color = red, title = "MA")

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if ma2 > ma1
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if ma2 < ma1
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

En savoir plus