
Strategi pembalikan sinyal P-signal adalah strategi perdagangan kuantitatif dari sinyal spasial probabilitas yang dibangun berdasarkan parameter statistik dan fungsi kesalahan. Strategi ini secara dinamis mengambil sinyal perdagangan untuk menangkap titik pembalikan pasar dengan menelusuri parameter distribusi nilai tertinggi dari serangkaian garis K.
Indikator inti dari strategi ini adalah P-sinyal, yang menggabungkan parameter statistik dari moving average dan standard deviation, yang dipetakan ke antara -1 dan 1 melalui fungsi Gaussian error, untuk membentuk indikator penilaian kuantitatif. Ketika P-sinyal berbalik dari positif ke negatif, ia melakukan lebih banyak, dan ketika berbalik dari negatif ke positif, ia membentuk logika strategi berbalik.
Parameter strategi meliputi Cardinality, ΔErf dan observasi waktu. Cardinality mengontrol jumlah sampel, ΔErf mengontrol zona mati dari fungsi kesalahan, mengurangi frekuensi transaksi.
Keuntungan terbesar dari strategi pembalikan sinyal P adalah bahwa strategi ini didasarkan pada distribusi probabilitas parameter statistik yang dapat secara efektif menilai karakteristik pasar dan menangkap peluang pembalikan. Ini menggabungkan lebih banyak informasi pasar dan penilaian yang lebih komprehensif dan dapat diandalkan daripada indikator teknis tunggal.
Selain itu, spesifikasi desain kebijakan parametrisasi, pengguna dapat menyesuaikan ruang parameter sesuai dengan kebutuhan mereka sendiri untuk mencari kombinasi terbaik. Hal ini menjamin fleksibilitas dan fleksibilitas kebijakan.
Risiko utama dari strategi pembalikan sinyal P adalah bahwa strategi ini terlalu bergantung pada parameter distribusi probabilitas, sehingga dapat menyebabkan kesalahan penilaian. Selain itu, strategi pembalikan memiliki rasio kerugian yang rendah secara umum, dan keuntungan per unit terbatas.
Dengan meningkatkan parameter Cardinality dan meningkatkan jumlah sampel, dapat mengurangi dampak dari keanehan data. Dengan tepat memperbesar kisaran ΔErf dan mengurangi frekuensi transaksi untuk mengendalikan risiko.
Strategi pembalikan sinyal P- dapat dioptimalkan dalam beberapa hal:
Dengan kombinasi indikator lain, filter sinyal yang tidak normal, seperti peningkatan volume transaksi dan karakteristik lainnya.
Ini adalah salah satu metode yang paling populer untuk memvalidasi sinyal dalam beberapa frame waktu, meningkatkan stabilitas penilaian.
Meningkatkan strategi stop loss dan mengurangi kerugian tunggal.
Optimalkan parameter untuk mencari kombinasi terbaik dan meningkatkan tingkat keuntungan.
Pengaturan dinamis parameter penilaian yang digabungkan dengan pembelajaran mesin
P-Signal Reversal Strategi Berdasarkan probabilitas distribusi membangun kerangka perdagangan kuantitatif, desain parameternya fleksibel, ramah pengguna. Strategi ini efektif menilai karakteristik statistik pasar, menangkap peluang reversal. Strategi ini dapat meningkatkan stabilitas dan profitabilitas melalui verifikasi multi-indikator, pengoptimalan stop loss, dan lain-lain.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// **********************************************************************************************************
// 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 RVS © Kharevsky
// **********************************************************************************************************
strategy('P-Signal Strategy RVS.', precision=3, process_orders_on_close=true, pyramiding=0,
commission_type=strategy.commission.percent,
commission_value=0.2)
// Parameters and const of P-Signal.
nPoints = input.int(title='Cardinality:', defval=4, minval=4, maxval=200, group='Parameters of strategy.')
ndErf = input.float(title='|ΔErf|:', defval=0, minval=0, maxval=1, step=0.01, group='Parameters of strategy.')
tStartDate = input(title='Start date:', defval=timestamp('30 Dec 1957 00:00 +0300'), group='Observation time.')
int nIntr = nPoints - 1
// Horner's method for the error (Gauss) & P-Signal functions.
fErf(x) =>
nT = 1.0 / (1.0 + 0.5 * math.abs(x))
nAns = 1.0 - nT * math.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 = ta.stdev(ser, int)
nSma = ta.sma(ser, int)
nStDev > 0 ? fErf(nSma / nStDev / math.sqrt(2)) : math.sign(nSma)
// Data.
float nPSignal = ta.sma(fPSignal(ta.change(ohlc4), nIntr), nIntr)
float ndPSignal = math.sign(nPSignal[0] - nPSignal[1])
bool isStartDate = true
// Reversal Strategy.
strategy.entry('short', strategy.short, when=isStartDate and nPSignal > ndErf and ndPSignal < 0)
strategy.entry('long', strategy.long, when=isStartDate and nPSignal < -ndErf and ndPSignal > 0)
// Plotting.
hline(+1.0, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
hline(-1.0, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
hline(-ndErf, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
hline(ndErf, color=color.new(color.orange, 70), linestyle=hline.style_dotted, editable=false)
plot(nPSignal, color=color.new(color.blue, 0), style=plot.style_line)
// Table of state.
if barstate.isconfirmed
var Table = table.new(position=position.bottom_right, columns=3, rows=1,
frame_color=color.new(color.orange, 70), frame_width=1,
border_color=color.new(color.orange, 70), border_width=1)
table.cell(table_id=Table, column=0, row=0,
text=strategy.position_size > 0 ? 'Long: ' + str.tostring(strategy.position_size) : 'Short: ' + str.tostring(strategy.position_size),
text_color=strategy.position_size > 0 ? color.green : color.red)
table.cell(table_id=Table, column=1, row=0,
text='Net P/L: ' + str.tostring(strategy.netprofit, '#.#'),
text_color=strategy.netprofit > 0 ? color.green : color.red)
table.cell(table_id=Table, column=2, row=0,
text='Open P/L: ' + str.tostring(strategy.openprofit, '#.#'),
text_color=strategy.openprofit > 0 ? color.green : color.red)
// The end.