Stratégie de tendance adaptative combinée à plusieurs indicateurs

Auteur:ChaoZhang est là., Date: 2023-12-19 11h05
Les étiquettes:

img

Résumé

Cette stratégie évalue avec précision la tendance en combinant l'indicateur de moyenne mobile double Hull, l'indicateur de moyenne mobile pondérée par volume, l'indicateur MACD et l'indicateur d'indice de force réelle.

Principe de stratégie

L'indicateur de base de cette stratégie est la moyenne mobile double Hull, qui est contrôlée par deux paramètres keh et teh. Ces deux paramètres déterminent le cycle de la ligne rapide et de la ligne lente respectivement.

L'indicateur de jugement auxiliaire est la moyenne mobile pondérée par volume meh1. Lorsque le prix est supérieur à meh1, c'est une tendance haussière; lorsque le prix est inférieur à meh1, c'est une tendance baissière.

Un autre indicateur auxiliaire de jugement est le MACD. Il est obtenu en soustrayant la moyenne mobile rapide de la moyenne mobile lente pour obtenir le MACD, puis en utilisant la moyenne mobile du MACD pour obtenir la ligne de signal.

Le dernier indicateur auxiliaire de jugement est TSI, qui est calculé en doublant le taux de variation du prix. Sa valeur absolue représente l'élan de variation du prix. Dans les conditions d'achat et de vente, la ligne de signal de TSI est jugée pour contrôler le moment des entrées et des sorties.

En combinant les signaux de ces indicateurs, la tendance peut être jugée avec précision et les paramètres peuvent être ajustés automatiquement pour se synchroniser avec le marché.

Les avantages

  1. L'utilisation d'une moyenne mobile double Hull comme indicateur principal de jugement, combinée à plusieurs autres indicateurs, peut améliorer la précision du jugement et réduire les faux signaux.

  2. L'application de l'indicateur de la STI pour déterminer le moment de l'entrée et de la sortie du marché permet de contrôler les risques.

  3. Plusieurs paramètres réglables pour une forte adaptabilité qui peut s'adapter automatiquement aux changements du marché.

  4. L'idée d'une combinaison d'indicateurs et d'une auto-adaptation des paramètres rend la stratégie stable avec une forte rentabilité continue.

Analyse des risques

  1. Bien que l'indicateur TSI soit utilisé pour déterminer le calendrier, les indicateurs utilisés dans l'algorithme sont toujours de type tendance.

  2. Les paramètres doivent être définis de manière raisonnable en fonction de l'expérience.

  3. La combinaison de plusieurs indicateurs augmente le volume de calcul, ce qui augmente la possibilité d'erreurs dans les grands stocks de données et les périodes de temps.

  4. Nécessité de surveiller l'effet de calcul des indicateurs afin d'éviter les interférences causées par des données anormales.

Direction de l'optimisation

  1. D'autres indicateurs auxiliaires tels que BOLL peuvent être testés pour rendre le signal plus précis et plus fiable.

  2. Optimiser la logique d'entrée et de sortie, définir des conditions de stop loss et de prise de profit pour contrôler les profits et les pertes uniques.

  3. Former et optimiser les paramètres pour les différentes variétés afin de les rendre plus adaptés aux différentes variétés.

  4. Augmenter le module d'auto-adaptation des paramètres pour ajuster automatiquement les paramètres de stratégie en fonction des effets des transactions récentes.

Résumé

Cette stratégie intègre les avantages de plusieurs indicateurs et utilise des combinaisons d'indicateurs pour juger de la direction de la tendance. Tout en contrôlant les risques, elle améliore la précision des jugements. Grâce à l'optimisation des paramètres et à l'optimisation de la logique, la stratégie peut être mieux adaptée aux changements du marché, tout en réduisant les pertes consécutives et en obtenant de plus grands bénéfices. Cette stratégie est stable et peut être utilisée pour les actions, les crypto-monnaies et d'autres variétés à long terme.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                    Quad-HullMA-cross & VWMA & MacD & TSI combination  <<<<< by SeaSide420 >>>>>>
strategy("MultiCross420", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
keh=input(title="Double HullMA 1",defval=7, minval=1)
teh=input(title="Double HullMA 2",defval=14, minval=1)
meh=input(title="VWMA",defval=1, minval=1)
meh1=vwma(close,round(meh))
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
n2ma3=2*wma(close,round(teh/2))
nma2=wma(close,teh)
diff2=n2ma3-nma2,sqn2=round(sqrt(teh))
n2ma4=2*wma(close[2],round(teh/2))
nma3=wma(close[2],teh)
diff3=n2ma4-nma3,sqn3=round(sqrt(teh))
n3=wma(diff2,sqn2)
n4=wma(diff3,sqn3)
fastLength = input(title="MacD fastLength", defval=7)
slowlength = input(title="MacD slowlength", defval=14)
MACDLength = input(title="MacD Length", defval=3)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
a1=plot(n1,color=c),a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = cross, color=b, linewidth = 3)
a3=plot(n3,color=c),a4=plot(n4,color=c)
plot(cross(n3, n4) ? n1 : na, style = cross, color=b, linewidth = 3)
//a5=plot(meh1,color=c)
long = input(title="TSI Long Length",  defval=5)
short = input(title="TSI Short Length",  defval=3)
signal = input(title="TSI Signal Length",  defval=2)
linebuy = input(title="TSI Upper Line",  defval=4)
linesell = input(title="TSI Lower Line",  defval=-4)
price = close
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
closelong = n1<n2 and n3<n4 and n1>meh1
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n3>n4 and n1<meh1
if (closeshort)
    strategy.close("Short") 
longCondition = strategy.opentrades<1 and n1>n2 and MACD>aMACD and n1<meh1 and n3>n4 and ema(tsi_value, signal)>linesell
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = strategy.opentrades<1  and n1<n2 and MACD<aMACD and n1>meh1 and n3<n4 and ema(tsi_value, signal)<linebuy
if (shortCondition)
    strategy.entry("Short",strategy.short)

Plus de