Strategi ini menggabungkan pelbagai penunjuk teknikal seperti purata bergerak, indeks kekuatan relatif (RSI), penunjuk turun naik jumlah (VFI), dan indeks kekuatan sebenar (TSI) untuk menentukan momentum dan trend keseluruhan pasaran dan menangkap pergerakan harga jangka menengah hingga panjang.
Mengira purata bergerak RSI garisan pantas (7 hari), RSI garisan normal (14 hari), dan RSI garisan perlahan (50 hari) untuk menentukan trend dan momentum RSI.
Mengira CFI dan purata bergerak CFI EMA (25 hari) dan CFI SMA (25 hari) untuk mengukur aliran masuk dan aliran keluar dana.
Mengira nisbah purata bergerak jangka panjang dan purata bergerak jangka pendek TSI untuk menentukan kekuatan trend pasaran.
Mengintegrasikan hasil RSI, VFI dan TSI untuk mendapatkan arah momentum pasaran secara keseluruhan.
Mengambil kedudukan pendek apabila momentum ke bawah dikenal pasti.
Gabungan beberapa penunjuk membolehkan pengukuran yang lebih komprehensif dan tepat mengenai momentum dan trend pasaran secara keseluruhan.
VFI mencerminkan aliran dana pasaran, mengelakkan perdagangan terhadap trend.
TSI menapis ketegangan pasaran, menjadikan isyarat lebih boleh dipercayai.
Secara keseluruhan, strategi ini mempunyai kebolehpercayaan yang tinggi dan kadar kemenangan yang baik.
Penyesuaian parameter yang kompleks diperlukan untuk hasil yang optimum dari persediaan pelbagai penunjuk.
Peraturan kemasukan dan keluar yang mudah tidak dapat memanfaatkan sepenuhnya maklumat penunjuk, terdedah kepada kerugian pembalikan jangka pendek.
Rendah terhadap isyarat palsu dan kerugian kecil dalam pasaran yang berpusing.
Mengoptimumkan kombinasi penunjuk untuk mencari parameter terbaik.
Meningkatkan peraturan keluar berdasarkan keadaan penunjuk untuk menangkap pembalikan.
Membina mekanisme perlindungan keuntungan untuk mengurangkan kerugian daripada ketegangan.
Strategi ini menggabungkan beberapa penunjuk untuk mengukur momentum pasaran secara keseluruhan dan mengambil kedudukan pendek apabila momentum menurun dikenal pasti. Ia mempunyai kebolehpercayaan yang agak tinggi tetapi peraturan kemasukan / keluar yang mudah tidak dapat memanfaatkan sepenuhnya maklumat penunjuk. Penambahbaikan lanjut kepada parameter dan logik keluar dapat meningkatkan kestabilan dan keuntungan.
]
//@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)