72s: promedio móvil del casco adaptativo +

El autor:¿ Qué pasa?, Fecha: 26 de mayo de 2022 17:17:37
Las etiquetas:HMAEl ATR

Una cuestión difícil para los operadores principiantes es diferenciar las condiciones del mercado, si el mercado actual está dando o no la mejor posibilidad de acumular ganancias, lo antes posible, en el menor tiempo posible, o no.

En el intradiario, hemos visto que algunas acciones grandes de los grandes bancos pueden definirse o circular por HMA 200. He estado pensando en hacer que los visuales se ajusten más a la dinámica de precios (separando el movimiento principal y el ruido menor) para obtener señales más claras de cuándo comienza a suceder.

Este HMA adaptativo está utilizando la nueva característica de Pine Scripts que ahora admite argumentos de longitud dinámica para varias funciones de Pine. (leer:https://www.tradingview.com/blog/en/pine...). No ha soportado directamente el HMA () incorporado, pero afortunadamente podemos usar su fórmula wma () para construir. (Nota: He modificado un poco la fórmula HMA ya popular aquí usando int)) en lugar de redondo)) en su longitud de wmas, ya que me parece que coincide con precisión con el tradingviews incorporado en HMA').

Puede elegir a qué aspecto se adaptará el período de HMA adaptativo.

En este estudio lo presento con dos opciones: Volumen y Volatilidad. Se moverá más rápido o más lento dependiendo de la situación en la que se encuentre actualmente el aspecto. es decir: Cuando el volumen es generalmente bajo o no hay lecturas volátiles, el precio no se moverá mucho, por lo que el MA de adaptación se ralentizará al alargar dinámicamente el período de retroceso, y viceversa, y así sucesivamente.

Las marcas de color en el Adaptive se asemejan a la situación explicada anteriormente. Además, también la combino con el cálculo de la pendiente del MA para ayudar a medir la fuerza de la tendencia o las condiciones laterales / de choque.

De esta manera cuando lo usamos como soporte/resistencia dinámica será más visualmente confiable.

En segundo lugar, y lo que es más importante, podría ayudarnos a los comerciantes con una mejor información de probabilidad de si una operación debería o no valer la pena hacerse. es decir: Si en el mercado de tiempo medio no dará mucho movimiento, cualquier ganancia también sería tan grande.

Cómo utilizar: Aparte de un mejor soporte/resistencia dinámica y una confirmación de ruptura más clara, el MA tiene el siguiente color: Amarillo: El mercado está en consolidación o plano. Ya sea lateral, agitado o en movimientos relativamente pequeños. Si aparece en un mercado de tendencia, puede ser una señal temprana de que la tendencia actual podría estar a punto de cambiar su dirección, o confirmar un precio quebrado hacia otro lado. Verde claro o rojo claro: Indica si una tendencia se está formando pero todavía es relativamente débil (o se está debilitando), ya que no tiene volumen o volatilidad para apoyar. Verde oscuro o rojo oscuro: En este punto, podemos esperar un buen y fuerte movimiento de los precios.Si es lo suficientemente fuerte, muchas veces marca el inicio de una nueva tendencia importante de larga duración.

- ¿ Qué es eso? Cargador: Elige en qué aspecto debe conectarse tu HMA, de esta manera se adaptará a él. Periodo mínimo, período máximo: 172 - 233 es solo mi propia configuración para superar el HMA 200 estático para el intradía. Lo encuentro en mi estilo de negociación mejor en 15m tf en casi cualquier par, y 15m a 1H para algunas acciones. También funciona bien con el EMA 200 convencional, a veces como si funcionaran de manera conjunta para definir hacia dónde debería ir el precio. Pero puedes, por supuesto, experimentar con otros rangos, más amplios o más estrechos. Especialmente si ya tienes una estrategia establecida a seguir. Limite de la zona de consolidación: Esto tiene que ver con el cálculo de pendiente. Cuanto mayor sea el número significa que su MA necesita un mayor grado para definir el mercado está fuera del área plana (amarilla). Esto puede ser útil si es necesario para aligerar el filtro o viceversa. Coloración del fondo: Sólo otra coloración para ayudar a resaltar la diferencia en las condiciones del mercado.

Alertas: Hay dos alertas: Brecha de volumen: cuando el volumen se rompe por encima del promedio, y Medidor de volatilidad: cuando el mercado es más probable que esté a punto de tener su momento del gran cepillo de movimiento.

El uso: Muy muy buena entrada de compra para atrapar grandes movimientos al alza si:

  1. El precio está por encima de MA. (Es mejor cuando el precio también no es muy lejos de la distancia MA, o también puede utilizar oscilador de distancia para ayudar también)
  2. El color de HMA es de color verde oscuro, significa que está en el enchufe de carga con el aspecto que elijas.
  3. El índice de resistencia es superior a 50.

La señal de entrada de SELL clara es la misma que la de arriba, sólo lo contrario.

Prueba posterior

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)

Relacionados

Más.