Out-of-the-box Strategi Perdagangan Pembelajaran Mesin

Penulis:ChaoZhang, Tarikh: 2024-01-29 11:20:42
Tag:

img

Ringkasan

Strategi ini menggunakan kaedah pembelajaran mesin untuk melaksanakan strategi perdagangan automatik yang siap pakai. Ia mengintegrasikan pelbagai penunjuk dan model untuk menghasilkan isyarat perdagangan secara automatik dan membuat keputusan membeli dan menjual dengan sewajarnya.

Prinsip Strategi

Strategi ini terutamanya berdasarkan perkara utama berikut:

  1. Gunakan Hull Moving Average untuk menentukan arah trend pasaran
  2. Menggunakan EMA untuk menilai trend jangka pendek dan sederhana
  3. Gunakan saluran badan lilin untuk mencari tahap sokongan / rintangan utama
  4. Membuat keputusan berdasarkan persilangan antara harga terbuka dan tutup dari pelbagai jangka masa SECURITY

Secara khusus, strategi ini akan merangka Hull MA, EMA 13 tempoh, dan EMA 21 tempoh. Menghakimi arah trend jangka pendek dan sederhana berdasarkan status panjang dan pendek EMA. Digabungkan dengan Hull MA untuk menentukan trend kitaran yang lebih lama. Ini memberikan panduan mengenai arah umum untuk isyarat perdagangan berikutnya.

Sebelum menyesuaikan kedudukan, strategi akan merujuk kepada harga tertinggi dan terendah dalam saluran entiti yang sepadan dengan tahap sokongan dan rintangan.

Akhirnya, strategi ini menggunakan harga buka dan tutup 60 tempoh. Apabila harga tutup melintasi harga terbuka, isyarat beli dihasilkan. Apabila melintasi di bawah, isyarat jual dihasilkan. Ini melengkapkan keseluruhan logik perdagangan.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah ia menggabungkan pembelajaran mesin dan penunjuk analisis teknikal untuk mencapai penyelesaian perdagangan automatik yang logik, boleh disesuaikan dan mudah digunakan.

  1. Kombo multi-penunjuk meningkatkan ketepatan isyarat

    Strategi ini tidak bergantung hanya pada satu atau dua penunjuk, tetapi mengambil kira pelbagai faktor seperti trend, sokongan / rintangan, dan kejayaan harga.

  2. Tetapan parameter yang fleksibel

    Panjang tempoh Hull MA, EMA, tempoh persilangan terbuka/dekat boleh diselaraskan melalui parameter, menjadikan strategi dapat disesuaikan dengan persekitaran pasaran yang berbeza.

  3. Isyarat perdagangan automatik

    Isyarat perdagangan berdasarkan penunjuk dan persilangan boleh mencetuskan pembelian dan penjualan secara automatik tanpa penilaian manual, mengurangkan kesukaran.

  4. Paparan yang dilihat

    Carta dalam strategi dapat menunjukkan dengan jelas struktur pasaran, status trend dan harga utama, secara intuitif memaparkan asas penilaian strategi.

Analisis Risiko

Walaupun strategi ini telah dioptimumkan dalam pelbagai aspek, masih ada beberapa risiko berpotensi:

  1. Kegagalan untuk mengesan pergerakan harga yang drastik

    Dalam pasaran yang tidak menentu, penunjuk mungkin menjadi tidak berkesan atau tertunda, menyebabkan strategi gagal untuk mengesan perubahan harga dalam masa. Parameter perlu dioptimumkan untuk menyesuaikan diri dengan pasaran tersebut.

  2. Terdapat kadar ralat isyarat

    Isyarat perdagangan berdasarkan penunjuk dan model, lebih atau kurang, akan mempunyai beberapa isyarat palsu atau isyarat yang hilang.

  3. Risiko campuran panjang/pendek

    Strategi yang membuat kedua-dua kedudukan panjang dan pendek pada masa yang sama mempunyai risiko kerugian di kedua-dua belah pihak jika pertimbangan salah.

  4. Risiko kecergasan berlebihan

    Tetapan parameter yang terlalu kompleks berisiko terlalu banyak. Sistem ini perlu disederhanakan dengan jumlah gabungan parameter yang terhad.

Arahan pengoptimuman

Masih ada ruang untuk mengoptimumkan strategi ini, terutamanya dalam aspek berikut:

  1. Tambah lebih banyak isyarat penunjuk

    Sebagai tambahan kepada penunjuk sedia ada, lebih banyak penunjuk tambahan boleh diperkenalkan, seperti saluran BOLL, penunjuk KD, dan lain-lain, untuk memperkayakan rujukan sistem.

  2. Menggunakan model pembelajaran mendalam

    Menggunakan penunjuk mudah sebagai ciri untuk melatih LSTM dan model pembelajaran mendalam lain untuk meningkatkan kualiti isyarat.

  3. Masukkan data asas

    Tambah data makroekonomi, maklumat dasar dan faktor asas lain untuk mengoptimumkan keputusan kitaran panjang.

  4. Pengukuran risiko & kedudukan

    Memperkenalkan strategi stop loss, menyesuaikan saiz kedudukan secara dinamik berdasarkan turun naik pulangan strategi untuk mengawal risiko dengan ketat.

Kesimpulan

Strategi ini mengintegrasikan trend, tahap sokongan / rintangan, penembusan dan pelbagai penunjuk lain, menggunakan kaedah pembelajaran mesin untuk mencapai penyelesaian perdagangan kuantitatif automatik dan siap digunakan. Ia mempunyai kelebihan gabungan penunjuk yang pelbagai, parameter yang boleh disesuaikan dan isyarat automatik, sementara juga menghadapi penyimpangan penjejakan, ralat isyarat, risiko campuran panjang / pendek hingga tahap tertentu. Masih ada arahan untuk pengoptimuman lanjut dengan menggabungkan lebih banyak penunjuk dan model tambahan, menggabungkan faktor asas, menyesuaikan kedudukan secara dinamik dan sebagainya, untuk mencapai prestasi perdagangan kuantitatif yang lebih stabil, tepat dan pintar.


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")

///////////////////////////////////////////////////////////////////////////////////////////

Lebih lanjut