Artikel ini akan menjelaskan strategi perdagangan kuantitatif yang menggunakan regression mean dan teknik pelacakan tren. Strategi ini bertujuan untuk melakukan perdagangan reverse dalam situasi tren, dan untuk melakukan perdagangan sinkron yang mengikuti tren.
Strategi ini terutama menghasilkan sinyal perdagangan melalui rata-rata bergerak sederhana dan indikator RSI:
Ketika harga berada di bawah 200 periode rata-rata bergerak, menilai saat ini berada dalam fase menurun;
Perdagangan mundur pada nilai rata-rata yang berlawanan saat RSI berada di bawah 20.
Ketika harga lebih tinggi dari 200 siklus rata-rata bergerak, menilai saat ini dalam tahap naik;
Pada saat harga naik melewati Moving Average, melakukan trading trend tracking yang berjalan lancar.
Kondisi posisi kosong adalah RSI lebih tinggi dari 80 atau harga jatuh di bawah rata-rata bergerak.
Posisi perdagangan yang dapat diatur untuk Mean Value Return dan Trend Tracking.
Strategi ini menggunakan regressi rata-rata dan teknik pelacakan tren untuk melakukan operasi yang tepat pada berbagai tahap.
Kedua, keunggulan strategi
Strategi ini memiliki beberapa keuntungan utama:
Dengan menggabungkan dua teknologi yang berbeda, strategi dapat disesuaikan lebih baik.
Peluang perdagangan dapat ditemukan di pasar yang sedang tren dan juga di pasar yang bergejolak.
Anda dapat mengontrol risiko dalam berbagai mode dengan menyesuaikan posisi Anda.
Pengaturan parameter sederhana dan mudah diterapkan.
Ketiga, potensi risiko
Namun, strategi ini juga memiliki risiko:
Indikator seperti moving average dan RSI rentan terhadap terobosan palsu;
Ada kemungkinan adanya keterlambatan dalam beralih dari dua mode transaksi;
Untuk mendapatkan keuntungan jangka panjang, perlu membayar penarikan tertentu.
Empat isi, ringkasan
Artikel ini menjelaskan strategi perdagangan kuantitatif yang memanfaatkan regression mean dan teknik pelacakan tren. Strategi ini dapat melakukan perdagangan pada fase pasar yang berbeda, meningkatkan adaptasi. Tetapi juga perlu mencegah risiko kegagalan indikator dan keterlambatan pertukaran pola. Secara keseluruhan, ini memberikan strategi yang fleksibel untuk menggabungkan berbagai 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)