Esta estrategia está diseñada en base a un promedio móvil simple (SMA) y un índice de resistencia relativamente fuerte (RSI). Se abre cuando el valor del RSI supera la línea de la señal de entrada y el precio de cierre está por debajo de la SMA; se cierra cuando se produce una señal de stop loss o stop loss. La estrategia combina la entrada con una doble filtración para evitar una negociación no válida.
La estrategia se basa en dos indicadores:
SMA: calcula el promedio móvil simple de los últimos 200 días de cierre, que representa la dirección de la tendencia de la línea media y larga.
RSI: Es el indicador de la fuerza relativa de los últimos 14 días en el cierre, que representa una situación de sobrecompra y sobreventa a corto plazo.
Cuando el RSI atraviesa 51 para entrar en la zona de sobreventa y está por encima de la línea SMA, indica que la línea corta y la línea media y larga se desvían de la tendencia y, por lo tanto, están en blanco.
Luego, establece una línea de stop loss y una línea de stop loss. Se detiene cuando el RSI se rompe por debajo de 32; se detiene cuando el RSI se rompe por encima de 54 o se rompe la línea de stop loss.
El filtro de doble indicador aumenta la precisión de entrada. El RSI determina una señal de sobreventa a corto plazo, y el SMA determina una señal de caída en la línea media, que es más confiable en combinación.
El método de seguimiento de stop loss permite bloquear las ganancias en función de la evolución de la situación, evitando el retroceso de las ganancias.
La lógica de la estrategia es simple y clara, y las modificaciones son fáciles de entender.
No se tienen en cuenta factores como el volumen de transacciones, la volatilidad.
Los parámetros del RSI son más fijos y pueden no ser válidos para todas las variedades y períodos.
No se tienen en cuenta los costos de la transacción, como el deslizamiento de la transacción y las comisiones.
Las estrategias son simples y el espacio para expandirlas es limitado.
Prueba y optimiza los parámetros de RSI y SMA para encontrar la combinación óptima de parámetros.
Aumentar las formas de detener la pérdida, como el detener el movimiento, el detener la proporción, etc.
Se filtran en combinación con indicadores de tendencia como el MACD para evitar el comercio en contra.
Considerar la inclusión de indicadores de volumen de transacciones para filtrar las brechas falsas de baja cantidad.
La estrategia tiene una idea clara y tiene un cierto valor práctico. Pero sus parámetros se establecen de manera más fija, sin tener en cuenta los cambios en el mercado. Además, hay algunos detalles que se pueden optimizar. En términos generales, la estrategia puede servir como un ejemplo para que los principiantes entiendan la estrategia de filtración de doble indicador, pero aún necesita ser probada y perfeccionada en el campo.
/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 00:00:00
period: 3h
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/
// © abdllhatn
//@version=5
// strategy("Alpha Short SMA and RSI Strategy", overlay=true, initial_capital=10000, default_qty_value=100)
// Inputs
sma_length = input(200, title="SMA Length")
rsi_length = input(14, title="RSI Length")
rsi_entry = input(51, title="RSI Entry Level")
rsi_stop = input(54, title="RSI Stop Level")
rsi_take_profit = input(32, title="RSI Take Profit Level")
// Indicators
sma_value = ta.sma(close, sma_length)
rsi_value = ta.rsi(close, rsi_length)
var float trailingStop = na
var float lastLow = na
// Conditions
shortCondition = ta.crossover(rsi_value, rsi_entry) and close < sma_value
if (shortCondition)
strategy.entry("Sell", strategy.short)
trailingStop := na
lastLow := na
if (strategy.position_size < 0)
if (na(lastLow) or close < lastLow)
lastLow := close
trailingStop := close
if not na(trailingStop) and close > trailingStop
strategy.close("Sell")
if (rsi_value >= rsi_stop)
strategy.close("Sell")
if (rsi_value <= rsi_take_profit)
strategy.close("Sell")
// Plot
plot(sma_value, color=color.red, linewidth=2)