
Esta estrategia combina las medias móviles binarias y las tres medias de Williams para formar un sistema integrado de seguimiento de tendencias y generación de señales de reversión de tendencias. Tiene una excelente eficiencia de mantenimiento de posiciones y puede filtrar eficazmente las señales falsas.
La estrategia se compone de dos estrategias principales:
El Double Exponential Moving Average (DEMA) es un indicador que combina el seguimiento de tendencias de las medias móviles de un solo indicador, y el atraso de las medias móviles de dos indicadores. Puede hacer más rápido cuando los precios suben; también puede cerrar más rápido cuando los precios bajan.
Los tres promedios de Williams. El indicador está compuesto por la línea larga, la línea media y la línea corta. Utiliza el cruce de diferentes promedios periódicos para juzgar los cambios en la tendencia y generar una señal de negociación.
La señal de negociación de esta estrategia es el resultado de las dos subestrategias mencionadas anteriormente para el cálculo de las operaciones de las cuerdas y las cuerdas. Es decir, la estrategia solo emitirá órdenes cuando las dos subestrategias emitan señales al mismo tiempo. Esto puede reducir efectivamente las falsas señales y mejorar la estabilidad de la posición.
La mayor ventaja de esta estrategia es que puede filtrar eficazmente las señales falsas, lo que está determinado por la estructura de la estrategia. Aunque las medias móviles dobles y las medias de Williams tienen sus desventajas, combinarlas puede aprovechar sus ventajas y compensarse mutuamente. Esto permite que esta estrategia logre una posición de alto rendimiento en situaciones de tendencia, mientras que puede detener los pérdidas a tiempo en situaciones de liquidación.
Además, el espacio para optimizar los parámetros de esta estrategia es amplio, y se puede ajustar los parámetros de las medias móviles dobles y los parámetros de las medias de tres barras de Williams para adaptarse a las características del mercado de diferentes variedades y períodos, con una mayor adaptabilidad.
El principal riesgo de esta estrategia es que el punto de detención puede romperse y causar grandes pérdidas cuando el mercado está en una situación de gran volatilidad. Este es un problema común en las estrategias de promedio móvil. Además, en situaciones de crisis, esta estrategia puede abrir posiciones cerradas con frecuencia y aumentar la pérdida de costos de negociación.
Para controlar estos riesgos, se recomienda utilizar el método de análisis de marcha adelante para optimizar los parámetros y establecer un punto de parada razonable. Al mismo tiempo, también se puede introducir indicadores adicionales para juzgar el estado de la situación y suspender el comercio en situaciones de crisis.
La estrategia tiene las siguientes direcciones de optimización:
Ajustar los parámetros de las medias móviles dobles para adaptarse a diferentes variedades y períodos.
Ajuste el ciclo de las tres líneas del promedio de Williams a la frecuencia de las fluctuaciones del mercado.
Aumentar las condiciones para abrir posiciones y filtrar las señales de negociación en determinadas fases de la situación. Por ejemplo, no negociar en momentos de gran volatilidad.
Aumentar los indicadores de stop loss para controlar las pérdidas. Se pueden experimentar métodos como el seguimiento de stop loss, stop loss promedio.
Introducción de parámetros de optimización automática para algoritmos de aprendizaje automático.
Esta estrategia, mediante la combinación de las ventajas de las medias móviles dobles y las medias de Williams, permite un filtro eficaz de las señales de negociación, que puede reducir las señales falsas y mejorar la eficiencia de la posición. Puede obtener un mejor rendimiento mediante la optimización de los parámetros según la situación del mercado, y tiene un gran potencial de aplicación.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 21/04/2022
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// 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.
////////////////////////////////////////////////////////////
EMA20(Length) =>
pos = 0.0
xPrice = close
xXA = ta.ema(xPrice, Length)
nHH = math.max(high, high[1])
nLL = math.min(low, low[1])
nXS = nLL > xXA or nHH < xXA ? nLL : nHH
iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
pos := nXS > close[1] ? -1 : iff_1
pos
BWA3Lines(LLength,MLength,SLength,LOffset,MOffset,SOffset) =>
pos = 0.0
xLSma = ta.sma(hl2, LLength)[LOffset]
xMSma = ta.sma(hl2, MLength)[MOffset]
xSSma = ta.sma(hl2, SLength)[SOffset]
pos := close < xSSma and xSSma < xMSma and xMSma < xLSma ? -1 :
close > xSSma and xSSma > xMSma and xMSma > xLSma ? 1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & Bill Williams Averages. 3Lines', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ 3Lines ═════●'
LLength = input.int(13, minval=1, group=I2)
MLength = input.int(8,minval=1, group=I2)
SLength = input.int(5,minval=1, group=I2)
LOffset = input.int(8,minval=1, group=I2)
MOffset = input.int(5,minval=1, group=I2)
SOffset = input.int(3,minval=1, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBWA3Lines = BWA3Lines(LLength,MLength,SLength,LOffset,MOffset,SOffset)
iff_1 = posEMA20 == -1 and prePosBWA3Lines == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBWA3Lines == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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 ? #b50404 : possig == 1 ? #079605 : #0536b3)