Stan The Man - Una estrategia avanzada de negociación de acciones basada en la media móvil doble y la volatilidad

El autor:¿ Qué pasa?, Fecha: 2023-12-20 14:54:41
Las etiquetas:

img

Resumen general

Esta estrategia utiliza un doble sistema de promedio móvil e índice de fuerza relativa, combinado con la volatilidad histórica de la acción, para automatizar las señales de compra y venta para el comercio de acciones.

Estrategia lógica

La estrategia aprovecha el promedio móvil de 150 semanas y el promedio móvil rápido de 50 días para formar un sistema de MA dual. También utiliza un MA ultra rápido de 20 días. Cuando el precio cruza por encima del MA de 150 semanas, señala un comienzo de tendencia alcista. Cuando el precio cruza por debajo del MA de 50 días, señala una tendencia bajista. Esto nos permite comprar en el camino hacia arriba y vender en el camino hacia abajo.

Además, la estrategia también utiliza el precio más alto anualizado basado en la volatilidad y el índice de fuerza relativa para determinar puntos de entrada específicos.

Ventajas

  1. El sistema de doble MA puede identificar eficazmente los cambios de tendencia para perseguir al alza y detener la bajada.

  2. La medida de volatilidad y el RSI aseguran que no seamos golpeados en los mercados laterales.

  3. El MA rápido de 20 días permite un stop loss más rápido.

Los riesgos

  1. Hay un poco de retraso, incapaz de realizar el stop loss rápidamente.

  2. No se establece un stop loss, podría llevar a grandes pérdidas.

  3. Falta de optimización de parámetros, parámetros establecidos bastante arbitrariamente.

Para mitigar los riesgos, se puede agregar stop loss, o utilizar múltiplos de ATR como porcentaje de stop loss.

Oportunidades de mejora

  1. Añadir el mecanismo de stop loss
  2. Encontrar parámetros óptimos a través de la optimización
  3. Considera añadir otros filtros como el volumen
  4. Podría construirlo en un modelo multifactor con más factores

Resumen de las actividades

En resumen, esta es una estrategia de inversión de acciones bastante conservadora. Utilizando el sistema de doble MA para medir la tendencia general, combinando con las medidas de volatilidad y fuerza para la entrada en el tiempo, puede filtrar eficazmente las fallas de ruptura. El MA rápido también permite salidas rápidas. Sin embargo, la estrategia se puede mejorar aún más agregando stop loss, optimización de parámetros, etc. En general, se adapta a los inversores de acciones a largo plazo.


/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Relative Strength
strategy("Stan my man", overlay=true)
comparativeTickerId = input("BTC_USDT:swap",  title="Comparative Symbol")
l = input(50, type=input.integer, minval=1, title="Period")
baseSymbol = security(syminfo.tickerid, timeframe.period, close)
comparativeSymbol = security(comparativeTickerId, timeframe.period, close)
hline(0, color=color.black, linestyle=hline.style_dotted)
res = baseSymbol / baseSymbol[l] /(comparativeSymbol / comparativeSymbol[l]) - 1
plot(res, title="RS", color=#1155CC)

//volume ma
vol1 = sma(volume,20)
// 30 week ma
ema1 = ema(close, 150)
//consolidation
h1 = highest(high[1],365)

fastPeriod = input(title="Fast MA", type=input.integer, defval=50)
slowPeriod = input(title="Slow MA", type=input.integer, defval=150)
fastestperiod = input(title="Fastest MA", type=input.integer, defval=20)

fastEMA = ema(close, fastPeriod)
slowEMA = ema(close, slowPeriod)
fastestEMA = ema(close, fastestperiod)

monitorStrategy = close < close[20]


// trade conditions
buytradecondition1 = close >ema1 and res>0 and volume> 1.5*vol1 and close > h1
buytradecondition2 = close > fastEMA  and volume> 1.5* vol1 
selltradecondition1  = close< 0.95 * fastEMA 
selltradecondition2  = close< 0.90 * open

if (buytradecondition1)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over Slow moving average",alert.freq_all)
    
if (buytradecondition2)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over fast moving average",alert.freq_all)
    
if (selltradecondition1)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down fast moving average",alert.freq_all)
    
if (selltradecondition2)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down 10% below open price  ",alert.freq_all)

//alertcondition(buytradecondition1,title ="BuySignal", message ="Price Crossed Slow Moving EMA ")

plot(fastEMA, color=color.navy)
plot(slowEMA, color=color.fuchsia)
plot(fastestEMA, color=color.green)

Más.