Stratégie de trading haute fréquence basée sur le support et la résistance des super tendances et l'indicateur ADX


Date de création: 2024-02-19 15:01:36 Dernière modification: 2024-02-19 15:01:36
Copier: 1 Nombre de clics: 871
1
Suivre
1617
Abonnés

Stratégie de trading haute fréquence basée sur le support et la résistance des super tendances et l’indicateur ADX

Aperçu

Cette stratégie utilise une ligne de résistance de soutien hypertrend et un indicateur ADX pour réaliser des transactions à haute fréquence. La ligne de résistance de soutien hypertrend permet de déterminer la tendance des prix et d’émettre des signaux de négociation en calculant dynamiquement le dernier point de résistance de soutien. L’indicateur ADX est utilisé pour déterminer la force de la tendance, en définissant les valeurs ADX comme conditions de filtrage et en émettant des signaux de négociation uniquement lorsque la tendance est suffisamment forte.

Principe de stratégie

  1. Calculer les lignes de résistance au support. En prenant le prix de clôture comme référence, ajouter une amplitude ATR. Lorsque le prix franchit ces lignes, il est considéré comme un renversement de tendance.

  2. L’indicateur ADX détermine la force de la tendance. Lorsque l’ADX est supérieur à la valeur de réglage, la tendance est considérée comme suffisamment forte.

  3. La combinaison des deux émet un signal de transaction. Faire plus de blanchiment uniquement lorsque la résistance au support est franchie et que l’ADX est suffisamment grand.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Les calculs dynamiques de la ligne de tendance supérieure soutiennent la résistance, permettant de déterminer rapidement la rupture.

  2. L’indicateur ADX filtre efficacement les scénarios non tendanciels et réduit les transactions inefficaces.

  3. Les retraits et les pertes sont bons.

Analyse des risques

La stratégie présente également les risques suivants:

  1. Un saut en hauteur peut entraîner la défaillance de la ligne de tendance supérieure.

  2. Une mauvaise définition de la valeur ADX peut également affecter les performances de la stratégie.

  3. Les transactions à haute fréquence ont des frais plus élevés.

La réponse:

  1. Optimiser les hyperparamètres et élargir la largeur de rupture de manière appropriée.

  2. Les paramètres ADX sont mieux testés.

  3. Réduire de manière appropriée la fréquence des transactions.

Direction d’optimisation

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

  1. Optimiser les paramètres ATR pour rendre la ligne de résistance de support plus stable.

  2. Testez différents paramètres ADX pour trouver la valeur optimale

  3. Adhérer à un mécanisme d’arrêt des pertes pour contrôler les pertes ponctuelles

Résumer

Cette stratégie intègre les avantages de la ligne de tendance supérieure et de l’indicateur ADX. Elle permet de calculer dynamiquement la résistance à l’appui pour déterminer le moment du retournement de tendance, en collaboration avec l’indicateur ADX pour filtrer les signaux de mauvaise qualité. Après optimisation des paramètres et ajustement du mécanisme, elle peut devenir une stratégie à haute fréquence stable et rentable.

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

//@version=4
strategy("STPP20 + ADX", overlay = true)

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

src =  input(close, title="EMA Source")
PPprd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50)
AtrFactor=input(defval = 5, title = "ATR Factor", minval = 1, step = 0.1)
AtrPd=input(defval = 20, title = "ATR Period", minval=1)

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

float center = na
center := center[1]
float lastpp = ph ? ph : pl ? pl : na
if lastpp
    if na(center)
        center := lastpp
    else
        center := (center * 2 + lastpp) / 3

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

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

// 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 = 25
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? 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 = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, lenADX)


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

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


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

if (buy)
    // .order // Tuned version
    strategy.entry("Buy", strategy.long)


if (sell) and (strategy.position_size > 0)
    strategy.order("Sell", false, when = sell)