
La estrategia es una estrategia de negociación de reversión EMA ponderada de combinación de doble optimización. Combina dos tipos diferentes de estrategias, la estrategia de reversión y la estrategia de ponderación EMA, para generar una señal de negociación más confiable al juzgar si las señales de las dos estrategias coinciden.
La parte inversa utiliza la estrategia inversa 123. Esta estrategia determina la relación de precios de cierre de los dos días anteriores y genera una señal con una combinación de indicadores aleatorios. Las reglas específicas son:
La parte ponderada de la EMA utiliza el cálculo ponderado de las medias móviles del índice y el volumen de transacciones. La fórmula de cálculo es la siguiente:
xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)
nRes = xMAVolPrice / xMAVol
Las reglas de negociación específicas son: hacer más / hacer menos cuando el indicador nRes está por debajo / por encima del precio de cierre de ayer.
Finalmente, la estrategia determina si las señales de las dos partes son consistentes, y si son consistentes, se generará una señal de negociación real.
La estrategia combina dos tipos diferentes de estrategias que se pueden verificar mutuamente, aumentando la fiabilidad de la señal y reduciendo las falsas señales. Al mismo tiempo, la parte inversa puede capturar los puntos de inflexión y la parte ponderada por EMA puede seguir la tendencia, y ambas pueden alcanzar ventajas complementarias.
La estrategia tiene un cierto retraso en el tiempo y es fácil perder oportunidades de negociación en líneas cortas. Además, la fiabilidad de las señales de reversión también necesita ser examinada.
Se pueden reducir adecuadamente los parámetros y acelerar la velocidad de reacción. Se agregan paradas para controlar el riesgo. Se introducen más factores para verificar la señal de reversión.
La estrategia integra las ventajas de dos tipos diferentes de estrategias, mejora la calidad de la señal y supera en cierta medida los inconvenientes de una sola estrategia. Pero también existe un cierto retraso que requiere una optimización adicional. En general, la estrategia ofrece nuevas ideas para el comercio cuantitativo y vale la pena optimizar y aprovechar las oportunidades de mercado.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 18/10/2019
// This is combo strategies for get a cumulative signal.
//
// 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
// The related article is copyrighted material from Stocks & Commodities 2009 Oct
//
// 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
fFilter(xSeriesSum, xSeriesV, Filter) =>
iff(xSeriesV > Filter, xSeriesSum, 0)
EMA_VW(Length) =>
pos = 0.0
xMAVolPrice = ema(volume * close, Length)
xMAVol = ema(volume, Length)
nRes = xMAVolPrice / xMAVol
pos := iff(nRes < close[1], 1,
iff(nRes > close[1], -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & EMA & Volume Weighting", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthEMA_VM = input(22, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMA_VW = EMA_VW(LengthEMA_VM)
pos = iff(posReversal123 == 1 and posEMA_VW == 1 , 1,
iff(posReversal123 == -1 and posEMA_VW == -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 ? #b50404: possig == 1 ? #079605 : #0536b3 )