Stratégie de suivi de l'élan basée sur l'intégration des indicateurs

Auteur:ChaoZhang est là., Date: 2023-10-17 15h26h49
Les étiquettes:

img

Résumé

Cette stratégie est basée sur un intégrateur d'indicateurs personnalisé pour déterminer la direction de la tendance des prix en accumulant la somme des distances entre le prix et la moyenne mobile, et ainsi suivre la tendance.

La logique de la stratégie

La stratégie utilise un indicateur personnalisé pour intégrer la distance entre le prix et la moyenne mobile, mis en œuvre comme suit:

  1. Calculer la distance entre le prix et la moyenne mobile simple de 200 périodes k=close-sma ((close,200)

  2. Définir la période d'intégration s=29, accumuler la somme de k sur les dernières s de périodes: somme = 0, pour i = 0 à s, somme := somme + k[i]

  3. Lorsque la somme est supérieure à 0, un signal long est généré. Lorsque la somme est inférieure à 0, un signal court est généré.

  4. Lorsqu'une position longue est ouverte, si la somme est inférieure à 0, la position longue est fermée.

La stratégie juge la direction générale de la tendance en suivant si la somme accumulée de la distance entre le prix et la moyenne mobile est positive ou négative.

Les avantages

  1. L'intégrateur d'indicateur personnalisé peut déterminer efficacement la direction de la tendance des prix.

  2. Le concept d'intégration accumule la distance entre prix et MA, améliorant la précision de la détermination de la tendance.

  3. Une logique relativement simple, facile à comprendre et à optimiser.

  4. Adaptation flexible de la période d'intégration pour optimiser la sensibilité.

  5. De bons résultats de backtest, des profits stables, applicables dans le trading en direct.

Les risques

  1. Un mauvais réglage de la période d'intégration peut provoquer une réaction insensible et manquer les points tournants de la tendance.

  2. Un mauvais réglage de la longueur MA peut entraîner un mauvais jugement de la tendance.

  3. Des événements soudains peuvent donner de mauvais signaux.

  4. Une mauvaise sélection de symboles, des symboles très volatiles peuvent entraîner une diminution de leur efficacité.

Solution correspondante:

  1. Optimiser la période d'intégration pour une meilleure sensibilité.

  2. Testez différentes longueurs MA pour en trouver une optimale pour la détermination de la tendance.

  3. Fermez la stratégie avant les événements majeurs pour éviter les erreurs de grands changements de prix.

  4. Sélectionnez les symboles à faible volatilité pour une meilleure performance.

Directions d'amélioration

  1. Considérez l'ajout d'autres indicateurs comme l'indicateur RSI pour une détermination globale.

  2. Les résultats de l'intégration de la recherche utilisant différents types d'AM.

  3. Essayez d'optimiser automatiquement la période d'intégration pour différents symboles.

  4. Ajoutez des indicateurs de volume pour éviter les erreurs lors d'importantes fluctuations de prix.

  5. Utilisez l'apprentissage automatique pour optimiser automatiquement les paramètres de robustesse.

Conclusion

Cette stratégie juge la direction de la tendance à l'aide d'un intégrateur d'indicateur personnalisé en accumulant la distance entre le prix et le MA. La logique est simple et claire, et les résultats des backtests sont bons. Elle peut être améliorée en ajustant les paramètres d'intégration, en ajoutant des indicateurs auxiliaires, en optimisant automatiquement, etc. pour une application pratique plus fiable.


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

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=29)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = sum>0
exitlong = sum<0

shortCondition = sum<0
exitshort = sum>0

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Plus de