Stratégie de cassure des prix à double moyenne mobile


Date de création: 2023-11-21 15:33:52 Dernière modification: 2023-11-21 15:33:52
Copier: 1 Nombre de clics: 601
1
Suivre
1617
Abonnés

Stratégie de cassure des prix à double moyenne mobile

Aperçu

Cette stratégie utilise deux moyennes mobiles pour juger de la tendance et de la rupture des prix. Faites le vide lorsque le prix est en haut de la trajectoire et faites le plus lorsque le prix est en bas de la trajectoire, et définissez un stop loss exit pour contrôler le risque.

Principe de stratégie

  1. La fonction sma() permet de calculer deux moyennes mobiles à court et à long terme, respectivement comme trajectoire ascendante et descendante d’une stratégie de négociation.
  2. Calculer le prix d’achat et le prix de vente: le prix d’achat est multiplié par un facteur inférieur à 1 pour le prix de vente par un facteur supérieur à 1 pour le prix de vente.
  3. Lorsque le prix monte, il ouvre une position vide au prix du marché; lorsque le prix descend, il ouvre une position supplémentaire au prix limite.
  4. Définissez des périodes d’échange par année, mois et date pour contrôler la stratégie.
  5. Lorsque la retraite est terminée ou hors de la fourchette de dates, effacez toutes les positions.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Le système à deux voies permet de filtrer le bruit du marché et d’identifier les tendances.
  2. Le prix de la rupture peut être utilisé pour déterminer le moment de l’entrée et ainsi réduire les fausses alertes.
  3. Le prix limite est utilisé pour réduire le coût des chocs sur le marché.
  4. Il est possible d’ajuster facilement le cycle de négociation et de contrôler les risques stratégiques.

Analyse des risques

Cette stratégie présente aussi des risques:

  1. La rupture de deux voies peut entraîner un risque de perte continue. Le Stop Loss Exit peut être configuré pour contrôler les pertes.
  2. Le risque de sur-transaction peut être généré lors de l’entrée en liquidation d’un indice de négociation. L’écart entre les voies d’entrée et de sortie peut être assoupli de manière appropriée.
  3. Les offres limitées peuvent vous faire rater certaines opportunités d’achat. Vous pouvez envisager d’utiliser les offres du marché.

Direction d’optimisation

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

  1. Testez des combinaisons de moyennes mobiles de différentes longueurs pour trouver le paramètre optimal.
  2. L’augmentation des volumes est un indicateur de la rupture des ventes.
  3. Il a ajouté des mécanismes d’adaptation aux arrêts de perte et a ajusté le prix de cession en temps réel.
  4. Ajouter des modèles d’apprentissage automatique pour détecter les tendances.

Résumer

L’idée générale de cette stratégie est claire et compréhensible, elle permet d’identifier les tendances grâce à un système à deux voies, de déterminer le moment de l’entrée en bourse, de filtrer le bruit pour obtenir des bénéfices stables, et il y a de la place pour des améliorations et des optimisations. Dans l’ensemble, c’est une stratégie de négociation quantitative reproductible avec une valeur de combat réelle.

Code source de la stratégie
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

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

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, defval = 1, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
buylevel = input(-5.0, defval = -5.0, minval = -100, maxval = 0, title = "Buy line (lime)")
selllevel = input(0.0, defval = 0.0, minval = -100, maxval = 100, title = "Sell line (red)")
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")

//SMAs
sma = sma(src, per) 
buy = sma * ((100 + buylevel) / 100)
sell = sma * ((100 + selllevel) / 100)
plot(buy, linewidth = 2, color = lime, title = "Buy line")
plot(sell, linewidth = 2, color = red, title = "Sell line")

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

if (not na(close[per])) and size == 0
    strategy.entry("L", strategy.long, lot, limit = buy)
    
if (not na(close[per]))    
    strategy.entry("Close", strategy.short, 0, limit = sell)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()