Suivi de la stratégie de super-tendance

Auteur:ChaoZhang est là., Date: 2023-12-26 à 15h58
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de suivi de supertrend qui combine principalement des indicateurs de supertrend avec différents paramètres pour obtenir un effet de suivi et utilise un indicateur de filtre pour le contrôle des risques.

Principe de stratégie

Cette stratégie se compose principalement de trois groupes d'indicateurs de supertrend avec des paramètres différents. Le premier groupe est l'indicateur de supertrend principal qui utilise les paramètres par défaut pour le jugement de base des tendances du marché. Le deuxième groupe est l'indicateur de supertrend adjoint qui permet un suivi plus sensible des changements de prix en réduisant la période ATR et en augmentant le multiplicateur ATR. Le troisième groupe est l'indicateur de supertrend filtré qui augmente de manière appropriée la période ATR et le multiplicateur ATR pour filtrer les fausses ruptures.

Lorsque la supertrend principale émet un signal d'achat, si la supertrend adjointe émet également un signal synchronisé et que la direction de la supertrend du filtre est à la hausse, la stratégie prendra le suivi de l'achat. Lorsque la supertrend principale émet un signal de vente, si la supertrend adjointe émet également un signal synchronisé et que la direction de la supertrend du filtre est à la baisse, la stratégie prendra le suivi de la vente.

Les avantages

  1. L'idée de la stratégie est simple et claire, facile à comprendre, adaptée aux débutants
  2. Le paramètre de stratégie est raisonnable pour suivre efficacement le marché et contrôler les risques
  3. Le signal de stratégie est plus précis et fiable avec un taux de gain plus élevé
  4. Combinaison de différentes combinaisons de paramètres pour obtenir un effet de suivi
  5. L'ajout d'un mécanisme de filtrage peut filtrer efficacement les faux signaux et contrôler les risques

Les risques

  1. Risques systématiques inhérents au stock lui-même
  2. L'indicateur Supertrend peut être retardé sur certains marchés
  3. Des paramètres ATR mal réglés peuvent provoquer des écarts de signal
  4. Le volume de négociation insuffisant peut rendre difficile la réduction complète des pertes

Principales mesures de prévention des risques:

  1. Choisissez des actions avec une bonne liquidité et de grandes fluctuations
  2. Optimiser raisonnablement les paramètres afin de réduire la possibilité de retard
  3. Test et optimisation des paramètres pour améliorer la précision du signal
  4. Augmenter le volume de transactions de manière appropriée pour assurer une marge de réduction des pertes

Directions d'optimisation

  1. Tester différentes combinaisons de périodes ATR pour optimiser l'effet de suivi
  2. Essayez d'autres indicateurs de volatilité pour remplacer l'ATR
  3. Augmenter ou diminuer le nombre de combinaisons de supertendances pour tester l'effet
  4. Essayez de combiner avec d' autres indicateurs pour l' optimisation du filtrage du signal
  5. Testez différentes méthodes de stop loss pour trouver la solution optimale

Résumé

L'idée générale de cette stratégie est claire et simple. En coordonnant plusieurs groupes d'indicateurs de supertrend avec différents paramètres, il réalise le suivi de l'entrée et le contrôle des risques. Le signal de stratégie est plus précis avec de bonnes performances en direct. Il convient aux débutants pour apprendre, et peut également être utilisé comme modèle pour tester et optimiser divers indicateurs et paramètres.


/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Supertrend TEST 2 Strategy", overlay = true, format=format.price, precision=2)

Periods = input(title="ATR Period", type=input.integer, defval=4)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
tp=close
sl=close

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
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green )
plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white )
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red )
plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white )
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white

sPeriods=input(title="ATR Period", type=input.integer, defval=8)
sMultiplier=input(title="dop ATR Multiplier", type=input.float, step=0.1, defval=1.5)
satr2 = sma(tr, sPeriods)
satr= changeATR ? atr(sPeriods) : satr2
ssup=ohlc4-(sMultiplier*satr)
ssup1 = nz(ssup[1],ssup)
ssup := close[1] > ssup1 ? max(ssup,ssup1) : ssup
sdn=ohlc4+(sMultiplier*satr)
sdn1 = nz(sdn[1], sdn)
sdn := close[1] < sdn1 ? min(sdn, sdn1) : sdn
strend = 1
strend := nz(strend[1], strend)
strend := strend == -1 and close > sdn1 ? 1 : strend == 1 and close < ssup1 ? -1 : strend
sbuySignal = strend == 1 and strend[1] == -1
ssellSignal = strend == -1 and strend[1] == 1

fPeriods=input(title="ATR Period", type=input.integer, defval=10)
fMultiplier=input(title="filter ATR Multiplier", type=input.float, step=0.1, defval=5)
fatr2 = sma(tr, fPeriods)
fatr= changeATR ? atr(fPeriods) : fatr2
fup=ohlc4-(fMultiplier*fatr)
fup1 = nz(fup[1],fup)
fup := close[1] > fup1 ? max(fup,fup1) : fup
fdn=ohlc4+(fMultiplier*fatr)
fdn1 = nz(fdn[1], fdn)
fdn := close[1] < fdn1 ? min(fdn, fdn1) : fdn
ftrend = 1
ftrend := nz(ftrend[1], ftrend)
ftrend := ftrend == -1 and close > fdn1 ? 1 : ftrend == 1 and close < fup1 ? -1 : ftrend
fbuySignal = ftrend == 1 and ftrend[1] == -1
fsellSignal = ftrend == -1 and ftrend[1] == 1
tcolor=color.new(color.gray,50)
fdnPlot = plot(ftrend == 1 ? na : fdn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=tcolor)
fupPlot = plot(ftrend == 1 ? fup : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=tcolor)



if (strategy.position_size > 0)
	tp:=tp[1]
	sl:=up
	strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl)
	
if (strategy.position_size < 0)
	tp:=tp[1]
	sl:=dn
	strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl)



if ((buySignal and  ftrend==1) or (sbuySignal and trend==1 and  ftrend==1)) 
	tp:=close+(close-up)*0.382
    strategy.entry("Long", strategy.long,  limit=tp, comment=tostring(round(tp)))
if ((sellSignal and ftrend==-1) or (ssellSignal and trend==-1 and  ftrend==-1)) 
	tp:=close-(dn-close)*0.382
    strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))


Plus de