Stratégie de négociation de moyenne mobile et stochastique

Auteur:ChaoZhang est là., Date: 2024-02-02 10:48:37 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie combine les moyennes mobiles et l'oscillateur stochastique pour mettre en œuvre un système de négociation d'actions automatisé. Il utilise deux moyennes mobiles de longueurs différentes et l'indicateur stochastique pour capturer les signaux de tendance et de surachat / survente, et prend des décisions d'achat et de vente en fonction de la direction de la tendance et des signaux d'indicateur dans les régions surachetées / survendues.

La logique de la stratégie

1. Les moyennes mobiles

Une ligne rapide (5 jours) et une moyenne mobile lente (20 jours) sont utilisées. La ligne rapide qui traverse au-dessus de la ligne lente est un signal d'achat, tandis que la ligne inférieure est un signal de vente. Les moyennes mobiles déterminent la tendance et la direction du prix.

2. L'oscillateur stochastique

Les paramètres stochastiques sont réglés sur: période de ligne K de 14, période de ligne K lisse de 3, période de ligne D lisse de 3. Sous 20 sur la ligne K est la région de survente, tandis qu'au-dessus de 80 est la région de surachat.

3. Règles d'entrée

Condition d'achat: croisement rapide de MA au-dessus de la ligne lente de MA et de K <20 (région survendue) Condition de vente: croisement rapide de MA en dessous de la ligne lente MA et K > 80 (région surachetée)

Passez long lorsque la condition d'achat est remplie; passez court lorsque la condition de vente est remplie.

4. Paramètres de perte d'arrêt

Fixez un objectif de profit de 1% après l'achat; définissez un stop loss de 1% après la vente.

Analyse des avantages

Cette stratégie combine tendance et indicateurs pour capturer efficacement les tendances des prix à moyen et long terme, tout en utilisant l'oscillateur stochastique pour contrôler le moment des transactions et éviter les entrées aléatoires sans biais directionnel clair.

Risques et solutions

  • Les pics de prix dus à des événements d'actualité importants peuvent entraîner de grosses pertes.

  • Les marchés soutenus dans la fourchette peuvent entraîner de petites pertes consécutives.

  • Évitez les périodes clés du marché où les prix ont tendance à inverser.

Optimisation

  • Testez différentes combinaisons de paramètres pour trouver des paramètres optimaux, tels que différentes longueurs MA.

  • Incorporer d'autres outils d'analyse comme le volume, la volatilité pour les conditions de filtrage afin d'améliorer le taux de profit.

  • Des mécanismes de sélection d'actions de recherche, tels que le choix d'actions fortes ou d'indices pondérés par plafonnement, pour réduire les risques liés à un seul stock.

Conclusion

La stratégie globale fonctionne sans heurts. Avec des objectifs de stop-loss et de profit, le profil général de profit/perte est solide. D'autres améliorations peuvent être attendues grâce à l'ajustement des paramètres et au filtrage des stocks. En général, il s'agit d'une stratégie de trading quantitative facile à mettre en œuvre et robuste.


/*backtest
start: 2024-01-25 00:00:00
end: 2024-02-01 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average and Stochastic Strategy 80% ", overlay=true)

// Moving Average Settings
maShortLength = input(5, title="Short MA Length")
maLongLength = input(20, title="Long MA Length")

// Stochastic Settings
stochLength = input(14, title="Stochastic Length")
smoothK = input(3, title="Stochastic %K")
smoothD = input(3, title="Stochastic %D")
stochOverbought = 80
stochOversold = 20

// Profit Target Settings
profitTarget = input(1, title="Profit Target (%)") // 1% profit target

// Calculate Moving Averages
maShort = sma(close, maShortLength)
maLong = sma(close, maLongLength)

// Calculate Stochastic
k = sma(stoch(close, high, low, stochLength), smoothK)
d = sma(k, smoothD)

// Entry Conditions
longConditionMA = crossover(maShort, maLong) and k < stochOversold
shortConditionMA = crossunder(maShort, maLong) and k > stochOverbought

// Opposite Conditions
oppositeLongConditionMA = crossunder(maShort, maLong) and k < stochOversold
oppositeShortConditionMA = crossover(maShort, maLong) and k > stochOverbought

// Strategy Logic
if (longConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (50 + profitTarget / 100))

if (shortConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (20 - profitTarget / 100))

// Opposite Strategy Logic
if (oppositeLongConditionMA)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Sell", "Sell", profit=close * (50 - profitTarget / 100))

if (oppositeShortConditionMA)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Buy", "Buy", profit=close * (20 + profitTarget / 100))

// Plot Moving Averages
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")

// Plot Stochastic
hline(stochOverbought, "Overbought", color=color.red)
hline(stochOversold, "Oversold", color=color.green)
plot(k, color=color.black, title="Stochastic %K")

Plus de