
La estrategia de cruce de medias móviles es una estrategia de negociación cuantitativa basada en medias móviles. La estrategia genera ganancias al calcular el precio promedio de los valores durante un período de tiempo y aprovechar las cruces de medias móviles de los precios para generar señales de negociación.
La estrategia utiliza principalmente el cruce de las medias móviles rápidas y las medias móviles lentas para determinar la tendencia de los precios y generar señales de negociación. En concreto, se utiliza una media móvil de dos longitudes de período diferentes, como la línea de 10 días y la línea de 20 días.
Cuando el promedio móvil rápido rompe el promedio móvil lento desde la dirección inferior, se considera que el movimiento se ha convertido de baja a baja, produciendo una señal de compra. Cuando el promedio móvil rápido cae desde la dirección superior y rompe el promedio móvil lento, se considera que el movimiento se ha convertido de baja a baja, produciendo una señal de venta.
Al capturar los puntos de inflexión de las tendencias de los precios, la estrategia permite comprar cuando las cosas van bien y vender cuando las cosas van mal, para obtener ganancias.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene los siguientes riesgos:
Estos riesgos se pueden mitigar mediante la optimización adecuada.
La estrategia puede ser optimizada en las siguientes direcciones:
Con estas optimizaciones, se puede mejorar considerablemente la efectividad de la estrategia en el disco.
La estrategia de cruce de media móvil es una estrategia de comercio cuantitativa que es fácil de dominar e implementar en general. Utiliza el principio de cruce de la media de precios para juzgar de manera simple e intuitiva el movimiento del mercado y generar señales de comercio.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 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/
// © HPotter
// Simple SMA strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
if (UseTPSL)
strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0 and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)