Stratégie d'arrêt des pertes à moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-11-15 15:44:48 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de stop loss basée sur des moyennes mobiles doubles. Elle utilise deux moyennes mobiles, l'une comme moyenne mobile principale, et l'autre comme ligne de stop loss. Lorsque le prix est au-dessus de la moyenne mobile principale, allez long. Lorsque le prix est en dessous de la ligne de stop loss, fermez la position longue. Lorsque le prix est en dessous de la moyenne mobile principale, allez court. Lorsque le prix est au-dessus de la ligne de stop loss, fermez la position courte.

La logique de la stratégie

Cette stratégie utilise la fonction sma pour calculer la moyenne mobile simple de la longueur len en tant que ligne moyenne mobile principale ma. Ensuite, en fonction du pourcentage de perte de stop long elpercent et du pourcentage de perte de stop court espercent entré par l'utilisateur, elle calcule la ligne de stop-loss longue el et la ligne de stop-loss courte es. Les formules spécifiques sont:

le taux de dépistage est le même que le taux de dépistage de l'infection. es = ma + (ma * espérance / 100)

où elpercent et espercent représentent le pourcentage décalé par rapport à la moyenne mobile principale.

Cela nous donne trois lignes: la moyenne mobile principale ma, la ligne de stop-loss longue el et la ligne de stop-loss courte es.

La logique de négociation de la stratégie est la suivante:

Si le prix de clôture est supérieur à la ligne de stop-loss long el, ouvrir une position longue.

Si le prix de clôture est inférieur à la ligne de stop-loss courtes es, ouvrez une position courte.

Les avantages de la stratégie

  1. L'utilisation de moyennes mobiles doubles pour définir des points de stop loss et de profit peut contrôler efficacement les risques.

  2. La longueur de la moyenne mobile principale len et les pourcentages de décalage elpercent et espercent sont personnalisables, qui peuvent être ajustés pour différents marchés et s'adapter bien.

  3. Le mécanisme de stop loss peut réduire les pertes dans le temps et éviter de nouvelles pertes.

  4. La logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre, adaptée aux débutants.

  5. Il peut être à la fois long et court pour tirer parti des marchés à double sens.

Risques et solutions

  1. Risque de surajustement des tests de retour. Les stratégies moyennes mobiles ont tendance à surajuster les données des tests de retour. Les performances réelles peuvent différer. La solution consiste à vérifier sur des marchés en direct complexes et à ajuster les paramètres en conséquence.

  2. Si le stop loss est trop proche de la moyenne mobile principale, il peut être déclenché par des fluctuations de prix à court terme.

  3. La pression du capital due au trading bidirectionnel. Pour aller long et court, il faut une marge suffisante.

  4. Risque d'optimisation des paramètres. Les paramètres optimaux varient considérablement selon les différentes conditions du marché. Il faut du temps pour optimiser les paramètres. Peut utiliser l'apprentissage automatique pour aider à l'optimisation des paramètres.

Directions d'optimisation

  1. Considérez l'ajout de plus d'indicateurs pour déterminer l'évolution du marché et améliorer les décisions, par exemple l'indicateur des prix en volume, l'indicateur de volatilité.

  2. Optimisation automatique de la longueur moyenne mobile et des paramètres de stop loss basés sur les changements du marché.

  3. Ajouter un filtrage sur les instruments de négociation, ne négocier que les tendances évidentes.

  4. Considérez un arrêt de perte de trailing au lieu d'un arrêt de perte fixe, en ajustant les arrêts en fonction des prix en temps réel.

  5. Construire un système d'évaluation pour l'optimisation des paramètres afin de trouver automatiquement des ensembles de paramètres optimaux via les résultats des backtests.

Conclusion

La logique générale de cette stratégie est claire et facile à comprendre. Elle utilise des moyennes mobiles doubles pour le stop loss et peut contrôler efficacement les risques. La stratégie présente des avantages tels que des paramètres personnalisables et une adaptabilité, mais présente également des risques tels que le surentraînement au backtest et le réglage de la distance de stop loss qui nécessitent une attention. Avec une optimisation ultérieure, cette stratégie peut devenir une stratégie de stop loss efficace viable pour le trading en direct. Elle convient comme point de départ pour les débutants du trading algorithmique et peut être continuellement améliorée par la pratique pour finalement former un système de trading unique.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Robot WhiteBox StopMA", shorttitle = "Robot WhiteBox StopMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
len = input(50)
src = input(ohlc4)
elpercent = input(5.0, minval = 0, maxval = 100, title = "Shift long, %")
espercent = input(-5.0, minval = -100, maxval = 0, title = "Shift short, %")
showlines = input(true, defval = true, title = "Show lines")
showbg = input(true, defval = true, title = "Show background")

//Levels
ma = sma(src, len)
el = ma + ((ma / 100) * elpercent)
es = ma + ((ma / 100) * espercent)

//Lines
colel = showlines ? color.lime : na
colma = showlines ? color.blue : na
coles = showlines ? color.red : na
plot(el, color = colel, offset = 1)
plot(ma, color = colma, offset = 1)
plot(es, color = coles, offset = 1)

//Background
trend = 0
trend := high > el[1] ? 1 : low < es[1] ? -1 : trend[1]
colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(colbg, transp = 80)

//Trading
if ma > 0
    strategy.entry("Long", strategy.long, needlong ? na : 0, stop = el)
    strategy.entry("Short", strategy.short, needshort ? na : 0, stop = es)

Plus de