Analisis Strategi Dagangan Kuantitatif Berdasarkan Fungsi Kesalahan Gaussian

Penulis:ChaoZhang, Tarikh: 2024-01-19 14:28:03
Tag:

img

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif berdasarkan penunjuk P-Signal yang dikira oleh fungsi ralat Gaussian untuk mengukur perubahan harga.

Logika Strategi

Indikator teras strategi ini adalah P-Signal. Rumus pengiraan P-Signal adalah:

fPSignal(ser, int) =>
    nStDev = stdev(ser, int) 
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)

Di sini ser mewakili siri harga, int mewakili parameter nPoints, yang merupakan bilangan bar untuk melihat kembali.

  1. nStDev ialah penyimpangan standard harga;
  2. nSma ialah purata bergerak mudah harga;
  3. fErf adalah fungsi ralat Gaussian.

Maksud keseluruhan formula adalah untuk mengambil purata bergerak harga dibahagikan dengan penyimpangan standard harga, kemudian dibahagikan dengan sqrt(2) untuk standardisasi, dan akhirnya dipetakan ke (-1, 1) julat oleh fungsi ralat Gaussian.

Strategi menggunakan nilai Isyarat P dan tanda perubahannya untuk menentukan kemasukan dan keluar:

strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)

strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)  

Ia pergi panjang apabila P-Signal kurang daripada 0 dan berubah menjadi positif. Ia menutup kedudukan apabila P-Signal lebih besar daripada 0 dan berubah menjadi negatif.

Kelebihan

Kelebihan strategi ini termasuk:

  1. Menggunakan fungsi ralat Gaussian untuk menyesuaikan pembahagian harga. Fungsi ralat Gaussian boleh menyesuaikan pembahagian normal dengan baik, yang sejajar dengan kebanyakan pembahagian siri masa kewangan.
  2. Mengatur parameter secara automatik dengan penyimpangan standard harga. Ini menjadikan strategi lebih kukuh dalam keadaan pasaran yang berbeza.
  3. P-Signal menggabungkan kelebihan trend berikut dan pembalikan purata. Ia mempertimbangkan kedua-dua trend fluktuasi harga dan titik pembalikan, yang membantu menangkap peluang dalam kedua-dua perdagangan trend dan perdagangan pembalikan.

Risiko

Terdapat juga beberapa risiko dengan strategi ini:

  1. Risiko perdagangan frekuensi tinggi. Sebagai strategi perdagangan frekuensi tinggi yang tipikal, ia boleh menghasilkan lebih banyak perdagangan, dengan itu menanggung kos transaksi yang lebih tinggi dan risiko tergelincir.
  2. P-Signal boleh menghasilkan banyak isyarat palsu apabila harga tidak mempunyai trend atau corak yang jelas.
  3. Perhubungan kompleks antara pelbagai parameter menjadikan optimasi parameter mencabar.

Untuk mengurangkan risiko tersebut, beberapa langkah boleh dipertimbangkan: menambah penapis untuk mengurangkan kekerapan perdagangan; mengoptimumkan kombinasi parameter dan penetapan kos transaksi; ujian langsung dan memilih produk yang sesuai.

Peningkatan

Terdapat ruang untuk penambahbaikan lanjut:

  1. Menambah penapis untuk mengelakkan isyarat palsu, contohnya AND / OR dengan penunjuk lain untuk menapis beberapa bunyi bising.
  2. Mengoptimumkan kombinasi parameter. Mengatur saiz nPoints di pelbagai produk dan jangka masa untuk meningkatkan kestabilan.
  3. Mempertimbangkan parameter dinamik. penyesuaian nPoints secara bersesuaian mengikut turun naik pasaran boleh meningkatkan ketahanan.
  4. Menggabungkan kaedah pembelajaran mesin, menggunakan algoritma AI pada parameter, penapis dan pengoptimuman masa silang produk.

Kesimpulan

Kesimpulannya, idea teras strategi ini adalah inovasi, pembahagian harga yang sesuai dengan fungsi Gaussian dan menyesuaikan parameter secara automatik. Tetapi sebagai strategi perdagangan frekuensi tinggi, ia memerlukan ujian dan pengoptimuman lanjut mengenai kawalan risiko dan penyesuaian parameter sebelum keuntungan yang stabil dalam perdagangan langsung, terutama sebagai strategi perdagangan frekuensi tinggi.


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

// **********************************************************************************************************
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// P-Signal Strategy © Kharevsky
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy", precision = 3)
// Parameters and const of P-Signal.
nPoints = input(title = "Number of Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr = nPoints - 1
// Horner's method for the error (Gauss) & P-Signal functions.
fErf(x) =>
    nT = 1.0/(1.0 + 0.5*abs(x))
    nAns = 1.0 - nT*exp(-x*x - 1.26551223 + 
     nT*( 1.00002368 + nT*( 0.37409196 + nT*( 0.09678418 + 
     nT*(-0.18628806 + nT*( 0.27886807 + nT*(-1.13520398 + 
     nT*( 1.48851587 + nT*(-0.82215223 + nT*( 0.17087277 ))))))))))
    x >= 0 ? nAns : -nAns
fPSignal(ser, int) => 
    nStDev = stdev(ser, int)
    nSma = sma(ser, int)
    fErf(nStDev > 0 ? nSma/nStDev/sqrt(2) : 1.0)
// Strat.
float nPSignal = sma(fPSignal(change(ohlc4), nIntr), nIntr)
float ndPSignal = sign(nPSignal[0] - nPSignal[1])
strategy.entry("long", strategy.long, 1, when = nPSignal < 0 and ndPSignal > 0)
strategy.close("long", when = nPSignal > 0 and ndPSignal < 0)
// Plotting. 
hline(+1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
hline(-1.0, color = color.new(color.orange,70), linestyle = hline.style_dotted)
plot(nPSignal, color = color.blue, style = plot.style_line)
plot(strategy.position_size, color = color.white, style = plot.style_cross)
// Alerts.
if(strategy.position_size[0] > strategy.position_size[1])
    alert("P-Signal strategy opened the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
if(strategy.position_size[0] < strategy.position_size[1])
    alert("P-Signal strategy closed the long position: " + syminfo.tickerid + " " + timeframe.period, alert.freq_once_per_bar)
// The end.

Lebih lanjut