Strategi tren momentum beberapa indikator teknis


Tanggal Pembuatan: 2024-01-26 11:45:55 Akhirnya memodifikasi: 2024-01-26 11:45:55
menyalin: 0 Jumlah klik: 575
1
fokus pada
1617
Pengikut

Strategi tren momentum beberapa indikator teknis

Ringkasan

Strategi ini menggabungkan beberapa indikator teknis seperti moving average, relative strength index (RSI), volume change index (VFI), dan true strength index (TSI) untuk menilai pergerakan dan tren pasar secara keseluruhan untuk menangkap pergerakan harga di garis tengah dan panjang.

Prinsip Strategi

  1. Hitung rata-rata bergerak dari RSI garis cepat ((7 hari), RSI garis normal ((14 hari), RSI garis lambat ((50 hari) untuk menilai tren dan momentum RSI.

  2. Hitung VFI dan rata-rata bergerak VFI EMA (25 hari), SMA (25 hari), menilai arus masuk dan keluar dana di pasar.

  3. Perhitungan rasio rata-rata jangka panjang dan jangka pendek dari TSI untuk menilai kekuatan tren pasar.

  4. Hasil RSI, VFI, dan TSI diintegrasikan untuk menunjukkan arah pergerakan pasar secara keseluruhan.

  5. Ketika menilai bahwa ada pergerakan ke bawah di pasar, melakukan shorting; Ketika menilai bahwa pergerakan pasar berbalik, kosongkan posisi kosong.

Analisis Keunggulan

  1. Dengan kombinasi berbagai indikator, Anda dapat menilai pergerakan dan tren pasar secara lebih komprehensif dan akurat.

  2. VFI mencerminkan arus masuk dan arus keluar dari pasar untuk menghindari terbaliknya perdagangan.

  3. TSI memfilter kehancuran kota, membuat sinyal lebih dapat diandalkan.

  4. Secara keseluruhan, strategi ini lebih dapat diandalkan dan memiliki tingkat keberhasilan yang lebih baik.

Analisis risiko

  1. Kombinasi multi-indikator, pengaturan parameter yang rumit, perlu pengujian berulang untuk mendapatkan parameter yang optimal.

  2. Strategi Entry dan Exit yang sederhana, tidak dapat memanfaatkan informasi yang diberikan oleh indikator, dapat menyebabkan kerugian terbalik yang terlalu pendek.

  3. Dalam situasi pasar yang bergejolak, sinyal yang salah dan kerugian kecil yang terbalik dapat terjadi.

Arah optimasi

  1. Optimalkan kombinasi parameter indikator untuk menemukan parameter optimal.

  2. Menambahkan aturan Exit, yang menggunakan indikator untuk menilai kebalikan dari Exit.

  3. Meningkatkan mekanisme perlindungan keuntungan dan mengurangi kerugian kecil.

Meringkaskan

Strategi ini menggunakan berbagai indikator untuk menilai pergerakan pasar secara keseluruhan. Strategi ini memiliki keandalan yang tinggi, tetapi mekanisme Entry dan Exit lebih sederhana, dan informasi indikator tidak dimanfaatkan sepenuhnya. Dengan terus mengoptimalkan parameter dan meningkatkan aturan Exit, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.

]

Kode Sumber 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)