Basado en la estrategia de doble media móvil


Fecha de creación: 2024-02-21 14:43:26 Última modificación: 2024-02-21 14:43:26
Copiar: 0 Número de Visitas: 606
1
Seguir
1617
Seguidores

Basado en la estrategia de doble media móvil

Descripción general

Esta estrategia utiliza dos medias móviles para formar canales para capturar la dirección de la tendencia. Se genera una señal de negociación cuando el precio se rompe el canal. Al mismo tiempo, se combina con el indicador RSI para filtrar falsas rupturas.

Principio de estrategia

La estrategia utiliza dos promedios móviles de 5 longitudes, uno calculado a partir de los precios más altos y otro a partir de los precios más bajos, para formar un canal de precios. Cuando el precio de cierre rompe el canal de arriba, hace más, y cuando rompe el canal de abajo, hace nada.

Para filtrar las brechas falsas, también se introduce el indicador RSI para juzgar la sobrecompra y la sobreventa. Solo haga más cuando el RSI esté por encima de 80 y haga menos cuando esté por debajo de 20.

Además, la estrategia solo opera durante el horario de Londres (de 3 a.m. a 11 a.m.), con un máximo de 5 órdenes por día y una pérdida máxima de no más del 2% de los intereses sobre las acciones.

Análisis de las ventajas

Capturar las tendencias

Las medias móviles dobles construyen canales de tendencia, lo que permite determinar mejor la dirección de la tendencia de los precios. Cuando los precios se elevan, se captura la tendencia ascendente de los precios; Cuando los precios se elevan, se captura la tendencia descendente de los precios.

Reducción de las brechas falsas

La combinación de los indicadores RSI para determinar las zonas de sobreventa y sobrecompra puede reducir en cierta medida las brechas falsas causadas por los movimientos de precios.

Control eficaz de los riesgos

La estrategia solo opera en los períodos de mayor actividad comercial, con un máximo de 5 órdenes por día para controlar eficazmente la frecuencia de las operaciones; la configuración de pérdidas máximas del 2% permite controlar las pérdidas máximas diarias en un rango aceptable.

Análisis de riesgos

El riesgo de una falsa brecha en el momento de una gran oscilación de precios

Cuando los precios se mueven a gran escala, puede haber una cierta señal de falsa ruptura, lo que puede conducir a pérdidas innecesarias en las operaciones. Se puede reducir este riesgo optimizando los parámetros de ajuste o añadiendo condiciones de filtración.

El Stop Loss fijo evita que los inversores se arriesguen

La estrategia utiliza un número fijo de puntos para detener los pérdidas. Cuando los precios fluctúan mucho, los puntos fijos para detener los pérdidas son fácilmente cubiertos, y se utiliza un porcentaje o un stop loss dinámico.

Riesgo de la hora de negociación limitada

La estrategia de abrir posiciones solo en un período de negociación fijo, si no se genera una señal en ese período, se perderán oportunidades de negociación potenciales en otros períodos. Se puede considerar ampliar adecuadamente el tiempo de negociación o ajustarlo dinámicamente según la situación en tiempo real.

Dirección de optimización

Optimización de parámetros

Se puede optimizar la longitud de las medias móviles, los parámetros RSI, el número de puntos de parada fijos, etc., para encontrar la combinación óptima de parámetros.

Añadir condiciones de filtración

Se pueden agregar otros indicadores o condiciones para la segunda comprobación de las señales de ruptura, como aumentar el volumen de transacciones, reducir el canal de la línea de Brin, etc., para reducir las falsas rupturas.

Parador de pérdida dinámica

Se puede emplear una estrategia de stop loss porcentual o stop loss dinámico, en lugar de un simple stop loss de puntos fijos, para proteger mejor el riesgo de una acción unilateral.

Junto con el juicio artificial.

Revise la señal manualmente o ingrese solo después de la confirmación de la brecha para evitar ser bloqueado.

Resumir

Esta estrategia es en general más sencilla y práctica, a través de la construcción de una doble media móvil para determinar la dirección de la tendencia; al mismo tiempo, el indicador RSI puede filtrar de manera efectiva algunos falsos saltos. En cuanto al control del riesgo, limitar el tiempo de negociación y la pérdida máxima puede controlar el riesgo general. El espacio de optimización es relativamente grande y se puede mejorar en términos de optimización de parámetros, actualización del mecanismo de detención de pérdidas, etc.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-16 23:59:59
period: 1h
basePeriod: 15m
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/
// © SoftKill21
//@version=4
strategy(title="Moving Average", shorttitle="MA", overlay=true)
timeinrange(res, sess) => time(res, sess) != 0
len = input(5, minval=1, title="Length")
src = input(high, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out = sma(src, len)
plot(out, color=color.white, title="MA", offset=offset)

len2 = input(5, minval=1, title="Length")
src2 = input(low, title="Source")
offset2 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out2 = sma(src2, len2)
plot(out2, color=color.white, title="MA", offset=offset2)

length = input( 5 )
overSold = input( 10 )
overBought = input( 80 )
price = input(close, title="Source RSI")

vrsi = rsi(price, length)

longcond= close > out and close > out2 and vrsi > overBought
shortcont = close < out and close < out2 and vrsi < overSold
tp=input(150,title="tp")
sl=input(80,title="sl")


strategy.entry("long",1,when=longcond)
//strategy.close("long",when= close < out2)
strategy.exit("long_exit","long",profit=tp,loss=sl)

strategy.entry("short",1,when=shortcont)
//strategy.close("short",when=close >out)
strategy.exit("short_exit","short",profit=tp,loss=sl)

// maxOrder = input(6, title="max trades per day")
// maxRisk = input(2,type=input.float, title="maxrisk per day")
// strategy.risk.max_intraday_filled_orders(maxOrder)

// strategy.risk.max_intraday_loss(maxRisk, strategy.percent_of_equity)


// strategy.close_all(when =not timeinrange(timeframe.period, "0300-1100"))