La estrategia de cruce de promedios móviles de Galileo Galilei es una estrategia de negociación basada en promedios móviles. Genera señales de negociación calculando la media móvil exponencial (EMA) durante un período especificado y comparando cruces entre la EMA y el precio. Las señales de venta se generan cuando el precio cae por debajo de la EMA desde arriba hacia abajo, mientras que las señales de compra se producen cuando el precio se rompe por encima de la EMA desde abajo hacia arriba.
El núcleo de la estrategia de Galileo Galilei se encuentra en el promedio móvil exponencial (EMA).
EMA de hoy = (Precio de cierre de hoy × Factor de suavización) + (EMA de ayer × (1 − Factor de suavización))
Donde el factor de suavizado α = (2/(número de períodos + 1))
La estrategia calcula dinámicamente la EMA basándose en los parámetros del período de entrada del usuario. Luego compara los cruces entre el precio y la EMA para determinar las señales comerciales:
Cuando el precio cae por debajo de la EMA desde arriba hacia abajo, se genera una señal de venta para la negociación corta.
Cuando el precio se rompe por encima de la EMA desde abajo, se activa una señal de compra para la negociación larga.
La estrategia también traza la línea EMA en el gráfico, junto con marcadores de flechas que indican señales de compra y venta.
La estrategia de cruce de la media móvil de Galileo Galilei tiene las siguientes ventajas:
Los riesgos potenciales de esta estrategia incluyen:
Algunas maneras de optimizar la estrategia:
Incorporar otros indicadores para construir una estrategia compuesta para aumentar la robustez frente a las falsas señales.
Se añaden mecanismos de stop loss como el stop loss de seguimiento o el stop loss basado en el porcentaje para controlar el importe de la pérdida de una sola operación.
Prueba las EMA con diferentes combinaciones de parámetros para encontrar ajustes óptimos.
Evaluar la lógica de reingreso para capturar rebotes después de las inversiones iniciales de precios, mejorando la rentabilidad.
El cruce de la media móvil de Galileo Galilei es una estrategia simple pero práctica con lógica clara y facilidad de operación. Es adecuado para operadores de cantidades novatos. Con mejoras continuas, su rendimiento podría ser cada vez superior con el tiempo.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h 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/ // © armigoldman //@version=3 strategy(title="Galileo Galilei", shorttitle="Galileo Galilei", overlay=true, initial_capital = 100000, default_qty_type=strategy.cash, default_qty_value = 100000) len = input(11, minval=1, title="Length") src = input(open, title="Source") out = ema(src, len) plot(out, title="EMA", color=yellow) //last8h = highest(close, 8) //lastl8 = lowest(close, 8) //plot(last8h, color=red, linewidth=2) //plot(lastl8, color=green, linewidth=2) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval=1, title="From Day", minval=1, maxval=31) fromMonth = input(defval=1, title="From Month", minval=1, maxval=12) fromYear = input(defval=2020, title="From Year", minval=1970) // To Date Inputs toDay = input(defval=1, title="To Day", minval=1, maxval=31) toMonth = input(defval=12, title="To Month", minval=1, maxval=12) toYear = input(defval=2021, title="To Year", minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true bearish = cross(close, out) == 1 and close[1] > close bullish = cross(close, out) == 1 and close[1] < close plotshape(bearish, color=white, style=shape.arrowdown, text="BEAR", location=location.abovebar) plotshape(bullish, color=white, style=shape.arrowup, text="BULL", location=location.belowbar) buy = if cross(close, out) == 1 and close[1] < close strategy.entry("BUY", strategy.long, when=time_cond) //strategy.close_all(when=bearish) // strategy.exit("exit", "Long", profit =, loss = 35) sell = if cross(close, out) == 1 and close[1] > close strategy.entry("SELL", strategy.short, when=time_cond) //sell = if bearish //strategy.close_all(when=bullish) // strategy.exit("exit", "Long", profit = bullish, loss = 100) profit = strategy.netprofit if not time_cond strategy.close_all() //plotshape(true, style=shape.triangleup, location=location.abovebar)