
Cette stratégie utilise principalement les doubles moyennes mobiles comme signaux d’achat et de vente, et profite lorsque la tendance est inversée. Faire plus lorsque vous traversez la moyenne mobile à court terme au-dessus de la moyenne mobile à long terme et faire moins lorsque vous traversez la moyenne mobile à long terme en dessous de la moyenne mobile à court terme fait partie des stratégies de suivi de stop-loss courantes.
La stratégie consiste d’abord à définir deux moyennes mobiles, une moyenne de 20 jours à plus court terme et une moyenne de 60 jours à plus long terme. L’entrée est ensuite déterminée en fonction de l’intersection des moyennes à court terme et à long terme.
Plus précisément, lorsque la moyenne à court terme est traversée par la moyenne à long terme, cela indique qu’elle est actuellement en tendance à la hausse, ce qui est plus; lorsque la moyenne à court terme est traversée par la moyenne à long terme, cela indique qu’elle est actuellement en tendance à la baisse, ce qui est vide.
La méthode d’arrêt après avoir effectué un short est le suivi des pertes, en fonction du prix le plus élevé et du prix le plus bas, le trailing stop, permettant de bloquer le profit maximal.
La logique principale du code est la suivante:
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
L’optimisation des risques peut être réalisée de la manière suivante:
Cette stratégie peut être optimisée dans les domaines suivants:
Ajout de filtres sur d’autres indicateurs pour créer un mécanisme d’entrée à conditions multiples et éviter les fausses percées. Par exemple, un jugement sur l’indicateur RSI peut être ajouté
Optimiser les paramètres de périodicité de la moyenne mobile pour trouver la combinaison optimale de paramètres. Les différents paramètres de périodicité peuvent être testés en passant par étape par étape.
Optimisation de la zone d’arrêt. La meilleure zone d’arrêt peut être calculée à partir des données de retour. La zone d’arrêt dynamique peut également être définie.
Mise en place d’un mécanisme de réintégration. Après l’arrêt de la perte de sortie, il est possible de mettre en place une logique de réintégration raisonnable, réduisant le nombre de transactions.
En combinant les indicateurs de tendance, il est possible d’arrêter la négociation si la tendance n’est pas évidente et d’éviter les transactions invalides.
Adhésion à un mécanisme de gestion des positions, permettant d’ajuster les positions et les limites de stop-loss en fonction de la dynamique du marché.
La stratégie de retour en arrière des doubles moyennes mobiles est une méthode courante et efficace pour déterminer les points de retournement de la tendance à l’aide de deux lignes de symétrie. Cependant, il existe un certain risque.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
needdb = input(true, defval = true, title = "Double Body")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close
//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2
//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]
//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Body
body = abs(close - open)
smabody = needdb == false ? ema(body, 30) : ema(body, 30) * 2
candle = high - low
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0
if up7 == 1 or up8 == 1
strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)
if dn7 == 1 or dn8 == 1
strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)