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.
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.
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.
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.
Fixez un objectif de profit de 1% après l'achat; définissez un stop loss de 1% après la vente.
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.
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.
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.
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")