Stratégie de suivi de tendance basée sur le canal de prix et la moyenne mobile


Date de création: 2024-02-06 09:46:23 Dernière modification: 2024-02-06 09:46:23
Copier: 0 Nombre de clics: 600
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance basée sur le canal de prix et la moyenne mobile

Aperçu

La stratégie permet d’identifier et de suivre les tendances en construisant un canal de prix, en calculant la distance de l’écart du prix de la ligne centrale, puis en combinant le signal de filtrage uniforme. La stratégie a à la fois le suivi de la tendance et la rupture.

Principe de stratégie

  1. Construire une chaîne de prix
  • Calculer le prix le plus élevé et le prix le plus bas des cycles les plus récents
  • La ligne centrale est la moyenne des prix les plus élevés et les plus bas.
  • La distance est la déviation absolue du prix par rapport à la ligne centrale
  • Distance de glissement entre la voie et la voie ferrée
  1. Comment évaluer les tendances
  • Quand le prix est en dessous de la trajectoire descendante, définie comme une tendance à la baisse
  • Une tendance à la hausse est définie quand le prix est supérieur à la hausse.
  1. Génération de signaux de négociation
  • En cas de tendance haussière, les prix sont inférieurs au prix d’ouverture ou inférieurs à la barre.
  • En baisse, les prix sont supérieurs au prix d’ouverture ou en cours de liquidation

Analyse des avantages

  1. La première est de capturer les tendances à moyen terme.
  2. Combiner les signaux de rupture pour éviter les défaillances dans les zones de choc
  3. Paramètres personnalisables pour différentes variétés

Analyse des risques

  1. La tendance à la récession pourrait entraîner des pertes plus faibles
  2. Les paramètres mal définis peuvent manquer une inversion de tendance
  3. Attention à la fréquence des transactions pour éviter les sur-transactions

Direction d’optimisation

  1. Combinaison avec d’autres indicateurs pour filtrer le signal
  2. Modifier dynamiquement les paramètres de la chaîne de prix
  3. Adhésion à un mécanisme de coupe des pertes et optimisation de la gestion des fonds

Résumer

Cette stratégie est globalement robuste et permet de suivre efficacement les tendances à long terme et à moyen terme, tout en générant des signaux de transaction en combinant des ruptures de tendance. L’optimisation des paramètres et le filtrage des signaux permettent d’améliorer encore la stratégie pour l’adapter à davantage de variétés et d’environnements de marché.

Code source de la stratégie
/*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)