Cette stratégie est basée sur une stratégie multi-zones basée sur des moyennes mobiles. Elle utilise 3 moyennes mobiles de différents paramètres pour la génération de signaux de négociation.
Cette stratégie utilise la fonction sma pour calculer une moyenne mobile de la longueur len, ma. Ensuite, on calcule une moyenne mobile de la longueur d’onde de la longueur 1, de la longueur 2 et de la longueur 3 en fonction de ma.
Lors de la génération d’un signal d’achat, si vous n’avez pas de position actuelle, ouvrez une position supplémentaire lorsque le prix traverse la longline 1; si vous avez une position de 1 main, ouvrez une autre main lorsque le prix traverse la longline 2; si vous avez une position de 2 mains, ouvrez une autre main lorsque le prix traverse la longline 3, et tenez jusqu’à 3 mains supplémentaires.
Lors de la génération d’un signal de vente, si une position est actuellement en surpoids, la position est à plat lorsque le prix est inférieur à ma.
Cette stratégie peut être mise en œuvre en cas d’effet de suivi des tendances, par le biais d’une hiérarchisation des lots.
Comment gérer les risques:
Cette stratégie peut être optimisée dans les domaines suivants:
Ajout d’autres indicateurs de jugement pour déterminer la direction de la tendance, comme l’ajout du MACD pour juger la tendance à la faiblesse
Optimiser les paramètres des moyennes mobiles pour trouver les combinaisons optimales
Le nombre et la proportion de surmenages doivent être ajustés pour éviter que des surmenages ne se produisent.
Ajout d’un mécanisme de stop mobile permettant de régler le stop en fonction de l’ATR
Le nombre de positions peut être ajusté en fonction de la dynamique de la volatilité du marché, en réduisant les positions en cas de forte volatilité
Tester l’effet des paramètres de différentes variétés pour trouver celles qui conviennent le mieux à la stratégie
Développer un module d’Exit qui prend en compte l’arrêt de la sortie lors de certaines manifestations
Dans l’ensemble, la stratégie utilise les moyennes mobiles pour juger de la direction de la tendance et de suivre la tendance pour réaliser des bénéfices. Cependant, il existe un certain retard et un risque de suivi. Nous pouvons optimiser la stratégie en ajoutant des indicateurs de jugement auxiliaires, en optimisant les paramètres, en ajustant la gestion des positions et en ajoutant un mécanisme de stop-loss.
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)
//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult
//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)
//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
lots := round(size / lot)
strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
lots := round(size / lot)
strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
lots := round(size / lot)
strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
strategy.entry("TP", strategy.short, 0, limit = ma)