
Cette stratégie, appelée “stratégie de trading quantifiée basée sur le croisement des prix et des SMA”, génère des signaux de trading en calculant les SMA de différents cycles et en suivant les croisements des prix et des SMA. Elle génère des signaux d’achat lorsque les prix franchissent les SMA de bas en haut et de vente lorsque les prix franchissent les SMA de haut en bas.
La logique de base de la stratégie est de suivre la croisée des prix avec la moyenne mobile simple à 21 jours (SMA). En même temps, la stratégie calcule également la SMA à 50 jours et la SMA à 200 jours, ce qui permet de juger de la tendance générale.
Plus précisément, la stratégie demande le prix de clôture d’une action dans la plage de dates spécifiée, puis calcule un SMA différent en fonction de la période de SMA d’entrée. Un signal d’achat est défini si le prix franchit le SMA du 21e jour par la descente; un signal de vente est défini si le prix franchit le SMA du 21e jour par la descente.
La stratégie suit la position actuelle en calculant le SMA et en jugeant le croisement. Lorsqu’un signal d’achat est déclenché, la stratégie entre dans la position de maintien. Lorsqu’un signal de vente est déclenché, la stratégie est à plat.
Le plus grand avantage de cette stratégie est qu’elle est simple, facile à utiliser, facile à comprendre et à mettre en œuvre. La SMA est un indicateur d’analyse technique couramment utilisé, et le croisement de la SMA est l’un des signaux de trading les plus courants. Cette stratégie basée sur le croisement des indicateurs peut être facilement appliquée à différentes actions et périodes de temps, ce qui convient à l’automatisation des transactions.
Un autre avantage est que la stratégie peut être optimisée en ajustant les paramètres du SMA. Par exemple, il est possible de tester différentes combinaisons de cycles SMA pour trouver les paramètres optimaux adaptés aux lois de la volatilité d’une action particulière. De plus, la stratégie peut également être validée et optimisée en ajoutant d’autres indicateurs.
Le plus grand risque de cette stratégie réside dans le fait que les stratégies de type indicateur produisent plus de faux signaux. Par exemple, pendant les périodes de volatilité, les prix peuvent fréquemment traverser la SMA en dessous du sol, ce qui entraîne des signaux de négociation inutiles.
Les solutions courantes incluent la mise en place d’un stop loss, l’ajustement de paramètres, ou l’ajout de conditions de filtrage. Par exemple, un ratio de perte maximale peut être mis en place pour limiter le risque; la période SMA peut également être ajustée pour choisir une combinaison de paramètres plus stable; ou l’ajout d’autres indicateurs de confirmation pour filtrer une partie du signal.
Cette stratégie peut être optimisée dans les directions suivantes:
Tester et sélectionner la meilleure combinaison de paramètres SMA. Les différentes longueurs de SMA peuvent être retracées pour trouver la période la plus appropriée.
Ajouter d’autres indicateurs de confirmation de FilterSignal, tels que le RSI, le MACD, etc. pour filtrer certains signaux erronés.
Ajout de la logique de stop-loss. La mise en place d’une tolérance maximale de perte ou le déplacement du stop-loss permettent de contrôler le risque.
Optimiser le timing de l’entrée. Vous pouvez envisager d’entrer à proximité de points de rupture importants, plutôt que de suivre strictement les croisements SMA.
Test des stratégies combinées. Vous pouvez envisager d’utiliser des stratégies combinées avec d’autres types de stratégies, telles que le suivi des tendances.
La stratégie permet d’automatiser les transactions grâce à un simple croisement des indicateurs SMA. Les avantages sont simples et faciles à suivre et à comprendre; les inconvénients sont fréquents et faciles à manipuler. Nous pouvons améliorer l’efficacité de la stratégie en optimisant les paramètres, en ajoutant des filtres, en arrêtant les pertes, etc. La stratégie nous fournit un cadre de base qui peut être enrichi et amélioré en ajoutant constamment de nouveaux éléments.
/*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")