
La estrategia se basa en un modelo de doble factor, una estrategia de inversión combinada que integra los dos factores de la inversión de la forma 123 y el índice de incremento, lo que permite el efecto de suma de la señal de la estrategia. La estrategia realiza la operación de compra o venta correspondiente cuando ambos factores emiten una señal de compra o venta al mismo tiempo.
Este factor opera en base a la forma 123 del precio. Cuando la relación de precios de cierre de los dos días actuales es baja-alta y el indicador de Stoch es inferior a 50, juzga como una señal de reversión inferior, hacer más; Cuando la relación de precios de cierre de los dos días actuales es alta-baja y el indicador de Stoch es superior a 50, juzga como una señal de reversión superior, hacer vacío.
Este factor se basa en el aumento o disminución del rango de fluctuación de los precios para juzgar la reversión de la tendencia. El aumento del rango de fluctuación aumenta el índice y la disminución del rango disminuye el índice. Cuando el índice atraviesa un umbral, genera una señal de falta, y cuando atraviesa un rango inferior, genera una señal de falta.
Las posiciones se abren con señales bidireccionales para obtener ganancias estratégicas y evitar el riesgo de señales falsas de un solo factor.
Se puede reducir el riesgo mediante la ampliación de los conjuntos de entrenamiento, la detención rigurosa y la combinación de filtros multifactoriales.
Esta estrategia combina la forma de los precios y la volatilidad de los dos factores, y abre posiciones solo cuando los dos factores emiten señales homogéneas, evitando el riesgo de falsas señales de un solo factor, lo que mejora la estabilidad general de la estrategia. Pero también existe el riesgo de que los dos factores de cierta probabilidad emitan señales erróneas al mismo tiempo. Podemos mejorar aún más el rendimiento de la estrategia y ajustar la rentabilidad al riesgo mediante la ampliación del conjunto de entrenamiento, la configuración de paradas y la optimización de la combinación de factores de pérdida.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 22/02/2021
// 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 Mass Index was designed to identify trend reversals by measuring
// the narrowing and widening of the range between the high and low prices.
// As this range widens, the Mass Index increases; as the range narrows
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey.
//
// 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
MASS(Length1,Length2,Trigger) =>
pos = 0.0
xPrice = high - low
xEMA = ema(xPrice, Length1)
xSmoothXAvg = ema(xEMA, Length1)
nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
pos := iff(nRes > Trigger, -1,
iff(nRes < Trigger, 1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & MASS Index", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
iff(posReversal123 == -1 and posMASS == -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 )