Strategi perdagangan silang emas adalah strategi pelacakan tren jangka menengah hingga panjang. Strategi ini mengidentifikasi arah tren harga saham dengan menghitung indikator SR dan indikator sinyal SR, dan mengimplementasikan operasi pelacakan tren dengan menggambar saluran tren menggunakan algoritma jaringan saraf. Ketika indikator SR melintasi sinyal SR, sinyal beli dihasilkan. Ketika indikator SR melintasi di bawah sinyal SR, sinyal jual dihasilkan. Strategi ini juga menggunakan teknik filter regresi linier adaptif untuk mengoptimalkan kurva saluran, yang secara efektif menekan sinyal palsu.
Indikator SR adalah sintesis sekunder dari rata-rata bergerak WMA dan SMA dengan periode 8. Indikator sinyal SR adalah indikator SR yang dihitung dengan periode 20. Salib emas dan kematian indikator SR dan sinyal SR digunakan untuk menentukan arah tren.
Strategi ini menggunakan algoritma jaringan saraf untuk secara otomatis memetakan batas atas dan bawah harga saham untuk membentuk saluran adaptif. Batas atas mengambil nilai maksimum historis dari indikator SR sebagai input, batas bawah mengambil nilai minimum historis sebagai input, dan kurva regresi dihitung sebagai batas atas dan bawah saluran masing-masing.
Ketika indikator SR melintasi sinyal SR, sinyal beli dihasilkan. Ketika indikator SR melintasi sinyal SR, sinyal jual dihasilkan. Setelah sinyal panjang dan pendek dikeluarkan, hubungan antara harga saham dan batas atas dan bawah saluran menentukan posisi stop loss dan take profit.
Risiko utama dari strategi pelacakan tren ini adalah:
Untuk mengendalikan risiko, disarankan untuk menggabungkan dengan strategi lain daripada mengandalkan satu strategi; pada saat yang sama mengoptimalkan pengaturan parameter untuk beradaptasi dengan lingkungan pasar yang berbeda.
Strategi ini dapat dioptimalkan dalam aspek berikut:
Mengoptimalkan parameter indikator SR dan indikator sinyal untuk meningkatkan stabilitas sinyal silang;
Mengoptimalkan periode siklus saluran adaptif untuk meluruskan kurva saluran;
Tambahkan indikator filter lainnya untuk menghindari kesalahan operasi, seperti indikator energi, indikator volatilitas, dll.
Menggabungkan algoritma pembelajaran mendalam untuk mengoptimalkan kurva saluran secara real time dan meningkatkan adaptivitas.
Strategi perdagangan silang emas adalah strategi kuantitatif yang efektif untuk melacak tren jangka menengah hingga panjang. Strategi ini memiliki probabilitas tinggi untuk menentukan arah tren dengan benar dan risiko operasi yang rendah. Dengan ruang yang sangat besar untuk mengoptimalkan model algoritma, strategi ini berpotensi menjadi alat yang kuat untuk melacak perubahan tren saham.
/*backtest start: 2023-11-15 00:00:00 end: 2023-11-22 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // strategy(title = " Strategy PyramiCover", shorttitle = "S-PC", overlay = true, precision = 8, calc_on_order_fills = true, calc_on_every_tick = true, backtest_fill_limits_assumption = 0, default_qty_type = strategy.fixed, default_qty_value = 2, initial_capital = 10000, pyramiding=50, currency = currency.USD, linktoseries = true) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool) FromMonth = input(defval = 1, title = "Month", minval = 1) FromDay = input(defval = 1, title = "Day", minval = 1) FromYear = input(defval = 2014, title = "Year", minval = 2014) backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool) ToMonth = input(defval = 31, title = "Month", minval = 1) ToDay = input(defval = 12, title = "Day", minval = 1) ToYear = input(defval = 9999, title = "Year", minval = 2014) backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59)) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // per = input(14,title="🔹 Length") // up = 0.0 nup= 0.0 lowl = 0.0 nin = 0.0 // srl=wma(close,8) srr = sma(close,8) sr = 2*srl - srr // srsl=wma(close,20) srsr= sma(close,20) srsignal = 2*srsl - srsr // if sr>srsignal up := highest(sr,round(150)) nup :=highest(srsignal,round(20)) else up := highest(srsignal,round(150)) nup := highest(sr,round(20)) // if sr<srsignal lowl := lowest(sr,round(150)) nin := lowest(srsignal,round(20)) else lowl := lowest(sr,round(150)) nin := lowest(srsignal,round(20)) //reg alexgrover f_reg(src,length)=> x = bar_index y = src x_ = sma(x, length) y_ = sma(y, length) mx = stdev(x, length) my = stdev(y, length) c = correlation(x, y, length) slope = c * (my / mx) inter = y_ - slope * x_ reg = x * slope + inter reg // up_=f_reg(up,per) lowl_=f_reg(lowl,per) nup_=f_reg(nup,per) nin_=f_reg(nin,per) // plot(sr, title='SR', color=color.green, linewidth=2, style=plot.style_line,transp=0) plot(srsignal, title='SR-Signal', color=color.red, linewidth=2, style=plot.style_line,transp=0) plot(up_, title='Upper limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0) plot(lowl_, title='Lower limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0) a=plot(nup_, title='Neuronal Upper', color=color.gray, linewidth=1, style=plot.style_line,transp=0) b=plot(nin_, title='Neuronal Lower', color=color.gray, linewidth=1, style=plot.style_line,transp=0) fill(a, b, color=color.gray) plotshape(crossunder(sr,nup_)? sr+atr(20):na, title="Sell", text="🐻", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.black,transp=0) plotshape(crossover(sr,nin_)? sr-atr(20):na, title="Buy", text="🐂", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.black,transp=0) // // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // if backTestPeriod() strategy.entry("Buy", true, 1, when = crossover(sr,nin_)) strategy.entry("Short", false, 1, when = crossunder(sr,nup_))