
Strategi perdagangan silang emas adalah strategi pengesanan trend garis tengah dan panjang. Ia mengenal pasti arah trend harga saham dengan mengira indikator SR dan indikator isyarat SR, dan menggabungkan rangkaian saraf untuk memetakan saluran trend, untuk melaksanakan operasi pengesanan trend.
Penunjuk utama strategi ini adalah penunjuk SR dan penunjuk isyarat SR. Penunjuk SR adalah gabungan kedua rata-rata WMA dengan parameter 8 kitaran dan rata-rata SMA. Penunjuk isyarat SR adalah penunjuk isyarat SR yang dikira dengan parameter 20 kitaran.
Strategi ini menggunakan algoritma rangkaian saraf untuk memetakan secara automatik had atas dan bawah harga saham, membentuk saluran penyesuaian. Had atas adalah dengan nilai maksimum sejarah SR sebagai input, had bawah adalah dengan nilai minimum sejarah sebagai input, dan kemudian mengira kurva regresi sebagai had atas saluran.
Apabila penyambungan SR di atas indikator SR, ia menghasilkan isyarat beli; apabila penyambungan SR di bawah indikator SR, ia menghasilkan isyarat jual. Selepas isyarat penyambungan tambahan, hubungan harga saham dengan had atas dan bawah saluran menentukan kedudukan henti rugi.
Strategi ini adalah berdasarkan trend tracking dan terdapat risiko utama seperti berikut:
Untuk mengawal risiko, disarankan untuk menggabungkan strategi lain, mengelakkan operasi strategi tunggal; dan mengoptimumkan parameter yang ditetapkan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Mengoptimumkan parameter penunjuk SR dan penunjuk isyarat untuk meningkatkan kestabilan isyarat silang;
Mengoptimumkan kitaran panjang saluran penyesuaian, meluruskan keluk saluran;
Menambah penapis lain untuk mengelakkan kesilapan, seperti penapis kapasiti, penapis kadar turun naik;
Mengoptimumkan kurva laluan dalam masa nyata dengan algoritma pembelajaran mendalam untuk meningkatkan daya serap.
Strategi perdagangan silang emas adalah strategi kuantitatif yang berkesan untuk menjejaki trend garis panjang. Ia mempunyai kebarangkalian yang tinggi untuk menilai arah trend dengan betul, risiko operasi kecil. Dengan ruang yang besar untuk pengoptimuman model algoritma, strategi ini dijangka menjadi alat yang kuat untuk menjejaki perubahan trend 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_))