Stratégie originale de suivi des tendances basée sur la moyenne mobile

Auteur:ChaoZhang est là., Date: 23 janvier 2023
Les étiquettes:

img

Résumé

Cette stratégie est basée sur le corps de la bougie, combinée à l'indicateur EMA pour juger de la direction de la tendance du marché, afin d'obtenir l'effet de suivi de tendance PRIMITIVE ORIGINAL.

Principe de stratégie

  1. Calculer la longueur moyenne du corps des 30 dernières bougies en ligne K
  2. Lorsque la dernière ligne K est une ligne yang et la longueur du corps est supérieure à sbody/2, aller long
  3. Lorsque déjà long, si la dernière K-ligne est une ligne yin, la longueur du corps est supérieure à sbody/2, et la position actuelle est rentable, puis fermer la position longue
  4. Lorsque la dernière K-ligne est une ligne yin et la longueur du corps est supérieure à sbody/2, aller court
  5. Lorsque déjà court, si la dernière ligne K est une ligne yang, la longueur du corps est supérieure à sbody/2, et la position actuelle est rentable, puis fermer la position courte

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Originaux et simples, faciles à comprendre et à mettre en œuvre
  2. Basé sur le jugement de la structure de la bougie, a un certain effet sur la capture des éruptions
  3. Suivre les tendances, peut capturer des mouvements plus importants
  4. Arrêt rapide de la perte lorsque rentable, aide à verrouiller les bénéfices

Analyse des risques

Cette stratégie comporte également des risques:

  1. Impossible de filtrer efficacement les fausses fuites, peut causer des pertes inutiles
  2. À en juger uniquement par les bougies, il est susceptible d'être influencé par des glissements et des écarts
  3. N'a pas examiné le problème de la fréquence excessive des transactions

Les risques peuvent être réduits par:

  1. Combiner avec d'autres indicateurs pour filtrer les signaux
  2. Définir une stratégie de stop-loss
  3. Optimiser les paramètres pour contrôler la fréquence des échanges

Directions d'optimisation

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Ajouter des indicateurs de rupture pour filtrer les fausses ruptures
  2. Ajouter une stratégie de stop loss pour réduire les pertes uniques
  3. Incorporer des indicateurs de tendance pour vérifier la direction de la tendance
  4. Optimisation des paramètres pour trouver la meilleure combinaison de paramètres

Résumé

Cette stratégie appartient à la stratégie de suivi de tendance simple d'origine. En jugeant les structures de bougies, il peut effectivement suivre les directions de tendance. En même temps, la mise en place d'un mécanisme de stop loss rapide peut bloquer les bénéfices. Cette stratégie peut compléter le portefeuille de suivi de tendance, mais doit encore être optimisée pour réduire les risques. Il vaut la peine de poursuivre la recherche sur l'effet de la combinaison avec d'autres indicateurs à l'avenir.


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

//@version=3
strategy(title = "Noro's Primitive Strategy v1.0", shorttitle = "Primitive str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
useus = input(true, defval = true, title = "Use UUP")
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(01, defval = 01, 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")

//Logic
body = abs(close - open)
sbody = ema(body, 30) / 2
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == -1 and (body > sbody or usebody == false) and (close < strategy.position_avg_price or strategy.position_size <= 0 or useus == false)
dn = bar == 1 and (body > sbody or usebody == false) and (close > strategy.position_avg_price or strategy.position_size >= 0 or useus == false)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00)
    strategy.close_all()

Plus de