
Baru-baru ini, saya melihat “Strategi Arbitraj Statistik Volatiliti” yang menarik dikongsi dalam komuniti perdagangan kuantitatif. Walaupun ia dipanggil strategi arbitraj, selepas kajian teliti, saya mendapati bahawa idea teras strategi ini sebenarnya lebih seperti kaedah perdagangan kontrarian, dan sesetengah orang memanggilnya sebagai “strategi menangkap jarum.”
Perkara teras pengarang asal adalah mudah:Apabila pasaran jatuh dan turun naik secara luar biasa, ia selalunya bermakna jualan panik. Pada masa ini, pergi jauh menentang arah aliran mungkin membawa pulangan yang baik.Idea ini kedengaran munasabah. Lagipun, kita sering melihat bahawa pasaran akan mengalami pemulihan teknikal selepas panik yang melampau.

Untuk tujuan pembelajaran, saya memutuskan untuk menulis strategi berdasarkan idea ini untuk mengesahkannya. Walaupun ia mungkin sedikit berbeza daripada strategi halus pengarang asal, saya fikir mempelajari idea klasik melalui penghasilan semula manual adalah proses yang sangat berharga itu sendiri.
Logik teras strategi ini sebenarnya sangat mudah dan boleh diringkaskan dalam beberapa ayat:
Dari perspektif kewangan tingkah laku, strategi ini menangkap keadaan sentimen pasaran yang melampau. Apabila penurunan harga disertai dengan turun naik yang tinggi, ia selalunya bermakna:
Sudah tentu, ini hanyalah spekulasi teori, dan kesan sebenar masih perlu disahkan oleh data.
Saya telah menggunakan beberapa platform kuantitatif sebelum ini. Sokongan Skrip Pine FMZ adalah lebih baik, dan ia boleh disambungkan terus kepada berbilang bursa, yang sesuai untuk ujian belakang dan perdagangan sebenar.
1. Jalinan penetapan parameter
Apakah tetapan kitaran ATR yang sesuai? Apakah tetapan ambang berbilang? Tiada jawapan standard untuk parameter ini, dan anda hanya boleh mencari nilai yang agak sesuai melalui ujian berulang. Saya akhirnya memilih:
2. Kepentingan kawalan risiko
Risiko terbesar berdagang terhadap arah aliran ialah “membeli bahagian bawah di tengah-tengah gunung”. Jadi saya menambah beberapa lapisan perlindungan:
3. Reka bentuk mekanisme keluar
Ini adalah bahagian penting dalam strategi. Saya telah merancang tiga pintu keluar:
// 核心判断逻辑
atr = ta.atr(atr_period)
atr_ma = ta.sma(atr, mean_period)
price_ma = ta.sma(close, mean_period)
// 开仓条件:下跌 + 高波动
high_volatility = atr > atr_ma * atr_multiplier
price_decline = close < price_ma
long_condition = price_decline and high_volatility
Kod ini adalah teras strategi, logiknya sangat mudah, tiada yang mewah. Secara khusus:
Langkah 1: Kira petunjuk asas
atr = ta.atr(atr_period):Kira nilai ATR semasa, penunjuk ini mencerminkan julat turun naik hargaatr_ma = ta.sma(atr, mean_period): Mengira purata bergerak ATR, mewakili tahap turun naik “normal”.price_ma = ta.sma(close, mean_period): Kira purata pergerakan harga untuk menentukan arah aliranLangkah 2: Tentukan syarat pencetus
high_volatility = atr > atr_ma * atr_multiplier:Adakah turun naik semasa sangat tinggi? Jika ATR semasa melebihi 2 kali purata ATR (lalai), ia dianggap “kemeruapan tidak normal”price_decline = close < price_ma:Adakah harga jatuh? Jika harga semasa berada di bawah purata bergerak, ia dianggap jatuhlong_condition = price_decline and high_volatility:Dua syarat dipenuhi pada masa yang sama untuk membuka lebih banyakPenjelmaan idea teras Garis kod ini mencerminkan idea teras strategi: kami tidak menentang arah aliran pada setiap masa, tetapi tunggu saat “harga jatuh, tetapi turun naik tiba-tiba meningkat”. Detik ini selalunya bermakna terdapat peristiwa atau panik secara tiba-tiba, dan harga mungkin bertindak balas keterlaluan, memberikan kami peluang untuk dagangan arah aliran balas.

Prestasi ujian belakang XRP:

Prestasi ujian belakang ETH:

Untuk varieti arus perdana dan agak stabil, terdapat lebih sedikit peluang untuk membuka kedudukanMata wang arus perdana seperti ETH jarang memenuhi keperluan.
Mata wang yang lebih kecil mempunyai lebih banyak peluang. Mata wang seperti XRP mempunyai turun naik yang lebih tinggi dan keadaan pencetus lebih kerap.
Kitaran 5 minit adalah lebih sesuaiTempoh yang lebih pendek mempunyai terlalu banyak bunyi, tempoh yang lebih lama bertindak balas terlalu perlahan.
Yuran pengendalian adalah kos yang tidak boleh diabaikanTerutama untuk perdagangan frekuensi tinggi, yuran pengendalian akan menjejaskan keuntungan akhir dengan ketara.
Pengeluaran semula strategi ini mengajar saya beberapa perkara penting:
1. Logik mudah selalunya lebih berkesan Logik teras strategi ini adalah sangat mudah, tetapi ia sememangnya boleh menangkap beberapa peluang dalam persekitaran pasaran tertentu. Kerumitan tidak bermakna keberkesanan, dan kadangkala kaedah mudah dan langsung lebih praktikal.
2. Pengoptimuman parameter ialah kerja teknikal Logik yang sama, tetapan parameter yang berbeza boleh membawa kepada hasil yang berbeza sama sekali. Ini memerlukan banyak ujian dan pemahaman yang mendalam tentang pasaran.
3. Kawalan risiko sentiasa diutamakan Berdagang melawan arah aliran sememangnya berisiko tinggi, dan langkah kawalan risiko yang ketat adalah perlu. Pengurusan risiko tidak boleh diabaikan hanya kerana kejayaan.
Melalui amalan ini, saya juga melihat beberapa batasan strategi ini:
Jika kita ingin terus mengoptimumkan strategi ini, saya fikir kita boleh bermula dari beberapa arah:
Saya sangat berterima kasih kepada penulis asal kerana berkongsi ideanya, yang memberi saya peluang pembelajaran yang baik. Walaupun pelaksanaan saya mungkin kasar dan terdapat jurang dengan strategi halus pengarang asal, proses pengeluaran semula manual ini telah memberi saya pemahaman yang lebih mendalam tentang strategi pengembalian min.
Ini adalah bagaimana perdagangan kuantitatif dipelajari. Mulakan dengan meniru, berfikir dalam amalan, dan berkembang melalui kegagalan.Tiada strategi yang sempurna, hanya satu proses mendekati kebenaran pasaran secara beransur-ansur melalui pembelajaran dan penambahbaikan berterusan.
Untuk rakan-rakan yang juga belajar perdagangan kuantitatif, nasihat saya ialah:
Saya harap penerokaan ini dapat membantu semua orang. Pasaran sentiasa berubah, dan pembelajaran kami sentiasa di atas jalan.
Sumber Strategi:[Arbitraj statistik penyebaran turun naik], prinsipnya diumumkan, kadar kemenangan adalah sangat tinggi! Faedahnya sangat menakjubkan!
Artikel ini adalah untuk pembelajaran dan komunikasi sahaja dan bukan merupakan nasihat pelaburan. Dagangan kuantitatif adalah berisiko dan anda harus berhati-hati apabila memasuki pasaran.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-24 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","tradesMode":"1"}]
args: [["v_input_float_4",0.5],["v_input_float_5",1.5],["RunMode",1,358374]]
*/
//@version=5
strategy(title="逆势短线均值回归策略", overlay=false, pyramiding=5)
// ===== INPUT PARAMETERS =====
// 风险管理参数
risk_per_trade = input.float(2.0, title="单次交易风险 (%)", minval=0.1, maxval=10.0, step=0.1)
max_position_size = input.float(10.0, title="最大仓位大小 (%)", minval=1.0, maxval=50.0, step=1.0)
// ATR和波动率参数
atr_period = input.int(14, title="ATR周期", minval=5, maxval=50)
atr_multiplier = input.float(2.0, title="ATR倍数阈值", minval=1.0, maxval=5.0, step=0.1)
mean_period = input.int(20, title="均值回归周期", minval=5, maxval=100)
// 止盈止损参数
use_stop_loss = input.bool(true, title="使用止损")
stop_loss_pct = input.float(3.0, title="止损百分比 (%)", minval=0.5, maxval=10.0, step=0.1)
use_take_profit = input.bool(true, title="使用止盈")
take_profit_pct = input.float(6.0, title="止盈百分比 (%)", minval=1.0, maxval=20.0, step=0.1)
// ATR回归平仓参数
use_atr_exit = input.bool(true, title="使用ATR回归平仓")
atr_exit_threshold = input.float(1.0, title="ATR退出阈值", minval=0.5, maxval=3.0, step=0.1)
// ===== CALCULATIONS =====
// ATR计算
atr = ta.atr(atr_period)
atr_ma = ta.sma(atr, mean_period)
// 价格均线
price_ma = ta.sma(close, mean_period)
// 波动率判断
high_volatility = atr > atr_ma * atr_multiplier
// 下跌判断
price_decline = close < price_ma
// 价格距离均线的偏离度
price_deviation = math.abs(close - price_ma) / price_ma
// ===== ENTRY CONDITIONS =====
// 开多条件:下跌行情 + 高波动率
long_condition = price_decline and high_volatility and strategy.position_size < max_position_size
// ===== EXIT CONDITIONS =====
// ATR回归均值退出条件
atr_mean_reversion = atr <= atr_ma * atr_exit_threshold
// 止损止盈条件
long_stop_loss = strategy.position_avg_price * (1 - stop_loss_pct / 100)
long_take_profit = strategy.position_avg_price * (1 + take_profit_pct / 100)
// ===== STRATEGY EXECUTION =====
// 开多仓
if long_condition
strategy.entry("Long", strategy.long, qty=risk_per_trade, comment="逆势开多")
// 平仓条件
if strategy.position_size > 0
// ATR回归平仓
if use_atr_exit and atr_mean_reversion
strategy.close("Long", comment="ATR回归平仓")
// 止损
if use_stop_loss and close <= long_stop_loss
strategy.close("Long", comment="止损平仓")
// 止盈
if use_take_profit and close >= long_take_profit
strategy.close("Long", comment="止盈平仓")
// ===== PLOTTING =====
// 绘制均线
plot(price_ma, color=color.blue, linewidth=2, title="价格均线", overlay=true)
// 绘制ATR
plotchar(high_volatility, "高波动", "▲", location.belowbar, color=color.red, size=size.small)
// 绘制开仓信号
plotshape(long_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.normal, title="开多信号")
// 绘制止盈止损线
if strategy.position_size > 0
plot(long_stop_loss, color=color.red, style=plot.style_linebr, linewidth=1, title="止损线")
plot(long_take_profit, color=color.green, style=plot.style_linebr, linewidth=1, title="止盈线")
// ATR指标显示
plot(atr, color=color.purple, title="ATR")
plot(atr_ma, color=color.orange, title="ATR均线")
// ===== ALERTS =====
// 开仓提醒
if long_condition
alert("逆势开多信号触发", alert.freq_once_per_bar)
// 平仓提醒
if strategy.position_size > 0 and atr_mean_reversion
alert("ATR回归,建议平仓", alert.freq_once_per_bar)