Stratégie de suivi de tendance avec stop suiveur


Date de création: 2024-01-17 11:19:06 Dernière modification: 2024-01-17 11:19:06
Copier: 0 Nombre de clics: 616
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance avec stop suiveur

Aperçu

La stratégie de stop-loss mobile à suivi de tendance est une stratégie de trading quantitative qui combine un indicateur de jugement de tendance et un mécanisme de stop-loss mobile. Cette stratégie utilise un indicateur de super-tendance pour juger de la direction de la tendance actuelle et utilise une ligne de stop-loss mobile pour suivre les changements de prix en temps réel, permettant le suivi de la tendance et la gestion du risque.

Principe de stratégie

La stratégie commence par calculer l’indicateur de super-tendance pour déterminer s’il est actuellement en hausse ou en baisse. L’indicateur de super-tendance, combiné à l’indicateur ATR et au point central, permet de déterminer plus précisément la direction de la tendance.

Lorsqu’un signal d’achat est généré, la stratégie ouvre une position supplémentaire; en même temps, elle calcule en temps réel une ligne de stop mobile, calculée comme un point central moins la valeur de l’indicateur ATR. Tant que le prix de clôture actuel est supérieur à cette ligne de stop, la ligne de stop se déplace en temps réel et reste toujours dans une position de stop raisonnable. Si le prix est inférieur à la ligne de stop, la position de stop est levée.

La stratégie combine les indicateurs ADX et RSI pour filtrer les signaux de trading inappropriés. La stratégie ne prend position que si l’ADX est supérieur à la limite fixée et que le RSI est à un niveau raisonnable.

Analyse des avantages

Le plus grand avantage de cette stratégie réside dans la capacité de bien saisir la direction de la tendance et de suivre la tendance. L’indicateur de super-tendance est plus précis que la moyenne mobile simple et permet de déterminer rapidement le point de basculement.

De plus, la stratégie implique le filtrage des indicateurs ADX et RSI, ce qui permet d’éviter les erreurs de trading en période de forte volatilité. L’indicateur ADX garantit une tendance suffisante, tandis que l’indicateur RSI évite les sur-achats et les sur-vente, ce qui améliore la probabilité de profit.

Analyse des risques

Le plus grand risque de cette stratégie réside dans la probabilité que la tendance soit mal jugée et que l’indicateur de super-tendance émette un signal erroné. Bien que l’indicateur de super-tendance soit plus performant que la moyenne mobile simple, il est inévitable que des erreurs de jugement soient commises dans des situations complexes.

En outre, une mauvaise configuration des paramètres de la stratégie peut entraîner certains risques. Par exemple, les paramètres ATR sur la convention peuvent entraîner un ajustement trop radical de la ligne de stop-loss. La mauvaise configuration des paramètres ADX et RSI peut également entraîner des opportunités de négociation manquées ou augmenter la probabilité d’une transaction erronée.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Le fait d’essayer d’autres indicateurs de jugement de tendance, tels que le DMI, le KDJ, etc., en combinaison avec des indicateurs de super-tendance, pour former un système de jugement multifonctionnel, peut améliorer l’exactitude du jugement.

  2. Ajout d’un module d’optimisation des paramètres adaptatifs basé sur l’apprentissage automatique, permettant aux paramètres ATR, ADX, RSI, etc. de s’adapter au marché en temps réel plutôt qu’à des valeurs fixes.

  3. L’introduction d’indicateurs RSI alternatifs tels que l’indicateur de l’émotion, le filtrage des signaux. L’indicateur RSI n’est pas idéal pour juger de situations complexes, tandis que les indicateurs de l’émotion sociale peuvent mieux juger de la chaleur du marché.

  4. Ajout d’un module de gestion des positions, qui permet d’ajuster dynamiquement la taille des positions en fonction de la distance de la ligne de stop-loss par rapport au prix actuel. Plus la ligne de stop-loss est éloignée, plus les positions peuvent être augmentées de manière appropriée pour augmenter l’espace de profit.

Résumer

Le suivi des tendances est une stratégie quantitative plus mature qui utilise des méthodes telles que l’analyse des tendances, les arrêts mobiles et le filtrage multifonctionnel pour capturer les tendances tout en contrôlant strictement les risques. Il y a encore beaucoup de possibilités d’optimisation de cette stratégie qui mérite d’être étudiée et améliorée pour s’adapter à un environnement de marché plus complexe.

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

//@version=5
strategy("Bendre ADX Sup Trend", overlay = true)

///////////////////////////
// SuperTrend + Pivot Point
//////////////////////////

src =  input(close, title="EMA Source")
PPprd = input(defval = 2, title="Pivot Point Period")
AtrFactor=input(defval = 2, title = "ATR Factor")
AtrPd=input(defval = 18, title = "ATR Period")

StartDate = input(timestamp("1 Dec 2022"), title="Start Date")
EndDate = input(timestamp("12 Jan 2023"), title="End Date")

var float ph = na
var float pl = na
ph := ta.pivothigh(PPprd, PPprd)
pl :=ta.pivotlow(PPprd, PPprd)

float center = na
center := center[1]
// float lastpp = ph ? ph : pl ? pl : 0.0
float lastpp = na(ph) ? na(pl) ? na : pl : ph

if lastpp > 0
    if na(center)
        center := lastpp
    else
        center := (center * 2 + lastpp) / 3

Up = center - (AtrFactor * ta.atr(AtrPd))
Dn = center + (AtrFactor * ta.atr(AtrPd))

var float TUp = na
var float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// Lines
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")

bsignalSSPP = close > Trailingsl
ssignalSSPP = close < Trailingsl


///////
// ADX
//////

lenADX = 14
th = 14
TrueRange = math.max(math.max(high-low, math.abs(high-nz(close[1]))), math.abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? math.max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? math.max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/lenADX) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/lenADX) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/lenADX) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = math.abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = ta.sma(DX, lenADX)


//////
// MA
/////

lenMA = 21
srcMA = input(close, title="Source")
// offsetMA = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
offsetMA = input(0, title="Offset")
outMA = ta.sma(srcMA, lenMA)

//
// RSI
//
length = input( 14 )
overSold = input( 30 )
overBought = input( 65 )
price = close
vrsi = ta.rsi(price, length)


// Buy - Sell Entries
buy = bsignalSSPP and outMA < close and ADX > th
sell = ssignalSSPP 


if (buy and vrsi > overBought)
    // .order // Tuned version
    strategy.entry("Buy", strategy.long)
    // strategy.close("Sell", "close Sell")

if (sell) and (strategy.position_size > 0)
    // strategy.entry("Sell", strategy.short)
    strategy.close("Buy", "Close Buy")

// if(sell and vrsi < overSold )
//     strategy.entry("Sell", strategy.short)

// if(buy) and (strategy.position_size > 0)
//     strategy.close("Sell", "close Sell")