72s: moyenne mobile de la coque adaptative +

Auteur:ChaoZhang est là., Date: le 26 mai 2022 à 17h37
Les étiquettes:HMAATR

Une question difficile pour les traders débutants est de différencier les conditions du marché, que le marché actuel offre ou non les meilleures possibilités d'accumuler des bénéfices, le plus tôt possible, dans les plus brefs délais, ou non.

Sur l'intraday, nous avons vu que certaines grandes actions des grandes banques peuvent être définies par HMA 200. J'ai pensé à rendre les visuels plus conformes à la dynamique des prix (séparant les mouvements majeurs et les bruits mineurs) pour obtenir des signes plus clairs de quand cela commence à se produire.

Cette HMA adaptative utilise la nouvelle fonctionnalité Pine Scripts qui prend désormais en charge les arguments Dynamic Length pour plusieurs fonctions Pine. (lire:https://www.tradingview.com/blog/en/pine...). Il n'a pas pris en charge directement la formule intégrée HMA (), mais heureusement, nous pouvons utiliser sa formule wma () pour construire. (Remarque: j'ai modifié un peu la formule HMA déjà populaire ici en utilisant int simple ()) au lieu de ronde ()) sur sa longueur wma (), car je trouve qu'elle correspond exactement à la formule intégrée HMA ().

Vous pouvez choisir l'aspect auquel s'adaptera la période d'AMH adaptative.

Dans cette étude, je le présente avec deux options: Volume et Volatilité. Il va se déplacer plus vite ou plus lentement en fonction de la situation dans laquelle l'aspect se trouve actuellement. c'est-à-dire: Lorsque le volume est généralement faible ou que les lectures volatiles ne sont pas là, le prix ne bougera pas beaucoup, de sorte que l'adaptation MA ralentira en allongeant dynamiquement la période de réflexion, et vice versa, et ainsi de suite.

Les marquages de couleur dans l'Adaptive ressemblent à la situation expliquée ci-dessus. en outre, je le combine également avec le calcul de la pente de l'AM pour aider à mesurer la force de la tendance ou les conditions latérales / décalées.

De cette façon, lorsque nous l'utilisons comme support/résistance dynamique, il sera plus fiable visuellement.

Deuxièmement, et plus important encore, il pourrait nous aider les traders avec une meilleure information de probabilité de savoir si oui ou non un commerce devrait même la peine d'être faite. i.e.: Si dans le temps moyen marché ne donnera pas beaucoup de mouvement, tout profit serait aussi seulement autant. Dans la plupart des cas, nous pourrions mieux sauver notre centime pour plus tard ou le placer ailleurs.

Comment utiliser: Outre un meilleur support/résistance dynamique et une confirmation de rupture plus claire, le MA est coloré comme suit: Jaune: Le marché est en consolidation ou plat. Qu'il soit latérale, agitée, ou dans des mouvements relativement petits. Si elle apparaît dans un marché tendance, il peut être un signe plus tôt que la tendance actuelle pourrait être sur le point de changer de direction, ou confirmant une rupture de prix vers un autre côté. Vert clair ou rouge clair: Indique si une tendance se forme mais reste relativement faible (ou s'affaiblit), car elle n'a ni volume ni volatilité à soutenir. Vert foncé ou rouge foncé: C'est là que nous pouvons nous attendre à une bonne et forte évolution des prix.

Paramètres: Chargeur: Choisissez l'aspect auquel votre HMA doit s'adapter, afin qu'il s'y adapte. Période minimale, période maximale: 172 - 233 est juste mon propre paramètre pour dépasser le HMA 200 statique pour l'intraday. Je trouve que dans mon style de trading le meilleur dans 15m tf dans presque n'importe quelle paire, et 15m à 1H pour certaines actions. Il fonctionne également bien avec l'EMA 200 conventionnel, parfois comme s'ils travaillaient un peu main dans la main pour définir où le prix devrait aller. Mais vous pouvez, bien sûr, expérimenter avec d'autres plages, plus larges ou plus étroites. Surtout si vous avez déjà une stratégie établie à suivre. Comme vous pouvez le faire avec: Seuil de zone de consolidation: Cela a à voir avec le calcul de la pente. Plus le nombre est grand, plus votre MA a besoin d'un degré plus grand pour définir le marché est hors de la zone plate (jaune). Cela peut être utile si nécessaire pour éclaircir le filtre ou vice versa. Couleur du fond: Juste une autre couleur pour aider à souligner la différence dans les conditions du marché.

Alertes: Il y a deux alertes: Brèche de volume: lorsque le volume se décompose au-dessus de la moyenne, et Mètre de volatilité: lorsque le marché est plus susceptible d'avoir son moment de la grande brosse se balançant.

Utilisation: Très très bonne entrée acheter pour attraper un grand mouvement à la hausse si:

  1. Le prix est au-dessus de MA. (Il est préférable que le prix ne soit pas trop éloigné de la MA, ou vous pouvez également utiliser l'oscillateur de distance pour aider aussi)
  2. La couleur de HMA est en vert foncé, ce qui signifie qu'il est sur la prise de charge avec l'aspect que vous avez choisi.
  3. L'indice de résistance est supérieur à 50.

Le signal d'entrée SELL est le même que ci-dessus, juste le contraire.

test de retour

img


/*backtest
start: 2022-04-25 00:00:00
end: 2022-05-24 23:59:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// 2020 © io72signals / Antorio Bergasdito

//@version=4
study("72s: Adaptive Hull Moving Average+", shorttitle="72s: Adaptive HMA+", overlay=true)

//Optional Inputs
charger     = input("Volatility", title="Choose which charger to adapt to:", options=["Volatility", "Volume"])
src         = input(close, title="Source:")
minLength   = input(172, title="Minimum period:")
maxLength   = input(233, title="Maximum period:")
adaptPct    = 0.03141 //input(3.141, minval = 0, maxval = 100, title="Adapting Percentage:") / 100.0

flat        = input(17, title="Consolidation area is when slope below:")

showMinor   = input(true, title="Show minor xHMA+", group="Minor Adaptive HMA+ Period")
minorMin    = input(89, title="Minimum:", group="Minor Adaptive HMA+ Period", inline="mHMA+")
minorMax    = input(121, title="Maximum:", group="Minor Adaptive HMA+ Period", inline="mHMA+")

showZone    = input(false, title="Show Adaptive HMA+ Distance Zone", group="DISTANCE ZONE")
mult        = input(2.7, title="Distance (Envelope) Multiplier", step=.1, group="DISTANCE ZONE") 

showSignals = input(true, title="Show Possible Signals", group="OTHER")
useBg       = input(true, title="Background color to differentiate movement", group="OTHER")

//Source to adapt to
highVolatility = atr(14) > atr(46)                  //Volatility Meter. Change it to match to your strat/pair/tf if needs.

rsivol  = rsi(volume,14)                            //RSI Volume Osc:
osc     = hma(rsivol,10)                            //Basically it's almost the same as: vol > ma(volume,20)
volBreak = osc > 49                                 //but smoothed using weight to filter noise or catch earlier signs.    

//Dynamics 
var float dynamicLength = avg(minLength,maxLength)
var float minorLength   = avg(minorMin,minorMax)
plugged = charger=="Volume"? volBreak : highVolatility
dynamicLength   := iff(plugged, max(minLength, dynamicLength * (1 - adaptPct)), min(maxLength, dynamicLength * (1 + adaptPct)))
minorLength     := iff(plugged, max(minorMin, minorLength * (1 - adaptPct)), min(minorMax, minorLength * (1 + adaptPct)))

//Slope calculation to determine whether market is in trend, or in consolidation or choppy, or might about to change current trend
slope_period = 34, range = 25, pi = atan(1) * 4
highestHigh = highest(slope_period), lowestLow = lowest(slope_period)
slope_range = range / (highestHigh - lowestLow) * lowestLow
calcslope(_ma)=>
    dt = (_ma[2] - _ma) / src * slope_range  
    c = sqrt(1 + dt * dt)
    xAngle = round(180 * acos(1 / c) / pi)
    maAngle = iff(dt > 0, -xAngle, xAngle)
    maAngle

//MA coloring to mark market dynamics 
dynColor(_ma,_col1a,_col1b, _col2a, _col2b, _col0) =>
    slope = calcslope(_ma)
    slope >= flat ? plugged? _col1a : _col1b :
     slope < flat and slope > -flat ? _col0 : 
     slope <= -flat ? plugged? _col2a : _col2b : _col0

//Adaptive HMA 
xhma(_src,_length) => _return = wma(2 * wma(_src, _length / 2) - wma(_src, _length), floor(sqrt(_length))) 

dynamicHMA  = xhma(src,int(dynamicLength))      //<--Batman - Our main xHMA+
minorHMA    = xhma(src,int(minorLength))        //<--Robin  - Faster minor xHMA+ (Optional). Can be use to assist for 
                                                //            faster entry, slower exit point, or pullbacks info too.

//Plot
plot(dynamicHMA, "Dynamic HMA+", dynColor(dynamicHMA, #6fbf73, #c0f5ae, #eb4d5c, #f2b1d4, color.yellow), 3)
plot(showMinor? minorHMA:na, "minor HMA+", dynColor(minorHMA, #6fbf73, #c0f5ae, #eb4d5c, #f2b1d4, color.yellow), 1)

//Backgroud coloring
notgreat = calcslope(dynamicHMA) < flat and calcslope(dynamicHMA) > -flat
bgcolor(useBg? plugged? na : notgreat? #757779: #afb4b9 : na)

// Comparative study
// staticHMA = hma(close, 200)
// plot(staticHMA,  "Static HMA")
// plotchar(dynamicLength, "dynamicLengthgth", "", location.top) //check output the calculated Dynamic Length in the Data Window.

//{ DISTANCE ZONE
// Envelope the main DynamicHMA with ATR band, just one way to approximate current price distance to MA. Other usages/methods may vary.
upperTL = dynamicHMA + mult * atr(40)        ,  lowerTL = dynamicHMA - mult * atr(40)           //<--Half distance zone
topTL = dynamicHMA + (mult*2) * atr(40)      ,  botTL = dynamicHMA - (mult*2) * atr(40)         //<--One distance zone
stopupperTL = dynamicHMA + (mult/2) * atr(40),  stoplowerTL = dynamicHMA - (mult/2) * atr(40)   //<--Half of the half. If need ie. tighter SL or trailing

// Plotting Distance Zone
plot(showZone?upperTL:na, color=color.green, transp=72)
plot(showZone?lowerTL:na, color=color.red,   transp=72)
plot(showZone?topTL:na, color=color.gray, transp=72)
plot(showZone?botTL:na, color=color.gray, transp=72)
sutl = plot(showZone?stopupperTL:na, color=color.white, transp=100)
sltl = plot(showZone?stoplowerTL:na, color=color.white, transp=100)
colZone = showZone? color.purple:color.new(color.white,100)
fill(sutl, sltl, color=colZone, transp=90)
//}

//{ SIGNALS
_slope = calcslope(dynamicHMA)

// Entry Base; When HMA+ turn to a darker color and market is out from low volatility. 
// Remember to also considering price distance to MA and strength (ie. RSI)
_upSig = _slope >=  flat and plugged
_dnSig = _slope <= -flat and plugged
buy  = _upSig and not _upSig[1] 
sell = _dnSig and not _dnSig[1] 

// Possible Exits. These only based on faster xHMA+
_upExit = _slope>=flat  and (not plugged) and close<minorHMA 
_dnExit = _slope<=-flat and (not plugged) and close>minorHMA 
fastExits  = (_upExit and not _upExit[1]) or (_dnExit and not _dnExit[1])

// Caution Sign. When Price crossed most outer distance zone. Could also be a good TP spot if your already in profit
_topWarn    = high>topTL
_botWarn    = low<botTL
warningSigns = (_topWarn and not _topWarn[1]) or (_botWarn and not _botWarn[1])

// Plot 'em up
atrPos = 0.72 * atr(5)
plotchar(showSignals and buy?  dynamicHMA-atrPos: na, color=color.green, location=location.absolute, char="⬆", size = size.tiny)
plotchar(showSignals and sell? dynamicHMA+atrPos: na, color=color.red,   location=location.absolute, char="⬇", size = size.tiny)
plotchar(showSignals and fastExits? _upExit? minorHMA+atrPos: _dnExit? minorHMA-atrPos: na: na, 
     color=_upExit?color.green:_dnExit?color.red: na, location=location.absolute, char="ⓧ", size=size.tiny)
plotchar(showSignals and warningSigns? _topWarn? high+atrPos: _botWarn? low-atrPos: na: na, 
     color=color.orange, location=location.absolute, char="⚠", size=size.tiny)
//} 

//{ ALERTS
// Previous alerts:
// alertcondition(highVolatility and not notgreat, "72s: Volatility Meter", "Market is on the move")
// alertcondition(volBreak[1] and volBreak and not notgreat, "72s: Volume Break", "Volume has just break above average")

// New Alert: 
// Delete what alert you don't need:
if buy 
    alert("Possible Buy Signal at" + tostring(close), alert.freq_once_per_bar_close)
if sell
    alert("Possible Sell Signal at" + tostring(close), alert.freq_once_per_bar_close)
    
if fastExits and _upExit
    alert("Price has just crossed down minor xHMA+ at" + tostring(close), alert.freq_once_per_bar_close)
if fastExits and _dnExit
    alert("Price has just crossed up minor xHMA+ at" + tostring(close), alert.freq_once_per_bar_close)
    
if warningSigns and _topWarn
    alert("Price has just crossed above top xHMA+ zone", alert.freq_once_per_bar_close)
if warningSigns and _botWarn
    alert("Price has just crossed below bottom xHMA+ zone", alert.freq_once_per_bar_close)
//}
    




if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Relationnée

Plus de