Stratégie de négociation quantitative basée sur le croisement des prix avec la SMA

Auteur:ChaoZhang est là., Date: 2024-02-22 17h34 et 09 min
Les étiquettes:

img

Résumé

La stratégie s'appelle Quantitative Trading Strategy Based on Price Crossover with SMA. Elle génère principalement des signaux de trading en calculant les SMA de différentes périodes et en suivant le croisement des prix avec les SMA. Lorsque le prix dépasse la SMA vers le haut, elle déclenche un signal d'achat. Lorsque le prix dépasse la SMA vers le bas, elle déclenche un signal de vente.

La logique de la stratégie

La logique de base de cette stratégie est de suivre le croisement des prix avec la moyenne mobile simple (SMA) de 21 jours.

Plus précisément, la stratégie demande un prix de clôture dans une plage de dates donnée et calcule différents SMA en fonction des périodes d'entrée.

En plus de calculer les SMA et de déterminer les croisements, la stratégie suit également la position actuelle. Elle entre en position lorsque les déclencheurs de signaux d'achat et aplatit la position lorsque les déclencheurs de signaux de vente.

Analyse des avantages

Le plus grand avantage de cette stratégie est d'être simple et facile à comprendre et à mettre en œuvre. SMA est un indicateur technique couramment utilisé et SMA crossover est l'un des signaux de trading les plus courants.

Un autre avantage est que cette stratégie peut être optimisée en ajustant les paramètres de la SMA. Par exemple, nous pouvons tester différentes combinaisons de périodes de SMA pour trouver la meilleure pour des stocks spécifiques.

Risques et solutions

Le plus grand risque de cette stratégie est que les stratégies basées sur des indicateurs ont tendance à générer des faux signaux excessifs.

Par exemple, nous pouvons définir un ratio de perte maximale pour limiter le risque, ajuster les périodes SMA pour trouver des paramètres plus stables ou utiliser d'autres indicateurs pour filtrer certains signaux de trading.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Testez et sélectionnez des combinaisons optimales de paramètres SMA. Re-testez différentes longueurs SMA pour trouver les meilleures périodes.

  2. Ajoutez d'autres indicateurs pour filtrer la confirmation du signal, tels que RSI, MACD, etc. Cela aide à filtrer les faux signaux.

  3. Incorporer une logique de stop-loss, définir une perte maximale tolérable ou un stop de trailing pour mieux contrôler les risques.

  4. Optimisez le timing de l'entrée. envisagez d'entrer autour des principales ruptures plutôt que de suivre strictement le croisement SMA.

  5. Testez des stratégies composites et combinez-les avec d'autres types de stratégies comme le suivi des tendances.

Conclusion

La stratégie réalise le trading automatisé avec des signaux de croisement SMA simples. Les avantages sont faciles à comprendre et à mettre en œuvre. Les inconvénients sont des signaux excessifs et sujets aux fouets. Nous pouvons l'améliorer en ajustant les paramètres, en ajoutant des filtres, en supprimant les pertes, etc. La stratégie nous fournit un cadre de base. Nous pouvons l'enrichir en incorporant plus de composants.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true)

// Define start and end year inputs
start_year = input.int(2022, title="Start Year")
end_year = input.int(2022, title="End Year")

// Define start and end month inputs
start_month = input.int(1, title="Start Month", minval=1, maxval=12)
end_month = input.int(12, title="End Month", minval=1, maxval=12)

// Define SMA length inputs
sma_length = input.int(21, title="SMA Length")
sma_length_50 = input.int(50, title="50 SMA Length")
sma_length_200 = input.int(200, title="200 SMA Length")

// Filter data within the specified date range
filter_condition = true
filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on)

// Define SMAs using the input lengths
sma = ta.sma(filtered_close, sma_length)
sma_50 = ta.sma(filtered_close, sma_length_50)
sma_200 = ta.sma(filtered_close, sma_length_200)

// Initialize position
var bool in_position = false

// Condition for a price cross above SMA within the date range
cross_above = filter_condition and ta.crossover(filtered_close, sma)

// Condition for a price cross below SMA within the date range
cross_below = filter_condition and ta.crossunder(filtered_close, sma)

// Buy condition
if cross_above
    in_position := true

// Sell condition
if cross_below
    in_position := false

// Strategy entry and exit
if cross_above
    strategy.entry("Buy", strategy.long)
if cross_below
    strategy.close("Buy")

// Plot the SMAs on the chart
plot(sma, color=color.blue, title="21 SMA")
plot(sma_50, color=color.red, title="50 SMA")
plot(sma_200, color=color.orange, title="200 SMA")

// Plot the Buy and Sell signals with "tiny" size
plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal")
plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")


Plus de