Esta estrategia utiliza técnicas simples de cruce de promedios móviles y doble toma de ganancias para controlar el riesgo y aumentar la rentabilidad.
La estrategia se basa en el cruce de EMA y WMA para determinar las tendencias del mercado.
Al entrar, se establecen dos niveles de take profit. El primer take profit se fija al precio de entrada + 20 pips, y el segundo take profit se fija al precio de entrada + 40 pips. Mientras tanto, se coloca un stop loss al precio de entrada - 20 pips.
Cuando el precio alcanza el primer take profit, se cerrará la mitad de la posición.
Hay tres resultados posibles para cada operación:
El precio alcanza el stop loss, toma una pérdida del 2% directamente.
Primero golpea el precio, primero obtiene ganancias, cierra la mitad de la posición y obtiene un 1% de ganancias, luego sigue corriendo hasta que se detiene, terminando con el punto de equilibrio.
Después de golpear el primer take profit, el precio sigue funcionando y golpea el segundo take profit, terminando con 1% + 2% = 3% de ganancia total.
La mayor ventaja de esta estrategia de doble toma de ganancias es que controla el riesgo y evita grandes pérdidas individuales.
En comparación con el single take profit/stop loss, esta estrategia tiene tres resultados: pérdida, ganancia o equilibrio, lo que reduce la probabilidad de stop loss.
La EMA y la WMA son indicadores bien conocidos que son fáciles de entender. La lógica take profit/stop loss es sencilla de controlar.
A pesar de las ventajas, también hay riesgos que deben tenerse en cuenta para esta estrategia.
En primer lugar, como indicadores de medias móviles, la EMA y la WMA tienen capacidades relativamente débiles para identificar el mercado de los rangos.
En segundo lugar, es posible que los niveles fijos de toma de ganancias/detención de pérdidas no se adapten a la volatilidad del mercado.
Por último, la estrategia no puede responder a acontecimientos inesperados, con el riesgo de quedar atrapado.
Hay varios aspectos para optimizar aún más la estrategia:
Mejorar las señales de entrada. Prueba mejores indicadores de media móvil o tendencia que EMA y WMA para generar señales de mayor calidad.
Utilice métodos como ATR, stop loss posterior, etc. para hacer que los niveles de ganancia/pérdida se adapten a los mercados.
Añadir filtros. Requerir el volumen o la confirmación del indicador secundario antes de cruzar para evitar trampas. También considerar si el comercio alrededor de los eventos principales.
Optimizar el tamaño de las posiciones, ajustar el tamaño de las posiciones de acuerdo con las reglas de gestión de capital.
En resumen, esta es una estrategia de seguimiento de tendencias simple y práctica. Utiliza el cruce de EMA y WMA para las entradas y la doble toma de ganancias para controlar los riesgos. En comparación con las estrategias tradicionales, tiene una mayor tasa de ganancia y un menor riesgo. Por supuesto, se deben tener en cuenta las limitaciones de los indicadores y la configuración de ganancias / pérdidas.
/*backtest start: 2023-11-06 00:00:00 end: 2023-11-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("FS ATR & PS (MA)", overlay=true) // Strategy Buy = input(true) Sell = input(true) // Time Period start_year = input(title='Start year' ,defval=2019) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_hour = input(title='Start hour ' ,defval=0) start_minute = input(title='Start minute' ,defval=0) end_time = input(title='set end time?',defval=false) end_year = input(title='end year' ,defval=2019) end_month = input(title='end month' ,defval=12) end_day = input(title='end day' ,defval=31) end_hour = input(title='end hour' ,defval=23) end_minute = input(title='end minute' ,defval=59) // MA ema_period = input(title='EMA period',defval=10) wma_period = input(title='WMA period',defval=20) ema = ema(close,ema_period) wma = wma(close,wma_period) // Entry Condition longCondition = crossover(ema,wma) and Buy and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) shortCondition = crossunder(ema,wma) and Sell and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) // Exit Condition a = input(20)*10 b = input(40)*10 c = a*syminfo.mintick d = b*syminfo.mintick long_stop_level = float(na) long_profit_level1 = float(na) long_profit_level2 = float(na) long_even_level = float(na) short_stop_level = float(na) short_profit_level1 = float(na) short_profit_level2 = float(na) short_even_level = float(na) long_stop_level := longCondition ? close - c : long_stop_level [1] long_profit_level1 := longCondition ? close + c : long_profit_level1 [1] long_profit_level2 := longCondition ? close + d : long_profit_level2 [1] long_even_level := longCondition ? close + 0 : long_even_level [1] short_stop_level := shortCondition ? close + c : short_stop_level [1] short_profit_level1 := shortCondition ? close - c : short_profit_level1 [1] short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1] short_even_level := shortCondition ? close + 0 : short_even_level [1] // Position Sizing Risk = input(defval=10, title="Risk per trade%", step=1, minval=0, maxval=100)/100 size = 1 // Strategy if longCondition strategy.entry("Buy" , strategy.long, qty=size) strategy.exit ("Exit1", stop=long_stop_level, limit=long_profit_level1, qty=size/2) strategy.exit ("Exit2", stop=long_stop_level, limit=long_profit_level2) if shortCondition strategy.entry("Sell" , strategy.short, qty=size) strategy.exit ("Exit3", stop=short_stop_level, limit=short_profit_level1, qty=size/2) strategy.exit ("Exit4", stop=short_stop_level, limit=short_profit_level2) // Plot plot(strategy.position_size <= 0 ? na : long_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level1 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level2 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level1, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level2, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(ema,color=#00ced1) plot(wma,color=#dc143c)