Strategi Tren Adaptif Kombinasi Multi-Indikator

Penulis:ChaoZhang, Tanggal: 2023-12-19 11:01:05
Tag:

img

Gambaran umum

Strategi ini secara akurat menilai tren dengan menggabungkan indikator rata-rata bergerak Hull ganda, indikator rata-rata bergerak tertimbang volume, indikator MACD dan indikator indeks kekuatan sejati.

Prinsip Strategi

Indikator inti dari strategi ini adalah rata-rata bergerak double Hull, yang dikendalikan oleh dua parameter keh dan teh. Dua parameter ini menentukan siklus garis cepat dan garis lambat masing-masing.

Indikator penilaian tambahan adalah rata-rata bergerak tertimbang volume meh1. Ketika harga lebih tinggi dari meh1, itu adalah tren kenaikan; ketika harga lebih rendah dari meh1, itu adalah tren penurunan.

Indikator penilaian tambahan lainnya adalah MACD. Ini diperoleh dengan mengurangi rata-rata bergerak cepat dari rata-rata bergerak lambat untuk mendapatkan MACD, dan kemudian menggunakan rata-rata bergerak MACD untuk mendapatkan garis sinyal.

Indikator penilaian tambahan terakhir adalah TSI, yang dihitung dengan meratakan dua kali tingkat perubahan harga. Besarnya nilai absolut mewakili momentum perubahan harga. Dalam kondisi beli dan jual, garis sinyal TSI dinilai untuk mengontrol waktu entri dan keluar.

Dengan menggabungkan sinyal dari indikator-indikator ini, tren dapat dinilai dengan akurat, dan parameter dapat disesuaikan secara otomatis untuk menyelaraskan dengan pasar.

Keuntungan

  1. Menggunakan rata-rata bergerak Hull ganda sebagai indikator penilaian utama, dikombinasikan dengan beberapa indikator lainnya, dapat meningkatkan akurasi penilaian dan mengurangi sinyal palsu.

  2. Menerapkan indikator TSI untuk menentukan waktu masuk dan keluar pasar dapat mengendalikan risiko.

  3. Beberapa parameter yang dapat disesuaikan untuk kemampuan beradaptasi yang kuat yang dapat secara otomatis beradaptasi dengan perubahan pasar.

  4. Ide kombinasi indikator dan penyesuaian parameter sendiri membuat strategi stabil dengan profitabilitas yang kuat dan berkelanjutan.

Analisis Risiko

  1. Meskipun indikator TSI digunakan untuk menentukan waktu, indikator yang digunakan dalam algoritma masih tipe tren.

  2. Pengaturan parameter yang tidak benar dapat menyebabkan kegagalan strategi. Parameter harus ditetapkan secara wajar berdasarkan pengalaman.

  3. Kombinasi dari beberapa indikator meningkatkan jumlah perhitungan, yang meningkatkan kemungkinan kesalahan dalam stok data besar dan periode waktu.

  4. Kebutuhan untuk memantau efek perhitungan indikator untuk mencegah gangguan dari data abnormal.

Arah Optimalisasi

  1. Indikator tambahan lainnya seperti BOLL dapat diuji untuk membuat sinyal lebih akurat dan dapat diandalkan.

  2. Mengoptimalkan masuk dan keluar logika, mengatur stop loss dan mengambil kondisi keuntungan untuk mengontrol keuntungan tunggal dan kerugian.

  3. Latih dan optimalkan parameter untuk varietas yang berbeda untuk membuatnya lebih cocok untuk varietas yang berbeda.

  4. Tingkatkan modul penyesuaian parameter untuk menyesuaikan parameter strategi secara otomatis berdasarkan efek transaksi terbaru.

Ringkasan

Strategi ini mengintegrasikan keuntungan dari beberapa indikator dan menggunakan kombinasi indikator untuk menilai arah tren. Sementara mengendalikan risiko, itu meningkatkan akurasi penilaian. Melalui optimasi parameter dan optimasi logika, strategi dapat lebih disesuaikan dengan perubahan pasar, sambil mengurangi kerugian berturut-turut dan mendapatkan keuntungan yang lebih besar. Strategi ini stabil dan dapat digunakan untuk saham, cryptocurrency dan varietas lainnya untuk jangka panjang.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                    Quad-HullMA-cross & VWMA & MacD & TSI combination  <<<<< by SeaSide420 >>>>>>
strategy("MultiCross420", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
keh=input(title="Double HullMA 1",defval=7, minval=1)
teh=input(title="Double HullMA 2",defval=14, minval=1)
meh=input(title="VWMA",defval=1, minval=1)
meh1=vwma(close,round(meh))
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
n2ma3=2*wma(close,round(teh/2))
nma2=wma(close,teh)
diff2=n2ma3-nma2,sqn2=round(sqrt(teh))
n2ma4=2*wma(close[2],round(teh/2))
nma3=wma(close[2],teh)
diff3=n2ma4-nma3,sqn3=round(sqrt(teh))
n3=wma(diff2,sqn2)
n4=wma(diff3,sqn3)
fastLength = input(title="MacD fastLength", defval=7)
slowlength = input(title="MacD slowlength", defval=14)
MACDLength = input(title="MacD Length", defval=3)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
a1=plot(n1,color=c),a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = cross, color=b, linewidth = 3)
a3=plot(n3,color=c),a4=plot(n4,color=c)
plot(cross(n3, n4) ? n1 : na, style = cross, color=b, linewidth = 3)
//a5=plot(meh1,color=c)
long = input(title="TSI Long Length",  defval=5)
short = input(title="TSI Short Length",  defval=3)
signal = input(title="TSI Signal Length",  defval=2)
linebuy = input(title="TSI Upper Line",  defval=4)
linesell = input(title="TSI Lower Line",  defval=-4)
price = close
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
closelong = n1<n2 and n3<n4 and n1>meh1
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n3>n4 and n1<meh1
if (closeshort)
    strategy.close("Short") 
longCondition = strategy.opentrades<1 and n1>n2 and MACD>aMACD and n1<meh1 and n3>n4 and ema(tsi_value, signal)>linesell
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = strategy.opentrades<1  and n1<n2 and MACD<aMACD and n1>meh1 and n3<n4 and ema(tsi_value, signal)<linebuy
if (shortCondition)
    strategy.entry("Short",strategy.short)

Lebih banyak