Cette stratégie utilise une combinaison de bandes de Bollinger et de moyennes mobiles pour l'identification et l'entrée de tendance.
Calculer le canal de Bollinger pour déterminer la direction de la tendance du marché
Calculer la taille du corps de la bougie haussière pour les signaux de stop loss et de renversement
Entrer des transactions dans la direction du canal à la confirmation de la tendance
Utiliser des moyennes mobiles pour la filtration afin d'éviter de faux signaux
Identification systématique de tendance combinant bandes et moyennes mobiles
Les bandes identifient clairement les canaux de prix et la direction de la tendance. Les moyennes mobiles filtrent le bruit.
Contrôle efficace des risques par le biais d'un arrêt des pertes de la carrosserie de la bougie
La comparaison du corps de la bougie actuelle avec la moyenne historique détecte l'inversion de tendance pour le stop loss et la réduction de la position.
Règles quantitatives claires pour l'entrée et le stop loss
Règles strictes en matière de moyenne mobile et de direction du canal pour l'entrée.
Perte potentielle sur les marchés à plage
Les prix qui oscillent autour des bandes peuvent entraîner des pertes mineures répétées.
Stop-loss prématuré dans des tendances fortes
Les retracements à court terme peuvent déclencher des arrêts dans les fortes tendances haussières/baissières.
Signaux erronés dus à un mauvais réglage des paramètres
Des paramètres de moyenne mobile et de bandes sous-optimaux peuvent provoquer des signaux erronés. Les paramètres doivent être optimisés pour la fiabilité du signal.
Optimiser la période de révision de la moyenne mobile
Ajustez la période pour réduire le lissage afin de détecter plus rapidement les changements de tendance.
Test des mécanismes de stop loss alternatifs
Évaluer les arrêts de trail, les arrêts ATR, etc. pour trouver le système optimal.
Incorporer des modèles d'apprentissage automatique
Former des modèles sur des données historiques détaillées pour augmenter la prédiction des tendances et des signaux.
Cette stratégie équilibre l'identification des tendances et le contrôle des risques à l'aide de bandes de Bollinger et de moyennes mobiles. L'approche quantitative systématique avec des règles d'entrée/sortie claires permet une capture efficace des récompenses avec un risque contrôlé.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.3", shorttitle = "Scalper str 1.3", 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, %") needct = input(false, defval = false, title = "Counter-trend entry") 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 hd1 = center + distsma / 2 ld1 = 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(hd, color = colo, linewidth = 1, transp = 0, title = "High band") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = ema(body, 30) candle = high - low //Engulfing min = min(open, close) max = max(open, close) bar = close > open ? 1 : close < open ? -1 : 0 upeng = bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1] ? 1 : 0 dneng = bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1] ? 1 : 0 //Signals up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0 dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and bar == -1 and bar[1] == -1 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 close > open)) ? 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)