Artikel ini akan menerangkan secara terperinci strategi perdagangan kuantitatif yang menggunakan pengembalian nilai rata-rata dan teknik trend-following pada masa yang sama. Strategi ini bertujuan untuk melakukan perdagangan terbalik dalam keadaan trend, dan mengikuti trend untuk melakukan perdagangan arah.
I. Prinsip-prinsip Strategi
Strategi ini menghasilkan isyarat dagangan terutamanya melalui purata bergerak sederhana dan RSI:
Apabila harga berada di bawah purata bergerak 200 kitaran, maka ia dianggap berada dalam tahap menurun;
Apabila RSI berada di bawah 20, anda boleh melakukan perdagangan berbalik pada nilai rata-rata yang berlawanan;
Apabila harga berada di atas purata bergerak 200 kitaran, maka ia dianggap berada dalam tahap naik;
Perdagangan mengikut trend yang berjalan lancar apabila harga berada di atas purata bergerak.
Syarat kedudukan rata adalah RSI lebih tinggi daripada 80 atau harga jatuh di bawah purata bergerak.
Posisi dagangan yang boleh diset semula dan trend track secara berasingan.
Strategi ini menggunakan teknik pengembalian nilai rata-rata dan trend tracking secara komprehensif, untuk melakukan operasi yang sesuai pada tahap yang berbeza.
Kedua, kelebihan strategi
Strategi ini mempunyai kelebihan utama:
Menggabungkan dua teknologi yang berbeza untuk meningkatkan kebolehan adaptasi strategi;
Peluang untuk berdagang boleh ditemui di pasaran yang sedang tren dan di pasaran yang bergolak;
Anda boleh mengawal risiko dalam pelbagai mod dengan menyesuaikan kedudukan anda.
Tetapan parameter mudah dan mudah dilaksanakan.
Ketiga, potensi risiko
Tetapi strategi ini juga mempunyai risiko:
Indeks seperti purata bergerak dan RSI terdedah kepada pecah palsu;
Terdapat kemungkinan bahawa pertukaran antara kedua-dua mod perdagangan akan terlewat.
Ia memerlukan pengeluaran tertentu untuk mendapatkan faedah jangka panjang.
Empat isi, ringkasan
Artikel ini menerangkan secara terperinci mengenai strategi perdagangan kuantitatif yang menggunakan teknik regresi nilai rata-rata dan trend. Strategi ini dapat melakukan perdagangan pada tahap pasaran yang berbeza, meningkatkan kesesuaian. Tetapi juga perlu mencegah risiko kegagalan indikator dan keterlambatan peralihan model. Secara keseluruhan, ia menyediakan strategi yang fleksibel yang menggabungkan pelbagai teknologi.
/*backtest
start: 2022-09-07 00:00:00
end: 2023-04-05 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/
// © I11L
//@version=5
strategy("Mean Reversion and Trendfollowing", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false)
// Input for the starting date
start_date = input(timestamp("1 Feb 2000 12:00"), title="Starting Date")
enableMeanReversion = input.bool(true)
enableTrendfollowing = input.bool(true)
trendPositionFactor = input.float(1)
meanReversionPositionFactor = input.float(0.5)
// Convert the input string to a timestamp
start_ts = timestamp(year(start_date), month(start_date), dayofmonth(start_date), 0, 0)
// Check if the current bar's time is greater than or equal to the start timestamp
start_condition = time >= start_ts
var tradeOrigin = ""
sma200 = ta.sma(close,200)
rsi2 = ta.rsi(close,2)
isMeanReversionMode = close < sma200 or not(enableTrendfollowing)
isTrendfollowingMode = close > sma200 or not(enableMeanReversion)
isRsiBuy = rsi2 < 20 and enableMeanReversion
isRsiClose = rsi2 > 80 and enableMeanReversion
isSmaBuy = close > sma200 and enableTrendfollowing
isSmaClose = close < sma200 * 0.95 and enableTrendfollowing
isBuy = (isMeanReversionMode and isRsiBuy) or (isTrendfollowingMode and isSmaBuy)
positionSizeFactor = isSmaBuy ? trendPositionFactor : meanReversionPositionFactor
// Only execute the strategy after the starting date
if (start_condition)
if (isBuy and strategy.opentrades == 0)
tradeOrigin := isSmaBuy ? "SMA" : "RSI"
strategy.entry("My Long Entry Id", strategy.long, qty=(strategy.equity / close) * positionSizeFactor, comment=str.tostring(positionSizeFactor))
isClose = tradeOrigin == "SMA" ? isSmaClose : isRsiClose
if (isClose)
strategy.exit("Exit", limit = close)
plot(sma200)
plot(sma200 * 0.95, color=color.orange)