Tendencia de la estrategia de compra y venta

El autor:¿ Qué pasa?, Fecha: 2023-10-17 12:59:59
Las etiquetas:

img

Resumen general

La estrategia de compra y venta de tendencia es una estrategia de negociación de tendencia simple. La premisa es determinar la dirección de la tendencia basada en el promedio móvil y comprar / vender las caídas y los saltos en la tendencia.

Estrategia lógica

La estrategia utiliza el Simple Moving Average (SMA) para determinar la dirección de la tendencia. En una tendencia alcista, cuando la acción de la vela ofrece un dip, la estrategia será larga cuando el máximo de la vela actual rompa el máximo de la vela anterior. En una tendencia bajista, cuando la acción de la vela ofrece un blip, la estrategia será corta cuando el mínimo de la vela actual rompa el mínimo de la vela anterior.

La estrategia también utiliza el %K y el %D del oscilador Blanchflower para determinar la tendencia. Cerrará la posición y operará en la dirección opuesta cuando el %K cruce por encima del %D. Además, el MACD y la línea de señal actúan como filtros para tomar solo operaciones que se alineen con la dirección de tendencia determinada por el MACD y la señal.

La estrategia puede ser solo larga, corta o ambas. El mes de inicio y el año permiten hacer backtesting desde ese momento hasta ahora. Todos los parámetros como el período SMA, el período %K, el período %D, los parámetros MACD, etc. son personalizables.

Análisis de ventajas

  • El uso de la SMA para determinar la tendencia evita los golpes y las operaciones incorrectas
  • La aplicación del oscilador Blanchflower detecta oportunamente la inversión de tendencia y controla el riesgo
  • El MACD y el filtro de señales reducen las operaciones de ruido contra la tendencia
  • Los parámetros personalizables se adaptan a diferentes comportamientos de precios
  • Solo el comercio largo, sólo el corto o de doble dirección se adapta a los regímenes de mercado

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  • El riesgo de pérdida grande de la gran penetración de SMA puede aumentar el período de SMA para reducir el riesgo.
  • Comercio frecuente y sobrecambio en el mercado de rango limitado.
  • Filtración ineficaz debido a la mala configuración de los parámetros MACD y de la señal.
  • Se ha acumulado una gran posición de la negociación bidireccional causando pérdidas.

Oportunidades de mejora

La estrategia puede mejorarse en los siguientes aspectos:

  • Optimizar el período de SMA para filtrar la sierra de freno manteniendo la capacidad de detección de tendencias
  • Optimizar los parámetros %K, %D para capturar la reversión de la tendencia mientras se reducen los golpes
  • Optimizar los parámetros MACD para un filtrado de ruido más eficaz
  • Añadir el control del tamaño de la posición, por ejemplo, cantidad fija, porcentaje variable de capital, etc.
  • Se añadirán mecanismos de stop loss, por ejemplo, stop trailing, stop time, stop ATR, etc.

Conclusión

La estrategia de compra y venta sigue la tendencia tiene una lógica simple y directa para operar retrocesos en tendencias identificadas por SMA y filtradas por indicadores.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)

// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)

//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal

if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)//	if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
    if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
		strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
    if (k < k[1])
		strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")

if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
    if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
		strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
    if (k > k[1])
		strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Más.