Estrategia de scalping intradiario de seguimiento de tendencias en múltiples marcos temporales


Fecha de creación: 2023-11-16 17:47:06 Última modificación: 2023-11-16 17:47:06
Copiar: 1 Número de Visitas: 768
1
Seguir
1617
Seguidores

Estrategia de scalping intradiario de seguimiento de tendencias en múltiples marcos temporales

Descripción general

Esta estrategia utiliza un indicador de promedio móvil combinado con varios marcos de tiempo para determinar la consistencia de la tendencia entre varios marcos de tiempo.

Principio de estrategia

Esta estrategia construye señales de negociación utilizando promedios móviles de 8 y 20 periodos en cuatro marcos de tiempo de 5 minutos, 15 minutos, 30 minutos y 60 minutos. Se genera una señal de compra cuando se atraviesa una media móvil de 20 días sobre una media móvil de 8 días más corta; se genera una señal de venta cuando se atraviesa una media móvil de 20 días por debajo de una media móvil de 8 días.

La estrategia requiere que las señales de transacción de los intervalos de tiempo de 5, 15, 30 y 60 minutos sean consistentes para emitir órdenes de negociación. Es decir, una operación de compra o venta solo se realizará cuando las medias móviles de los cuatro intervalos de tiempo coincidan con las señales de compra o venta.

Después de entrar en una posición, la estrategia establece un parón con un punto de ventaja fijo en el parón, para realizar operaciones de escalping en el día.

Concretamente, la estrategia obtiene datos de promedios móviles en diferentes marcos de tiempo mediante la invocación de la función de seguridad. Calcula la diferencia entre los promedios de 8 y 20 días de 5 minutos, 15 minutos, 30 minutos y 60 minutos y traza la curva de diferencia.

Juzga las señales de compra y venta en función de si la curva de diferencia cruza o no el eje cero. Y establece varios indicadores de islong e isshort para registrar las señales de negociación en cada marco de tiempo. Finalmente, emite instrucciones de entrada y salida cuando los estados de islong e isshort cumplen con los requisitos.

Después de la entrada, la estrategia establece un parón de puntos fijos a través de la función strategy.exit para realizar la operación de scalping.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El diseño de un marco de tiempo múltiple, mediante el juicio integral de los diferentes indicadores de ciclo, puede filtrar eficazmente los fraudes y reducir la frecuencia de las transacciones.

  2. Las estrategias de scalping en el día, la optimización de los beneficios y la acumulación de pequeñas ganancias.

  3. La estructura del código es clara, cada parte de la función es clara, fácil de entender y optimizar.

  4. Las condiciones establecidas son razonables y permiten controlar eficazmente el riesgo de las transacciones.

Análisis de riesgos

La estrategia también tiene ciertos riesgos:

  1. El diseño de múltiples marcos de tiempo puede filtrar parte del ruido, pero también puede pasar por alto algunos detalles que provocan cambios de tendencia que no son evidentes.

  2. El scalping diurno implica operaciones frecuentes, por lo que es necesario tener en cuenta el control de los costos de las transacciones.

  3. La fijación del punto de parada no es lo suficientemente flexible para adaptarse a los cambios en el mercado.

  4. La dependencia de los indicadores para generar señales de comercio puede ser engañosa.

Dirección de optimización

Esta estrategia puede ser optimizada en los siguientes aspectos:

  1. Añadir más indicadores para diferentes períodos de tiempo, lo que hace que la señal sea más estable y confiable.

  2. Optimización de la estrategia de paradas y configuración del punto de paradas en función de la dinámica ATR.

  3. Se añaden condiciones adicionales para filtrar el momento de entrada, como el aumento del volumen de transacciones, la ruptura de los máximos históricos, etc.

  4. Optimización de los parámetros periódicos de las medias móviles para encontrar la combinación óptima de parámetros.

  5. Aumentar el uso de modelos de aprendizaje automático para evaluar la fiabilidad de las señales de los indicadores y evitar el arbitraje.

Resumir

Esta estrategia en su conjunto es una estrategia típica de seguimiento de tendencias de múltiples marcos temporales, que obtiene ganancias mediante el uso de la estrategia de scalping en el día. La estrategia es clara, la estructura del código es razonable y merece ser probada y optimizada aún más.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="PeBAS $JPY Scalper 15m ",overlay=true) 
zeigeallebars= input(false, title="Zeige alle (Show all) Candles/Bars?")
profitwert=input(52, title="Profit")
myatr=  input(title="ATR", type=float, defval=0.00002, minval=0.00001,step=0.00001)


//Plot  EMA-Differenz Aktueller Timeframe

dif=(ema(close,8)+ema(close,20))/2
mcolor=ema(close,8) > ema(close,20) ? green : red
bs = ema(close,8) > ema(close,20) ? true : false
ThisATR=atr(16)

//trans = zeigeallebars == true ? 00 : 100
//plot(dif,"dif",color=mcolor,linewidth=6,transp=trans)


//1M EMA
htf_ma1Mema8 = ema(close, 5)
htf_ma1Mema20 = ema(close, 20)
ema81m=request.security(syminfo.tickerid, "1", htf_ma1Mema8)
ema201m=request.security(syminfo.tickerid, "1", htf_ma1Mema20)
dif1M = (ema81m + ema201m) / 2
Close1M = request.security(syminfo.tickerid, "1", close)
color1=ema81m > ema201m ? green : red
//plot(dif1M,"dif",color1,linewidth=6)
//plotshape(1, style=shape.cross, color=color1,location=location.top)
ls1 = ema81m > ema201m ? 1 : 0



//5M EMA

htf_ma5Mema8 = ema(close, 8)
htf_ma5Mema20 = ema(close, 20)
ema85m=request.security(syminfo.tickerid, "5", htf_ma5Mema8)
ema205m=request.security(syminfo.tickerid, "5", htf_ma5Mema20)
dif5M = (ema85m + ema205m) / 2
 
color5=ema85m > ema205m ? green : red
plot(dif5M,"dif",color5,linewidth=5)
ls5 = ema85m > ema205m ? 1 : 0
alert1= ema85m > ema205m and ema85m[1] < ema205m[1] ? 1 : 0
islong5 = ema85m > ema205m ? 1 : 0
isshort5 = ema85m < ema205m ? 1 : 0

//15M EMA

htf_ma15Mema8 = ema(close, 8)
htf_ma15Mema20 = ema(close, 20)
ema815m=request.security(syminfo.tickerid, "15", htf_ma15Mema8)
ema2015m=request.security(syminfo.tickerid, "15", htf_ma15Mema20)
dif15M = (ema815m + ema2015m) / 2
 
color15=ema815m > ema2015m ? green : red
plot(dif15M,"dif",color15,linewidth=3)
ls15= ema815m > ema2015m ? 1 : 0
alert2= ema815m > ema2015m and ema815m[1] < ema2015m[1] ? 1 : 0
islong15 = ema815m > ema2015m ? 1 : 0
isshort15 = ema815m < ema2015m ? 1 : 0





//30M EMA
htf_ma30Mema8 = ema(close, 8)
htf_ma30Mema20 = ema(close, 20)
ema830m=request.security(syminfo.tickerid, "30", htf_ma30Mema8)
ema2030m=request.security(syminfo.tickerid, "30", htf_ma30Mema20)
dif30M = (ema830m + ema2030m) / 2
 
color30=ema830m > ema2030m ? green : red
ls30= ema830m > ema2030m ?1 : 0
islong30 = ema830m > ema2030m ? 1 : 0
isshort30 = ema830m < ema2030m ? 1 : 0



//60M EMA

htf_ma60Mema8 = ema(close, 8)
htf_ma60Mema20 = ema(close, 20)
ema860m=request.security(syminfo.tickerid, "60", htf_ma60Mema8)
ema2060m=request.security(syminfo.tickerid, "60", htf_ma60Mema20)
dif60M = (ema860m + ema2060m) / 2
 
color60=ema860m > ema2060m ? green : red
ls60= ema860m > ema2060m ?1 : 0

islong60 = ema860m > ema2060m ? 1 : 0
isshort60 = ema860m < ema2060m ? 1 : 0

plot(dif60M,"dif",color60,linewidth=3,transp=70)

islong = islong5 ==1 and islong15 ==1 and islong60 ==1 and year > 2017 ? 1 : 0
isshort = isshort5 ==1 and isshort15 ==1 and  isshort60 ==1 and year > 2017 ? 1 : 0


condition2l= 0 
condition2s = 0

c= alert1 == alert2  and alert1[1] != alert2[1] ? 1 : 0
alertcondition(c, title='Da tat sich was ', message='Da tat sich was!')

strategy.entry("enter long", strategy.long,1,when = islong ==1 and islong[1] == 0  ) 
strategy.entry("enter short", strategy.short,1,when = isshort == 1  and isshort [1] == 0) 
strategy.exit("close",profit=profitwert)
strategy.exit("close",profit=profitwert)