
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Revise la señal manualmente o ingrese solo después de la confirmación de la brecha para evitar ser bloqueado.
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.
/*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"))