
La estrategia utiliza una combinación de indicadores técnicos como las medias móviles, el indicador de fuerza relativa (RSI), el indicador de variación cuantitativa (VFI) y el índice de fuerza real (TSI) para determinar el movimiento y la tendencia general del mercado y capturar los movimientos de los precios de las líneas medias y largas.
Calcule el promedio móvil de la línea rápida RSI ((7 días), la línea normal RSI ((14 días) y la línea lenta RSI ((50 días) para determinar la tendencia y el dinamismo de la RSI.
Calcule el promedio móvil de VFI y VFI EMA (25 días) y SMA (25 días) para determinar el flujo de entrada y salida de fondos en el mercado.
Calcula el ratio entre la media a largo plazo y la media a corto plazo del TSI para determinar la intensidad de la tendencia del mercado.
La integración de los resultados de RSI, VFI y TSI permite determinar la dirección de la dinámica general del mercado.
Cuando se juzgue que hay un movimiento a la baja en el mercado, hacer un descubierto; Cuando se juzgue que el movimiento del mercado se invierte, cerrar una posición en blanco.
La combinación de varios indicadores permite una evaluación más completa y precisa de la dinámica y tendencias generales del mercado.
El VFI refleja el flujo de entrada y salida de fondos en el mercado, evitando que las transacciones se inviertan.
El filtro TSI hace que la señal sea más confiable.
En general, la estrategia es más fiable y tiene una mejor tasa de éxito.
La combinación de varios indicadores, la configuración de los parámetros es compleja y requiere pruebas repetidas para obtener los parámetros óptimos.
Las estrategias de entrada y salida son simples y no se puede aprovechar al máximo la información proporcionada por los indicadores, lo que puede ocasionar pérdidas por inversión de línea demasiado corta.
En un mercado convulso, es fácil generar señales erróneas y invertir pequeñas pérdidas.
Optimización de la combinación de parámetros indicadores para encontrar el mejor parámetro.
La nueva regla de Exit se utiliza para evaluar el estado de los indicadores para determinar si la salida es inversa.
Aumentar los mecanismos de protección de ganancias y reducir las pequeñas pérdidas.
Esta estrategia utiliza una combinación de varios indicadores para determinar la dinámica general del mercado y obtener ganancias a la baja cuando se determina que el mercado está a la baja. La estrategia tiene una alta fiabilidad, pero los mecanismos de entrada y salida son más simples y la información de los indicadores no se utiliza al máximo.
]
//@version=2
//credit to LazyBear, Lewm444, and others for direct and indirect inputs/////////////////////////////////
//script is very rough, publishing more for collaborative input value than as a finished product/////////
strategy("Momo", overlay=true)
length = input( 50 )
overSold = input( 50 )
overBought = input( 65 )
price = ohlc4
/////////////////////////////////////////////////////macd/////////////////////////////////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
MACD = (fastMA - slowMA)
Msignal = (sma(MACD, 9))*40
//plot(Msignal, color=blue, linewidth=3)
/////////////////////////////////////////////////rsi spread/////////////////////////////////////////////////
source = price
RSIFast = rsi(source, input(7))
RSINorm = rsi(source, input(14))
RSISlow = rsi(source, input(50))
//plot(RSIFast, color=silver, style=area, histbase=50)
//plot(RSINorm, color=#98b8be, style=area, histbase=50)
//plot(RSISlow, color=#be9e98, style=area, histbase=50)
//plot(RSIFast, color=gray, style=line, linewidth=1)
//plot(RSINorm, color=purple, style=line, linewidth=2)
//plot(RSISlow, color=black, style=line, linewidth=3)
exponential = input(true, title="Exponential MA")
src = (RSIFast)
ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma100 = exponential ? ema(src, 100) : sma(src, 100)
exponential1 = input(true, title="Exponential MA")
src1 = (RSINorm)
ma051 = exponential1 ? ema(src1, 05) : sma(src1, 05)
ma301 = exponential1 ? ema(src1, 30) : sma(src1, 30)
ma501 = exponential1 ? ema(src1, 50) : sma(src1, 50)
ma701 = exponential1 ? ema(src1, 70) : sma(src1, 70)
ma901 = exponential1 ? ema(src1, 90) : sma(src1, 90)
ma1001 = exponential1 ? ema(src1, 100) : sma(src1, 100)
exponential2 = input(true, title="Exponential MA")
src2 = (RSINorm)
ma052 = exponential2 ? ema(src2, 05) : sma(src2, 05)
ma302 = exponential2 ? ema(src2, 30) : sma(src2, 30)
ma502 = exponential2 ? ema(src2, 50) : sma(src2, 50)
ma702 = exponential2 ? ema(src2, 70) : sma(src2, 70)
ma902 = exponential2 ? ema(src2, 90) : sma(src2, 90)
ma1002 = exponential2 ? ema(src2, 100) : sma(src2, 100)
////////////////////////////////////////////////vfi by LazyBear, modified////////////////////////////////////
VFIlength = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(10)
signalLength2 = input(100)
smoothVFI=input(false, type=bool)
ma(x,y) => smoothVFI ? sma(x,y) : x
typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, VFIlength )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )
vfi = ma(sum( vcp , VFIlength )/vave, 3)
vfima = ema( vfi, 25 )
vfimaS = (sma(vfima, 25))
zima = ema( vfima, signalLength2 )
d=vfi-vfima
vfi_avg = avg(vfi, vfima, vfimaS)
vfi_avgS = (sma(vfi_avg,5))
plot( zima, title="EMA of vfima", color=fuchsia, linewidth=1)
plot( vfimaS, title="SMA of vfima", color=blue, linewidth=1)
plot( vfima , title="EMA of vfi", color=black, linewidth=1)
//plot( vfi, title="vfi", color=green,linewidth=1)
//plot( vfi_avg, title="vfi_avg", color=blue, linewidth=2)
//plot( vfi_avgS, title="vfi_avgS", color=maroon, linewidth=2)
/////////////////////////////////////////////////////tsi////////////////////////////////////////////////
long2 = input(title="Long Length", defval=24)
short2 = input(title="Short Length", defval=7)
signal2 = input(title="Signal Length", defval=13)
pc = change(price)
double_smooth2(src, long2, short2) =>
fist_smooth2 = ema(src, long2)
ema(fist_smooth2, short2)
double_smoothed_pc2 = double_smooth2(pc, long2, short2)
double_smoothed_abs_pc2 = double_smooth2(abs(pc), long2, short2)
tsi_value2 = 60 * (double_smoothed_pc2 / double_smoothed_abs_pc2)
//plot( tsi_value2, title="tsi2", color=black, linewidth=1)
////////////////////////////////////////////////////////mjb////////////////////////////////////////////////
trendSignal = avg(tsi_value2, Msignal, vfi)*1.75
T1 = sma(trendSignal, 5)
T2 = ema(trendSignal, 25)
T3 = ema(T2, 25)
//plot( T1, title="Trend", color=red, linewidth=3)
plot( T3, title="Trend3", color=black, linewidth=3)
/////////////////////////////////////////////////////mjb////////////////////////////////////////////////
Momentum = avg (T3, vfimaS, vfima)
plot( Momentum, title="Momentum", color=blue, linewidth=2)
vrsi = rsi(price, length)
clearance = abs(zima - Msignal)
/////////////////////////////////////////////////////mjb////////////////////////////////////////////////
if (not na(vrsi))
if (zima > T3) and (clearance > 5) and (falling(zima, 1) == 1) and (zima > vfimaS) and (zima > vfima) and (falling(T3, 1) == 1) and (zima > 6)
strategy.entry("ss", strategy.short)
if (T3 > zima) and (rising(zima, 1) == 1)
strategy.entry("Zcover", strategy.long)
if (strategy.openprofit > 750) and (rising(T2, 1) == 1) and (T2 > 10)
strategy.entry("ProfitTake", strategy.long)
// strategy.risk.allow_entry_in(strategy.direction.short)
// strategy.risk.max_intraday_loss(2000, strategy.cash)