
La estrategia utiliza el cruce de señales de las medias móviles lisas de 50 períodos (SMMA) y las medias móviles simples de 20 períodos (SMA) para determinar el momento de comprar y vender. La estrategia genera una señal de compra cuando la SMA rápida se rompe hacia arriba con la SMA lenta; genera una señal de venta cuando la SMA baja y rompe la SMMA.
se puede probar una combinación de diferentes parámetros (número de ciclos, condiciones de filtración, etc.) para encontrar el parámetro óptimo;
Se puede combinar con otros factores para filtrar la señal, como por ejemplo, un aumento en el volumen de transacciones;
la búsqueda de los parámetros óptimos mediante herramientas de optimización de parámetros;
Se pueden considerar otros métodos de frenado, como el frenado móvil o el frenado proporcional.
El stop loss dinámico se puede calcular combinando con la volatilidad del mercado.
La estrategia es sencilla en su funcionamiento general y captura la dirección de la tendencia a través de dos líneas de equilibrio; la aplicación flexible de paradas fijas y paradas dinámicas para bloquear las ganancias y controlar el riesgo, el riesgo y la ganancia y. La estrategia de rebasamiento puede adaptarse aún más al entorno de mercado más amplio mediante la optimización de parámetros y reglas.
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true)
// Define 50 SMMA
smma50 = sma(close, 50)
// Define 20 SMA
sma20 = sma(close, 20)
// Plotting the SMMA and SMA
plot(smma50, color=color.blue, title="50 SMMA")
plot(sma20, color=color.red, title="20 SMA")
// Initialize TP and SL variables
tp = 150
var float sl_price = na
// Buy Signal
buySignal = crossover(sma20, smma50)
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price)
// Sell Signal
sellSignal = crossunder(sma20, smma50)
strategy.entry("Sell", strategy.short, when = sellSignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price)
// Update stop loss level on every crossover
if (buySignal or sellSignal)
sl_price := close[bar_index + 1]
// Plot Stop Loss level
plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)