Stratégie quantitative de la Croix Dorée et de la Croix Morte à Double Moyenne Mobile


Date de création: 2023-12-05 10:24:34 Dernière modification: 2023-12-05 10:24:34
Copier: 0 Nombre de clics: 704
1
Suivre
1619
Abonnés

Stratégie quantitative de la Croix Dorée et de la Croix Morte à Double Moyenne Mobile

Aperçu

Cette stratégie est basée sur les signaux de forfait doré des moyennes mobiles doubles ALMA, combinés avec les signaux de forfait à plusieurs points de l’indicateur MACD, permettant de faire automatiquement plus de blanchiment. La stratégie s’applique aux périodes de 4 heures et plus, les données de test sont BNB/USDT, la période est de 2017 à aujourd’hui, le frais de traitement est fixé à 0,03% .

Principe de stratégie

La stratégie consiste à construire une moyenne mobile double avec une ligne rapide et une ligne lente ALMA. La longueur de la ligne rapide est de 20 et la longueur de la ligne lente est de 40, chacune utilisant un décalage de 0,9 et un écart standard de 5. Un signal de commutation est généré lorsque la ligne rapide traverse la ligne lente et un signal de commutation lorsque la ligne rapide traverse la ligne lente.

De même, la stratégie est combinée avec le signal de l’indicateur MACD. Le signal de la ligne droite est efficace uniquement lorsque l’indicateur MACD est positif (en hausse); le signal de la ligne droite est négatif (en baisse); le signal de la ligne droite est efficace uniquement lorsque l’indicateur MACD est négatif (en baisse).

Cette stratégie impose également des conditions d’arrêt-stop: faire un stop plus de 2 fois, c’est 0.2 fois le stop; faire un stop plus de 0.05 fois, c’est 1 fois le stop.

Analyse des avantages

Cette stratégie, combinée à une analyse de la tendance des moyennes mobiles doubles et à une analyse de l’énergie de l’indicateur MACD, permet de filtrer efficacement les faux signaux et d’améliorer l’exactitude de l’entrée. Le paramètre de stop-loss est raisonnable et permet de maximiser le profit et d’éviter les pertes importantes.

Les données de retracement adoptées depuis 2017 incluent plusieurs virages haussiers et baissiers, ce qui prouve que la stratégie est adaptée aux caractéristiques linéaires et non linéaires du marché.

Analyse des risques

Le risque de cette stratégie est le suivant:

  1. Les moyennes mobiles doubles sont elles-mêmes en retard et risquent de manquer une occasion de raccourcir la ligne.
  2. La stratégie ne génère pas de signal lorsque le MACD est à zéro
  3. Le stop loss est un paramètre prédéfini qui peut être décalé par rapport à la situation réelle.

La solution est simple:

  1. Réduction appropriée des cycles des moyennes mobiles et sensibilité accrue aux courts rayons
  2. Optimisation des paramètres MACD pour une fluctuation plus fréquente du diagramme
  3. Modifier dynamiquement le paramètre de stop loss

Direction d’optimisation

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

  1. Essayez différents types de moyennes mobiles pour obtenir une meilleure fluidité
  2. Optimiser les moyennes mobiles et les paramètres du MACD pour les variétés et les périodes
  3. Ajouter des conditions supplémentaires, telles que des changements de volume de transactions, pour filtrer les signaux
  4. Adaptation en temps réel du taux de stop-loss pour une stratégie plus adaptative

Résumer

Cette stratégie, combinant avec succès les jugements de tendance des moyennes mobiles et les jugements auxiliaires du MACD, et en établissant des arrêts de perte raisonnables, permet d’obtenir des gains stables dans une variété de situations. La stabilité et la rentabilité de la stratégie peuvent être encore améliorées par des moyens tels que l’optimisation continue des paramètres et l’ajout de conditions de filtrage supplémentaires.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy(title = "Full Crypto Swing Strategy ALMA Cross", overlay = true,  pyramiding=1,initial_capital = 1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)

//time condition
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2010, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2031, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = time >= startDate and time <= finishDate

UseHAcandles    = input(false, title="Use Heikin Ashi Candles in Algo Calculations")

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low

//alma fast and slow
src = haClose
windowsize = input(title="Length Size Fast", type=input.integer, defval=20)
windowsize2 = input(title="Length Size Slow", type=input.integer, defval=40)
offset = input(title="Offset", type=input.float, defval=0.9, step=0.05)
sigma = input(title="Sigma", type=input.float, defval=5)
outfast=alma(src, windowsize, offset, sigma)
outslow=alma(src, windowsize2, offset, sigma)

//macd
fast_length = input(title="Fast Length", type=input.integer, defval=6)
slow_length = input(title="Slow Length", type=input.integer, defval=25)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)

// Calculating
fast_ma = ema(src, fast_length)
slow_ma =  ema(src, slow_length)
macd = fast_ma - slow_ma
signal = ema(macd, signal_length)
hist = macd - signal

long=crossover(outfast,outslow) and hist > hist[1] and time_cond
short=crossunder(outfast,outslow) and hist < hist[1] and time_cond

takeProfit_long=input(2.0, step=0.005)
stopLoss_long=input(0.2, step=0.005)
takeProfit_short=input(0.05, step=0.005)
stopLoss_short=input(1.0, step=0.005)

strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)

strategy.exit("short_tp/sl", "long", profit=close * takeProfit_long / syminfo.mintick, loss=close * stopLoss_long / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closeshort')
strategy.exit("short_tp/sl", "short", profit=close * takeProfit_short / syminfo.mintick, loss=close * stopLoss_short / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')