Stratégie de suivi de tendance de super support et de résistance


Date de création: 2024-02-26 10:57:20 Dernière modification: 2024-02-26 10:57:20
Copier: 0 Nombre de clics: 1369
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance de super support et de résistance

Aperçu

La stratégie de suivi de tendance de la résistance à la résistance à la résistance à la résistance est une stratégie de suivi de tendance innovante qui fusionne les deux indicateurs populaires de la résistance à la résistance à la résistance et à la super-trend, avec un filtre de tendance supplémentaire pour une meilleure précision. Cette stratégie est inspirée du script de suivi de tendance de la résistance à la résistance à la résistance à la résistance de Lonesome TheBlue, qui vise à fournir aux traders un outil de suivi de tendance fiable, tout en minimisant les faux signaux.

Principe de stratégie

Cette stratégie est basée sur la fusion des points de résistance de soutien et des indicateurs de tendance supérieure, ainsi que sur l’ajout d’un puissant filtre de tendance. Il calcule d’abord les hauts et les bas de soutien au cours d’une période donnée, ces points de référence clés étant essentiels à l’analyse de la tendance.

Ensuite, des ATR sont générés en fonction de la ligne médiane et de la définition de l’utilisateur. Ces bandes s’ajustent elles-mêmes en fonction des fluctuations du marché, ce qui augmente la flexibilité de la stratégie. Le cœur de la stratégie de la super tendance de la colonne de support est d’identifier avec précision la tendance dominante, qui se transforme en douceur entre les signaux de multiples et les signaux de tête vide lorsque le prix interagit avec la bande de super tendance.

L’introduction d’un filtre de tendance supplémentaire dans la stratégie a encore amélioré ses capacités. Le filtre est basé sur des moyennes mobiles, évaluant dynamiquement la force et la direction de la tendance. En associant ce filtre de tendance au signal de tendance supérieure à la résistance du point de support initial, la stratégie vise à prendre des décisions de négociation plus avisées et plus fiables.

Analyse des avantages

  1. Amélioration de la précision: l’ajout d’un filtre de tendance améliore la précision de la stratégie en confirmant la direction de la tendance globale avant de générer un signal.

  2. La continuation de la tendance: l’intégration de points de résistance et de super-trends de soutien et de filtres de tendance visant à prolonger les transactions pendant les tendances de marché fortes, afin de potentiellement maximiser les opportunités de profit.

  3. Réduction des faux signaux: le calcul de la moyenne pondérée de la stratégie, associé à un filtre de tendance, aide à minimiser les faux signaux et à réduire les sauts sous des conditions de marché incertaines ou de correction.

  4. L’astuce de résistance au support: la stratégie continue de fournir des points de support et de résistance supplémentaires en fonction des points de résistance au support, fournissant aux traders des informations contextuelles précieuses.

Analyse des risques

  1. La stratégie est sensible aux paramètres des cycles ATR et des multiples ATR. Une configuration inappropriée des paramètres peut entraîner un excès de transactions ou des opportunités manquées.

  2. Retour de tendance: près du point de retour de tendance, la stratégie peut générer de faux signaux, entraînant des pertes inutiles. Le risque doit être géré en combinaison avec des arrêts de perte.

  3. Sur-optimisation: les paramètres peuvent être optimisés pour obtenir la meilleure combinaison, mais ne sont pas prévisionnels. Les différences de situation et de variété doivent être prises en compte dans le choix des paramètres.

  4. Risque d’hypothèque vide: la stratégie entre dans l’hypothèque vide lorsque le prix s’écarte de la trajectoire ascendante et descendante. Cela peut laisser passer une opportunité après la reprise de la tendance.

Direction d’optimisation

  1. Combinaison avec d’autres indicateurs: l’ajout d’indicateurs tels que le volume de transactions ou la volatilité peut être envisagé pour améliorer la solidité de la stratégie.

  2. Paramètres dynamiques: Des méthodes d’optimisation automatique ou d’ajustement des paramètres en fonction de l’environnement du marché peuvent être étudiées pour rendre les stratégies plus adaptatives.

  3. Stratégie d’arrêt des pertes: recherche sur la façon de concevoir des mécanismes d’arrêt des pertes afin de contrôler efficacement les pertes individuelles, tout en maintenant la logique de la stratégie.

  4. Adaptation des variétés: stratégie d’évaluation Paramètres dans les différentes pièces et instruments, optimiser les paramètres en fonction du type de variété.

Résumer

La stratégie de suivi de la tendance de résistance des supersupports est une stratégie de quantification très prometteuse. Elle présente des avantages uniques en termes de simplicité, de capacité de suivi de la tendance, etc. En même temps, la stratégie peut être améliorée et optimisée en termes de paramètres, de stop-loss, d’adaptabilité à la variété, etc., ce qui en fait un outil de quantification plus universel et plus fiable.

Code source de la stratégie
/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Julien_Eche
// Strategy based on "Pivot Point Supertrend" Indicator by LonesomeTheBlue

//@version=4

strategy("PPS", overlay=true, initial_capital=500000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)

prd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50)
Factor=input(defval = 3, title = "ATR Factor", minval = 1, step = 0.1)
Pd=input(defval = 10, title = "ATR Period", minval=1)
showpivot = input(defval = false, title="Show Pivot Points")
showlabel = input(defval = true, title="Show Buy/Sell Labels")
showcl = input(defval = false, title="Show PP Center Line")
showsr = input(defval = false, title="Show Support/Resistance")

// get Pivot High/Low
float ph = pivothigh(prd, prd)
float pl = pivotlow(prd, prd)

// drawl Pivot Points if "showpivot" is enabled
plotshape(ph and showpivot, text="H",  style=shape.labeldown, color=na, textcolor=color.red, location=location.abovebar, transp=0, offset = -prd)
plotshape(pl and showpivot, text="L",  style=shape.labeldown, color=na, textcolor=color.lime, location=location.belowbar, transp=0, offset = -prd)

// calculate the Center line using pivot points
var float center = na
float lastpp = ph ? ph : pl ? pl : na
if lastpp
    if na(center)
        center := lastpp
    else
        //weighted calculation
        center := (center * 2 + lastpp) / 3

// upper/lower bands calculation
Up = center - (Factor * atr(Pd))
Dn = center + (Factor * atr(Pd))

// get the trend
float TUp = na
float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// plot the trend
linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na
plot(Trailingsl, color = linecolor ,  linewidth = 2, title = "PP SuperTrend")
 
plot(showcl ? center : na, color = showcl ? center < hl2 ? color.blue : color.red : na)

// check and plot the signals
bsignal = Trend == 1 and Trend[1] == -1
ssignal = Trend == -1 and Trend[1] == 1
plotshape(bsignal and showlabel ? Trailingsl : na, title="Buy", text="Buy", location = location.absolute, style = shape.labelup, size = size.tiny, color = color.lime, textcolor = color.black, transp = 0)
plotshape(ssignal and showlabel ? Trailingsl : na, title="Sell", text="Sell", location = location.absolute, style = shape.labeldown, size = size.tiny, color = color.red, textcolor = color.white, transp = 0)

//get S/R levels using Pivot Points
float resistance = na
float support = na
support := pl ? pl : support[1]
resistance := ph ? ph : resistance[1]

// if enabled then show S/R levels
plot(showsr and support ? support : na, color = showsr and support ? color.lime : na, style = plot.style_circles, offset = -prd)
plot(showsr and resistance ? resistance : na, color = showsr and resistance ? color.red : na, style = plot.style_circles, offset = -prd)

// Trend Filter from SuperTrend Long Strategy
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)

// Combine the SuperTrend calculations
atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2

up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)

// Strategy Entry Conditions
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       

window()  => time >= start and time <= finish ? true : false

// Combined entry conditions
longCondition = (trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window())
shortCondition = (trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window())

if (longCondition)
    strategy.entry("BUY", strategy.long)

if (shortCondition)
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short)

buy1 = barssince((trend == 1 and trend[1] == -1 and close > ma) or (bsignal and window()))
sell1 = barssince((trend == -1 and trend[1] == 1 and close < ma) or (ssignal and window()))
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(color1)