Tendencia siguiendo una estrategia basada en zonas de fricción de precios

El autor:¿ Qué pasa?, Fecha: 2023-09-20 16:46:17
Las etiquetas:

Resumen general

Esta estrategia mide el tiempo de permanencia de los precios en diferentes zonas para identificar áreas de baja fricción y las rupturas comerciales en estas zonas.

Estrategia lógica

  1. Calcular la relación de mantenimiento de precios alrededor de los niveles actuales durante los últimos N períodos como fricción de precios.

  2. Identificar si el precio entra en zonas de baja fricción con un tiempo mínimo de espera recientemente.

  3. Utilice MA ponderado rápido para determinar la dirección de la tendencia reciente.

  4. Tome ganancias cuando el precio vuelva a entrar en zonas de alta fricción anticipándose a una inversión de tendencia.

  5. Los parámetros personalizables incluyen el retroceso de fricción, la zona de ruptura, etc.

Ventajas

  1. La fricción de precios evita mercados variados y encuentra zonas de brote de tendencia.

  2. El MA rápido se combina con la fricción para determinar la dirección.

  3. Visuales intuitivos que muestran los niveles de fricción de precios.

  4. Parámetros predeterminados optimizados para el comercio de criptomonedas de alta frecuencia.

  5. Lógica simple y clara fácil de comprender y personalizar.

Los riesgos

  1. La fricción de los precios no puede predecir completamente los movimientos futuros.

  2. El MA rápido puede producir un tiempo inexacto.

  3. Infecundidad en el allanamiento de entradas y salidas de operaciones.

  4. La optimización corre el riesgo de sobreajuste.

  5. Los parámetros fijos pueden tener un rendimiento inferior en mercados volátiles.

Mejoramiento

  1. Prueba diferentes períodos para calcular la fricción de los precios.

  2. Evaluar los diferentes tipos de AUM para determinar la tendencia reciente.

  3. Optimice los parámetros de la zona de escape para una mayor estabilidad.

  4. Agregue stop loss y take profit para la gestión de riesgos.

  5. Considere los parámetros dinámicos para adaptarse a los mercados cambiantes.

  6. Prueba de retroceso en más símbolos y marcos de tiempo.

Conclusión

Esta estrategia opera en zonas de fricción de precios con alto potencial de ruptura de probabilidad, con pros y contras.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//made for 30m chart with BTCUSD or other cryptocurrency
strategy("LUBE",overlay=false )
friction=0.0
barsback=input(500,"bars back to measure friction",step=100)
flevel=input(50,"0-100 friction level to stop trade",step=2)
tlevel=input(-10,"pic lower than 0 to number selected above to initiate trade",step=2)
fl=flevel/100
tl=tlevel/100

for i = 1 to barsback
    friction := if high[i] >= close and low[i] <= close 
        friction+(1+barsback)/(i+barsback)
    else
        friction

range=input(100,"bars back to measure lowest friction",step=10)
lowf = lowest(friction,range)
highf = highest(friction,range)
midf = (lowf*(1-fl)+highf*fl)
lowf2 = (lowf*(1-tl)+highf*tl)
plot(friction)
m=plot(midf[5],color=color.red)
l=plot(lowf2[5],color=color.white)
h=plot(highf[5],color=color.white)
fill(l,h,color.white)

src = input(title="Source", type=input.source, defval=close)

//FIR Filter
_fir(src) =>
    (4 * src + 3 * nz(src[1]) + 2 * nz(src[2]) + nz(src[3])) / 10

fir = _fir(src)

trend =  fir > fir[1]? 1:-1

//bgcolor(trend==1?color.lime:color.red,transp=50)

long=friction<lowf2[5] and trend == 1
short=friction<lowf2[5] and trend == -1
end=friction > midf[5]

keeplong=0
keeplong:=long?1:nz(keeplong[1])
keeplong:=short or end?0:keeplong

keepshort=0
keepshort:=short?1:nz(keepshort[1])
keepshort:=long or end?0:keepshort

bgcolor(keeplong==1?color.lime:keepshort==1?color.red:na,transp=50)

leverage=input(2,"leverage",step=.5)
enableshort=input(true,"enable shorts?")

barcount=0
barcount:=nz(barcount[1])+1

contracts=min(max(.000001,(strategy.equity/close)*leverage),50000)
strategy.entry("Long",strategy.long,when=long and barcount>20, qty=contracts)

strategy.close("Long",when=short or end )

strategy.entry("Short",strategy.short,when=short and enableshort==true and barcount>20, qty=contracts)

strategy.close("Short",when=(long or end) and enableshort==true)

alertcondition(keeplong==1 and keeplong[1]==0,"LONG")
alertcondition(keepshort==1 and keepshort[1]==0,"SHORT")
alertcondition((keeplong[1]==1 or keepshort[1]==1) and (keeplong==0 and keepshort==0),"CLOSE TRADE")


Más.