
Chiến lược này sử dụng nhiều chỉ số kỹ thuật như đường trung bình di chuyển, đường tương đối mạnh (RSI), đường biến động số (VFI) và đường thực tế (TSI) để đánh giá động lượng và xu hướng tổng thể của thị trường để nắm bắt các đường dài và trung bình.
Tính trung bình di chuyển của đường RSI (7 ngày), đường RSI (14 ngày) và đường RSI (50 ngày) để đánh giá xu hướng và động lực của RSI.
Tính toán trung bình di động của VFI và VFI EMA (25 ngày), SMA (25 ngày), đánh giá dòng tiền vào và ra khỏi thị trường.
Tính tỷ lệ giữa đường trung bình dài hạn và đường trung bình ngắn hạn của TSI để đánh giá cường độ của xu hướng thị trường.
Kết hợp các kết quả của RSI, VFI và TSI để đưa ra hướng động lực tổng thể của thị trường.
Khi đánh giá thị trường có động lực đi xuống, hãy tháo dỡ; Khi đánh giá động lực thị trường đảo ngược, hãy tháo dỡ.
Kết hợp nhiều chỉ số sẽ giúp đánh giá toàn diện và chính xác hơn về động lực và xu hướng của thị trường.
VFI phản ánh dòng tiền vào và ra thị trường, tránh các giao dịch đảo ngược.
Các bộ lọc TSI đã làm cho tín hiệu trở nên đáng tin cậy hơn.
Nhìn chung, chiến lược này có độ tin cậy cao và tỷ lệ thắng tốt hơn.
Kết hợp nhiều chỉ số, thiết lập tham số phức tạp, cần thử nghiệm nhiều lần để đạt được tham số tối ưu.
Chiến lược nhập cảnh và xuất cảnh đơn giản, không thể tận dụng đầy đủ thông tin cung cấp bởi chỉ số, có thể dẫn đến thua lỗ đảo ngược quá ngắn.
Trong một thị trường chật chội, có thể có những tín hiệu sai và những tổn thất nhỏ.
Tối ưu hóa các tham số chỉ số để tìm tham số tối ưu.
Thêm quy tắc Exit, sử dụng các chỉ số để đánh giá điều kiện rút lui.
Tăng cơ chế bảo vệ lợi nhuận và giảm lỗ nhỏ.
Chiến lược này sử dụng nhiều chỉ số tổng hợp để đánh giá động lực tổng thể của thị trường, để kiếm lợi nhuận khi đánh giá thị trường có động lực giảm. Chiến lược này có độ tin cậy cao, nhưng cơ chế nhập cảnh và xuất cảnh đơn giản, thông tin về chỉ số không được sử dụng đầy đủ.
]
//@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)