Estrategia de cruce de tendencia combinada de inversión de la media móvil

El autor:¿ Qué pasa?, fecha: 2023-11-28 13:47:05
Las etiquetas:

img

Resumen general

Esta es una estrategia combinada que combina la inversión de tendencia y las estrategias de cruce de promedios móviles para generar señales comerciales más precisas.

Estrategia lógica

La estrategia consta de dos partes:

  1. 123 Estrategia de reversión: Ir largo cuando el precio de cierre sube durante 2 días consecutivos y el estocástico lento de 9 días está por debajo de 50; Ir corto cuando el precio de cierre cae durante 2 días consecutivos y el estocástico rápido de 9 días está por encima de 50.

  2. Estrategia de promedio de Bill Williams: Calcule promedios móviles de precios medianos de 13, 8 y 5 días y vaya largo cuando los MA más rápidos crucen por encima de los MA más lentos; vaya corto cuando los MA más rápidos crucen por debajo de los MA más lentos.

Por último, una señal de negociación real se genera solo cuando ambas estrategias acuerdan la dirección; de lo contrario, no hay comercio.

Análisis de ventajas

La estrategia combinada filtra el ruido utilizando validaciones de tendencia dual, mejorando así la precisión de la señal.

Análisis de riesgos

Los riesgos son:

  1. El doble filtro puede perder algunas buenas operaciones
  2. Las configuraciones incorrectas de MA pueden juzgar incorrectamente las tendencias
  3. Las propias estrategias de inversión tienen riesgos de pérdida

Los riesgos pueden reducirse optimizando los parámetros de la MA o la lógica de entrada/salida.

Direcciones de optimización

La estrategia se puede optimizar mediante:

  1. Prueba de diferentes combinaciones de MA para encontrar parámetros óptimos
  2. Añadir un stop loss a las pérdidas limitadas
  3. Incorporación de volumen para identificar la calidad de la señal
  4. Utilizando el aprendizaje automático para optimizar automáticamente

Conclusión

Esta estrategia combina dos filtros de tendencia y MAs para filtrar eficazmente los ruidos y mejorar la precisión de las decisiones.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/06/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This indicator calculates 3 Moving Averages for default values of
// 13, 8 and 5 days, with displacement 8, 5 and 3 days: Median Price (High+Low/2).
// The most popular method of interpreting a moving average is to compare 
// the relationship between a moving average of the security's price with 
// the security's price itself (or between several moving averages).
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

BillWilliamsAverages(LLength, MLength,SLength, LOffset,MOffset, SOffset ) =>
    xLSma = sma(hl2, LLength)[LOffset]
    xMSma = sma(hl2, MLength)[MOffset]
    xSSma = sma(hl2, SLength)[SOffset]
    pos = 0
    pos := iff(close < xSSma and xSSma < xMSma and xMSma < xLSma, -1,
    	   iff(close > xSSma and xSSma > xMSma and xMSma > xLSma, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bill Williams Averages. 3Lines", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LLength = input(13, minval=1)
MLength = input(8,minval=1)
SLength = input(5,minval=1)
LOffset = input(8,minval=1)
MOffset = input(5,minval=1)
SOffset = input(3,minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAverages = BillWilliamsAverages(LLength, MLength,SLength, LOffset, MOffset, SOffset)
pos = iff(posReversal123 == 1 and posBillWilliamsAverages == 1 , 1,
	   iff(posReversal123 == -1 and posBillWilliamsAverages == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 

Más.