
La estrategia se basa en el principio cruzado de las medias móviles rápidas y las medias móviles lentas para generar señales de compra. Cuando las medias móviles rápidas cruzan las medias móviles lentas desde abajo, se genera una señal de compra; cuando las medias móviles rápidas cruzan las medias móviles lentas desde arriba, se genera una señal de venta.
La estrategia utiliza la función sma para calcular las medias móviles rápidas y las medias móviles lentas. Fast_SMA es una media móvil rápida con una longitud de ciclo de fast_SMA_input; slow_SMA es una media móvil lenta con una longitud de ciclo de slow_SMA_input.
Las estrategias utilizan las funciones de cruz y cruzador para determinar el cruce entre las medias móviles rápidas y las medias móviles lentas. Cuando se cruza una media móvil lenta sobre una media móvil rápida, la variable LONG es verdadera y genera una señal de compra; cuando se cruza una media móvil lenta debajo de una media móvil rápida, la variable SHORT es verdadera y genera una señal de venta.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene los siguientes riesgos:
Los métodos para controlar el riesgo:
La estrategia puede ser optimizada en los siguientes aspectos:
La estrategia utiliza las ventajas de las medias móviles para generar señales de negociación de manera simple y eficiente. Aunque existen algunos riesgos, se pueden mejorar mediante la optimización de los parámetros, el aumento de las condiciones de filtración, etc. La estrategia de cruce de medias móviles merece más investigación y aplicación.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@author Jacques Grobler
//
// SIMPLE CROSS OVER BOT
// =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be
// uncommented in order to use for back testing, same goes for using the script portion
///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)
// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)
///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)
// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")
///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)
///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)
///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true
strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())
// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")
///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)