Strategi Perdagangan Rangka Masa Berbilang Masa P-Isyarat


Tarikh penciptaan: 2023-11-28 16:32:36 Akhirnya diubah suai: 2023-11-28 16:32:36
Salin: 1 Bilangan klik: 641
1
fokus pada
1619
Pengikut

Strategi Perdagangan Rangka Masa Berbilang Masa P-Isyarat

Gambaran keseluruhan

Strategi perdagangan P-Signal adalah strategi perdagangan algoritma mata wang digital berdasarkan prinsip statistik yang digabungkan dengan analisis pelbagai bingkai masa. Strategi ini menggunakan fungsi kesilapan Gaussian dan indikator P-Signal untuk membuat model fit terhadap garis matahari, garis minggu dan garis bulan Bitcoin, untuk melakukan perdagangan kadar turun naik berdasarkan garpu emas dan garpu mati.

Prinsip Strategi

P-Signal adalah indikator utama strategi P-Signal, yang menggabungkan perbezaan piawai statistik dan purata bergerak mudah, yang dipetakan ke dalam julat -1 hingga 1 melalui fungsi kesilapan Gaussian, untuk mengesan sama ada pasaran sesuai dengan peredaran normal. Rumus pengiraan khusus adalah seperti berikut:

fErf(x) = 1.0 - 1.0/(1.0 + 0.5*abs(x)) * exp(-x*x - 1.26551223 + ...)  # 高斯误差函数

fPSignal(ser, n) = fErf((stdev(ser, n) > 0 ? sma(ser, n)/stdev(ser, n)/sqrt(2) : 1)) # P-Signal指标

Strategi ini mengira indikator P-Signal pada bingkai masa Sunline, Sunline, dan Moonline, dengan melakukan dagangan apabila indikator melewati 0 dan posisi kosong apabila indikator melewati 0 . Pada masa yang sama, setkan indikator Value Valve Control untuk membuka posisi berulang.

Analisis kelebihan

Kelebihan terbesar strategi P-Signal adalah menggunakan pelbagai bingkai masa untuk meningkatkan kestabilan strategi. Garis matahari menangkap turun naik jangka pendek di pasaran, dan garisan minggu-bulan menapis pecah palsu.

Berbanding dengan bingkai masa tunggal, bingkai masa berbilang dapat memanfaatkan hentian garis matahari semasa penarikan balik, dan menggunakan bingkai masa yang lebih tinggi untuk mengurangkan frekuensi dagangan dalam keadaan yang bergolak. Secara keseluruhan, kombinasi ini dapat meminimumkan penarikan balik mutlak dan relatif sambil memastikan keuntungan.

Analisis risiko

Risiko terbesar strategi P-Signal adalah bahawa indikator itu sendiri adalah kotak hitam untuk peniaga kuantitatif. Kami sukar untuk menentukan kesesuaian indikator untuk pasaran tertentu, dan tidak dapat menentukan ruang optimum parameternya. Ini boleh menyebabkan strategi tidak berfungsi dengan baik di pasaran nyata.

Di samping itu, strategi itu sendiri mempunyai beberapa batasan. Contohnya, tidak dapat menangani keadaan yang kuat, nilai indikator yang berbeza sebagai isyarat perdagangan mungkin terlewat.

Untuk menyelesaikan masalah ini, kita boleh menyesuaikan parameter penunjuk, mengoptimumkan cara menghentikan kerugian, memperkenalkan lebih banyak penunjuk tambahan, dan sebagainya. Tetapi dengan syarat untuk mengesahkan kestabilan strategi dalam kawasan pengukuran yang cukup besar.

Arah pengoptimuman

P-Signal mempunyai beberapa strategi yang boleh dioptimumkan:

  1. Tukar parameter P-Signal: nIntr_D, nIntr_W dan nIntr_M untuk mencari kombinasi parameter yang optimum

  2. Menambah kaedah penutupan kerugian: mengesan kerugian, kehilangan masa, kehilangan ATR, dan lain-lain untuk mencari cara penutupan kerugian yang terbaik

  3. Memperkenalkan penunjuk tambahan: strategi untuk meningkatkan kefahaman mengenai keadaan tertentu, seperti memperkenalkan trend penilaian MACD

  4. Pengurusan kedudukan optimum: menetapkan kedudukan dinamik, mengoptimumkan penggunaan dana

  5. Parameter pengoptimuman pembelajaran mesin: menggunakan rangkaian saraf, algoritma genetik dan lain-lain untuk mencari parameter global yang terbaik

ringkaskan

P-Signal adalah strategi perdagangan jangka masa yang sangat berpotensi secara keseluruhan. Ia menggabungkan prinsip statistik dengan petunjuk teknikal untuk meningkatkan kestabilan dengan menggunakan analisis jangka masa yang banyak. Jika kita dapat menyelesaikan beberapa kekangan dengan banyak pengulangan dan pengoptimuman, ada kemungkinan untuk mengubahnya menjadi strategi perdagangan algoritma mata wang digital yang boleh digunakan.

Kod sumber strategi
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 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
// A good strategy should be able to handle backtesting.
// @version=4
// **********************************************************************************************************
strategy("P-Signal Strategy:", precision = 3, pyramiding = 3)
//
// Parameters and const of P-Signal.
//
nPoints_D = input(title = "Number of D Bars", type = input.integer, defval = 9, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_W = input(title = "Number of W Bars", type = input.integer, defval = 4, minval = 4, maxval = 100, group = "Parameters of observation.")
nPoints_M = input(title = "Number of M Bars", type = input.integer, defval = 6, minval = 4, maxval = 100, group = "Parameters of observation.")
int nIntr_D = nPoints_D - 1
int nIntr_W = nPoints_W - 1
int nIntr_M = nPoints_M - 1
bool bDValveOpen = true
bool bWValveOpen = true
bool bMValveOpen = true
// 
// 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)
//
// Signals for the strategy.
//
float nPSignal_D = sma(fPSignal(change(ohlc4), nIntr_D), nIntr_D)
float ndPSignal_D = sign(nPSignal_D[0] - nPSignal_D[1])
//
float nPSignal_W = sma(security(syminfo.tickerid, "W",fPSignal(change(ohlc4), nIntr_W)), nIntr_W)
float ndPSignal_W = sign(nPSignal_W[0] - nPSignal_W[1])
//
float nPSignal_M = sma(security(syminfo.tickerid, "M",fPSignal(change(ohlc4), nIntr_M)), nIntr_M)
float ndPSignal_M = sign(nPSignal_M[0] - nPSignal_M[1])
//
// P-Signal 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_D, color = color.blue, style = plot.style_line)
//
// Multi Frame Strategy 
// ... Day
if(nPSignal_D < 0 and ndPSignal_D > 0 and bDValveOpen)
    strategy.entry("long_D", strategy.long, 1) 
    bDValveOpen := false
if(nPSignal_D > 0 and ndPSignal_D < 0)
    strategy.close("long_D")
    bDValveOpen := true
// ... Week
if(nPSignal_W < 0 and ndPSignal_W > 0 and bWValveOpen)
    strategy.entry("long_W", strategy.long, 1) 
    bWValveOpen := false
if(nPSignal_W > 0 and ndPSignal_W < 0)
    strategy.close("long_W")
    bWValveOpen := true
// ... Month
if(nPSignal_M < 0 and ndPSignal_M > 0 and bMValveOpen)
    strategy.entry("long_M", strategy.long, 1) 
    bMValveOpen := false
if(nPSignal_M > 0 and ndPSignal_M < 0)
    strategy.close("long_M")
    bMValveOpen := true
// The end.