Strategi Perdagangan Golden Cross


Tarikh penciptaan: 2023-11-23 14:07:11 Akhirnya diubah suai: 2023-11-23 14:07:11
Salin: 0 Bilangan klik: 614
1
fokus pada
1621
Pengikut

Strategi Perdagangan Golden Cross

Gambaran keseluruhan

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.

Prinsip Strategi

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.

Analisis kelebihan

  • Menggunakan teknik sintesis binari untuk menghapuskan kesan turun naik harga dan menentukan arah trend secara tepat;
  • Mengoptimumkan masa masuk dan keluar melalui algoritma laluan adaptasi untuk mengelakkan penembusan palsu;
  • Garis laluan menggunakan teknik penyaringan regresi linear yang beradaptasi, mengelakkan kurva dipengaruhi oleh nilai ekstrem;
  • Kedudukan Stop Loss Stop Stop bertukar mengikut dinamik saluran, dan secara automatik mengikuti trend keuntungan.

Analisis risiko

Strategi ini adalah berdasarkan trend tracking dan terdapat risiko utama seperti berikut:

  • Ini menyebabkan banyak isyarat yang salah dan terlalu banyak operasi yang tidak berkesan dalam tren gegaran.
  • Kejadian yang tidak dijangka menyebabkan kerugian yang lebih besar kepada Fast untuk menembusi saluran bawah ke bawah;
  • Parameter yang tidak betul boleh menyebabkan strategi gagal.

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.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan parameter penunjuk SR dan penunjuk isyarat untuk meningkatkan kestabilan isyarat silang;

  2. Mengoptimumkan kitaran panjang saluran penyesuaian, meluruskan keluk saluran;

  3. Menambah penapis lain untuk mengelakkan kesilapan, seperti penapis kapasiti, penapis kadar turun naik;

  4. Mengoptimumkan kurva laluan dalam masa nyata dengan algoritma pembelajaran mendalam untuk meningkatkan daya serap.

ringkaskan

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.

Kod sumber strategi
/*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_))