
Strategi ini menggunakan pelbagai petunjuk teknikal seperti purata bergerak, indikator kekuatan relatif (RSI), indikator perubahan kuantitatif (VFI) dan indeks kekuatan sebenar (TSI) untuk menilai pergerakan dan trend keseluruhan pasaran untuk menangkap pergerakan harga garis panjang dan tengah.
Hitung purata bergerak garisan pantas RSI ((7 hari), garisan normal RSI ((14 hari), garisan perlahan RSI ((50 hari) untuk menilai trend dan momentum RSI.
Hitung purata bergerak VFI dan VFI EMA (25 hari), SMA (25 hari), menilai aliran masuk dan aliran keluar wang di pasaran.
Hitung nisbah purata jangka panjang dan purata jangka pendek TSI untuk menilai kekuatan trend pasaran.
Hasil RSI, VFI dan TSI digabungkan untuk menunjukkan arah pergerakan keseluruhan pasaran.
Apabila menilai bahawa terdapat pergerakan ke bawah di pasaran, melakukan shorting; Apabila menilai bahawa pergerakan pasaran berbalik, kosongkan kedudukan kosong.
Ia adalah lebih komprehensif dan tepat untuk menilai pergerakan dan trend pasaran secara keseluruhan.
VFI mencerminkan aliran masuk dan keluar wang di pasaran, mengelakkan pertukaran berbalik.
TSI menapis kegagalannya, menjadikan isyarat lebih dipercayai.
Secara keseluruhannya, strategi ini mempunyai kebolehpercayaan yang lebih tinggi dan kadar kemenangan yang lebih baik.
Gabungan pelbagai indikator, parameter yang rumit, memerlukan ujian berulang untuk mendapatkan parameter yang optimum.
Strategi Entry dan Exit yang mudah, tidak dapat memanfaatkan sepenuhnya maklumat yang diberikan oleh penunjuk, dan boleh menyebabkan kerugian terbalik yang terlalu pendek.
Dalam pasaran yang bergolak, ia boleh menyebabkan isyarat yang salah dan kerugian kecil.
Mengoptimumkan kombinasi parameter penunjuk untuk mencari parameter terbaik.
Menambah peraturan Exit untuk menilai kebalikan Exit menggunakan keadaan indikator.
Meningkatkan mekanisme perlindungan keuntungan dan mengurangkan kerugian kecil.
Strategi ini menggunakan pelbagai indikator untuk menilai pergerakan keseluruhan pasaran, dan mengambil keuntungan ketika menilai bahawa terdapat pergerakan ke bawah di pasaran. Strategi ini mempunyai kebolehpercayaan yang tinggi, tetapi mekanisme Entri dan Keluar lebih sederhana, dan maklumat indikator tidak digunakan sepenuhnya. Dengan terus mengoptimumkan parameter dan meningkatkan peraturan Keluar, anda dapat meningkatkan kestabilan dan keuntungan strategi.
]
//@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)