Stratégie de prix adaptative


Date de création: 2023-12-04 16:33:45 Dernière modification: 2023-12-04 16:33:45
Copier: 0 Nombre de clics: 634
1
Suivre
1619
Abonnés

Stratégie de prix adaptative

Aperçu

La stratégie est une stratégie de canal de prix adaptative basée sur l’indicateur de la portée réelle moyenne (ATR) et l’indicateur de la direction moyenne (ADX). Elle vise à identifier le marché et les tendances de la correction des mouvements de prix et à négocier en conséquence.

Principe de stratégie

  1. Calculer les prix maximum ((HH) et minimum ((LL) de la plus récente ligne racine de longueur K. Calculer également l’ATR de la ligne racine de longueur K.

  2. Calculer +DI et -DI en fonction de la hausse et de la baisse du prix, puis calculer ADX.

  3. Si l’ADX < 25, le marché est considéré comme clos. Si le prix de clôture est supérieur à la limite supérieure de la chaîne de prix, alors HH - ATR multiplié par*ATR), faites plus; si le prix de clôture est inférieur au seuil inférieur du canal de prix (LL + ATR multiplié par*Il y a un an, j’ai été invité par un ami.

  4. Si l’ADX est supérieur à 25 et +DI est supérieur à -DI, il s’agit d’un marché haussier.

  5. Si ADX >=25 et +DI<-DI, le marché est considéré comme vide. Si le prix de clôture est inférieur au seuil inférieur du canal de prix, le marché est vide.

  6. Si la ligne K de la racine de la longueur de sortie n’est pas arrêtée après l’entrée dans la position, le placement de rupture forcé est effectué.

Analyse des avantages

  1. Cette stratégie s’adapte automatiquement à l’environnement du marché. Elle utilise une stratégie de passage des prix dans le marché de la consolidation, et suit la direction de la tendance dans le marché de la tendance.

  2. L’utilisation des indicateurs ATR et ADX assure l’auto-adaptation de la stratégie. L’ATR est utilisé pour ajuster la largeur des canaux de prix et l’ADX pour juger de la tendance du marché.

  3. Les mécanismes de stop-loss contribuent à la stabilité de la stratégie.

Analyse des risques

  1. Le jugement ADX est plus susceptible de produire un signal erroné.

  2. Une mauvaise configuration des indicateurs ATR et ADX peut entraîner une mauvaise efficacité stratégique.

  3. Le risque de ne pas pouvoir éviter efficacement les changements de comportement.

Direction d’optimisation

  1. Optimiser les paramètres des indicateurs ATR et ADX pour améliorer l’efficacité de l’adaptation.

  2. Augmentation de la ligne de stop-loss pour réduire le risque de pertes.

  3. Ajout de conditions de filtre pour filtrer les signaux d’erreur.

Résumer

La stratégie d’auto-adaptation des canaux de prix utilise de multiples indicateurs et mécanismes, adopte différentes stratégies dans différents environnements, a une certaine adaptabilité et stabilité. Cependant, en raison de la limitation de la configuration des indicateurs et du choix des paramètres, la stratégie est également confrontée à un certain risque d’erreur de jugement.

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

//@version=5
strategy("Adaptive Price Channel Strategy", overlay=true)

length = input(20, title="Length")
exit_length = input(10, title="Exit After X Periods")
atr_multiplier = input(3.2, title="ATR Multiplier")

startDate = input(defval = timestamp("2019-01-15T08:15:15+00:00"), title = "Start Date")
endDate = input(defval = timestamp("2033-04-01T08:15:00+00:00"), title = "End Date")

hh = ta.highest(high, length)
ll = ta.lowest(low, length)
atr = ta.atr(length)

// calculate +DI and -DI
upMove = high - high[1]
downMove = low[1] - low
plusDM = na(upMove[1]) ? na : (upMove > downMove and upMove > 0 ? upMove : 0)
minusDM = na(downMove[1]) ? na : (downMove > upMove and downMove > 0 ? downMove : 0)
plusDI = ta.rma(plusDM, length) / atr * 100
minusDI = ta.rma(minusDM, length) / atr * 100

// calculate ADX
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, length)

var int barSinceEntry = na

if (not na(close[length]) )
    if (adx < 25) // Sideways market
        if (close > hh - atr_multiplier * atr)
            strategy.entry("PChLE", strategy.long, comment="PChLE")
            barSinceEntry := 0
        else if (close < ll + atr_multiplier * atr)
            strategy.entry("PChSE", strategy.short, comment="PChSE")
            barSinceEntry := 0
    else if (adx >= 25 and plusDI > minusDI) // Bullish market
        if (close > hh - atr_multiplier * atr)
            strategy.entry("PChLE", strategy.long, comment="PChLE")
            barSinceEntry := 0
    else if (adx >= 25 and plusDI < minusDI) // Bearish market
        if (close < ll + atr_multiplier * atr)
            strategy.entry("PChSE", strategy.short, comment="PChSE")
            barSinceEntry := 0

if (na(barSinceEntry))
    barSinceEntry := barSinceEntry[1] + 1
else if (barSinceEntry >= exit_length)
    strategy.close("PChLE")
    strategy.close("PChSE")
    barSinceEntry := na

plot(hh, title="Highest High", color=color.green, linewidth=2)
plot(ll, title="Lowest Low", color=color.red, linewidth=2)