Chaîne de prix et tendance basée sur la moyenne mobile

Auteur:ChaoZhang est là., Date: 2024-02-06 09:46:23 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie identifie et suit les tendances en construisant un canal de prix pour calculer l'écart du prix par rapport à la ligne médiane et en utilisant des moyennes mobiles pour filtrer les signaux.

La logique de la stratégie

  1. Créer un canal de prix
  • Calculer le plus haut plus haut et le plus bas plus bas au cours des dernières périodes
  • La ligne du milieu est la moyenne du plus haut plus haut et le plus bas plus bas
  • La distance est l'écart absolu du prix par rapport à la ligne médiane.
  • Distance douce pour obtenir les bandes supérieures et inférieures
  1. Déterminer la direction de la tendance
  • Lorsque le prix est inférieur à la bande inférieure, définir comme tendance à la baisse
  • Lorsque le prix est au-dessus de la bande supérieure, définir comme tendance haussière
  1. Générer des signaux commerciaux
  • En tendance haussière, long lorsque le prix est inférieur à l'ouverture ou dépasse la marge supérieure
  • En tendance à la baisse, short lorsque le prix est supérieur à l'ouverture ou dépasse la fourchette inférieure

Analyse des avantages

  1. Capture les tendances à moyen et à long terme
  2. Combinaison avec des signaux de rupture pour éviter une négociation inefficace sur les marchés à plage
  3. Paramètres personnalisables adaptés à différents produits

Analyse des risques

  1. Plus de pertes mineures possibles dans les tendances oscillantes
  2. Des paramètres inappropriés peuvent manquer des renversements de tendance
  3. Surveiller la fréquence des transactions afin d'éviter une survente

Directions d'optimisation

  1. Ajouter d'autres indicateurs aux signaux filtrés
  2. Ajustez dynamiquement les paramètres du canal de prix
  3. Incorporer un stop loss pour optimiser la gestion des risques

Conclusion

La stratégie est globalement assez robuste pour suivre efficacement les tendances à moyen et long terme tout en générant des signaux de trading par le biais de ruptures de tendance.


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


//@version=2
strategy("Noro's Bands Strategy v1.1", shorttitle = "NoroBands str 1.1", overlay=true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(true, defval = false, title = "Show Bands")
needbg = input(true, defval = false, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 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 = 90)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Plus de