
Ini bukan strategi multi-indikator biasa. Kombinasi WaveTrend + Connors RSI + kemerosotan regresi linear, kunci adalah mekanisme penyegerakan tetingkap: semua isyarat beli mesti muncul dalam 2 garis K, isyarat individu diabaikan secara langsung. Reka bentuk ini menyaring 90% isyarat palsu secara langsung.
Strategi tradisional yang mudah menghasilkan kebisingan dengan menilai setiap indikator secara bebas atau memerlukan banyak peluang yang terlewatkan untuk mencetuskan secara serentak. Strategi ini mencari keseimbangan: tingkap toleransi pada K-line menjamin hubungan isyarat dan mengelakkan keperluan sinkronisasi yang terlalu ketat.
Panjang WT ditetapkan sebagai 10 kitaran, garis super jual - 48, garis super beli - 48. Kombinasi parameter ini lebih agresif daripada RSI tradisional 30⁄70, dan dapat menangkap isyarat pembalikan harga lebih awal. Kelebihan WT adalah bahawa ia menggabungkan kedudukan harga dan kadar turun naik, lebih dipercayai daripada RSI semata-mata dalam keadaan goyah.
Yang penting adalah cara WT mengira:*EMA yang menyimpang), formula ini secara semula jadi mempunyai fungsi penyesuaian kadar turun naik. Apabila turun naik pasaran meningkat, pembahagian menjadi lebih besar, dan nilai WT agak stabil, mengelakkan kesalahan RSI biasa semasa turun naik tinggi.
CRSI adalah bukan RSI biasa, ia menggabungkan harga RSI, RSI berturut-turut, dan peratusan perubahan harga. Had oversold 20 lebih radikal daripada 30 tradisional, tetapi mekanisme triple verifikasi CRSI mengurangkan kemungkinan isyarat palsu.
Panjang RSI 6 kitaran ditetapkan lebih pendek untuk meningkatkan sensitiviti isyarat. Pada tahap 15 minit, 6 kitaran bersamaan dengan memori harga 1.5 jam, yang dapat menangkap oversold jangka pendek dan tidak terlalu terlewat. Parameter ini sangat berkesan untuk varian yang diperdagangkan 24 jam seperti BTC.
LSDD = harga semasa - nilai regresi linear, menunjukkan harga mula menyimpang dari garis trend menurun apabila LSDD melintasi 0-axis. Tetapan 20 kitaran meliputi 5 jam pada carta 15 minit, dapat mengidentifikasi perubahan trend jangka pendek.
Keistimewaan penunjuk ini adalah bahawa ia bukan sekadar mengikuti trend, tetapi mengukur bias trend. Apabila harga mula menyimpang dari garis pengembalian ke atas selepas penurunan yang berterusan, ia sering menandakan permulaan rebound. Gabungan dengan isyarat oversold WT dan CRSI, ia membentuk pengesahan berganda “oversold + trend reversal”.
Strategi ini direka bentuk sebagai pure multi-head, 30% dana setiap kali membuka kedudukan, membenarkan 1 kenaikan kedudukan. Peraturan ini sesuai untuk trend kenaikan jangka panjang cryptocurrency, sambil menguruskan risiko melalui kawalan kedudukan. Kedudukan tunggal 30% dapat memperoleh keuntungan yang mencukupi dan mengelakkan risiko berlebihan dalam satu perdagangan.
Syarat keluar sama ketat: WT overbuy ((> 48) AND CRSI overbuy ((> 80) AND LSDD overnegative, tiga syarat mesti dipenuhi pada masa yang sama. Reka bentuk ini memastikan integriti perdagangan trend dan mengelakkan keluar terlalu awal.
Strategi ini berfungsi dengan baik pada tahap pengulangan 15 minit BTC, tetapi ini tidak bermakna ia berkesan dalam semua keadaan pasaran. Dalam pasaran yang bergolak, walaupun pengesahan tiga kali mungkin menghasilkan lebih banyak isyarat palsu. Strategi ini paling sesuai untuk keadaan pasaran dengan ciri-ciri trend yang jelas.
Petua risiko: Pemantauan semula sejarah tidak mewakili keuntungan masa depan, pasaran cryptocurrency berfluktuasi sangat tinggi, terdapat risiko kehilangan modal. Disarankan untuk melakukan verifikasi perdagangan kertas yang mencukupi sebelum perdagangan sebenar, dan mengawal kedudukan keseluruhan dengan ketat.
/*backtest
start: 2024-10-09 00:00:00
end: 2025-10-07 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT","balance":500000}]
*/
//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © alescha13
// WT + CRSI + Linear Regression Long-only Strategy
// Description:
// This long-only trading strategy combines WaveTrend (WT),
// Connors RSI (CRSI), and a Linear Regression Slope (LSDD) trend filter.
// Signals are generated only when all three indicators align within a defined window.
// Exits occur when all indicators turn bearish.
// Backtested on BTC with 15-minute timeframe.
strategy("WT + CRSI + Linear Regression Long-only © alescha13",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=30,
pyramiding=1,
calc_on_every_tick=false,
process_orders_on_close=true)
// =====================
// Inputs
// =====================
wtLength = input.int(10, "WT Length")
wtOversold = input.int(-48, "WT Oversold Level")
wtOverbought = input.int(48, "WT Overbought Level")
crsiRSILength = input.int(6, "CRSI RSI Length")
crsiOversold = input.int(20, "CRSI Oversold Level")
crsiOverbought = input.int(80, "CRSI Overbought Level")
lsddLen = input.int(20, "Linear Regression Length")
windowSize = input.int(2, "Window size (bars) for all signals", minval=1)
// =====================
// Helper: CRSI Function
// =====================
updown(s) =>
isEqual = s == s[1]
isGrowing = s > s[1]
ud = 0.0
ud := isEqual ? 0 : isGrowing ? (nz(ud[1]) <= 0 ? 1 : nz(ud[1]) + 1) : (nz(ud[1]) >= 0 ? -1 : nz(ud[1]) - 1)
ud
crsiFunc(src, lenrsi) =>
lenupdown = 2
lenroc = 100
rsi = ta.rsi(src, lenrsi)
updownrsi = ta.rsi(updown(src), lenupdown)
percentrank = ta.percentrank(ta.roc(src, 1), lenroc)
math.avg(rsi, updownrsi, percentrank)
// =====================
// WaveTrend (WT) Calculation
// =====================
ap = (high + low + close) / 3.0
esa = ta.ema(ap, wtLength)
d = ta.ema(math.abs(ap - esa), wtLength)
ci = (ap - esa) / (0.015 * d)
wt = ta.ema(ci, 3)
wtBull = ta.crossover(wt, wtOversold)
wtBear = wt > wtOverbought
// =====================
// CRSI Calculation
// =====================
crsiValue = crsiFunc(close, crsiRSILength)
crsiBull = crsiValue < crsiOversold
crsiBear = crsiValue > crsiOverbought
// =====================
// Linear Regression LSDD Calculation
// =====================
slope = ta.linreg(close, lsddLen, 0)
lsdd = close - slope
lsddBull = ta.crossover(lsdd, 0)
lsddBear = lsdd < 0
// =====================
// Window Logic (Synchronize Signals)
// =====================
var int wtBarIndex = na
var int crsiBarIndex = na
var int lsddBarIndex = na
if wtBull
wtBarIndex := bar_index
if crsiBull
crsiBarIndex := bar_index
if lsddBull
lsddBarIndex := bar_index
buySignal = false
if not na(wtBarIndex) and not na(crsiBarIndex) and not na(lsddBarIndex)
maxBar = math.max(wtBarIndex, crsiBarIndex, lsddBarIndex)
minBar = math.min(wtBarIndex, crsiBarIndex, lsddBarIndex)
if (maxBar - minBar) <= windowSize
buySignal := true
wtBarIndex := na
crsiBarIndex := na
lsddBarIndex := na
finalLong = buySignal
// =====================
// Exit Logic
// =====================
sellSignal = wtBear and crsiBear and lsddBear
// =====================
// Entries / Exits
// =====================
if finalLong
strategy.entry("Long", strategy.long, comment="Long Entry")
if sellSignal
strategy.close("Long", comment="Long Exit")
// =====================
// Background Color for Signals
// =====================
bgcolor(finalLong ? color.new(color.green, 85) : na)
bgcolor(sellSignal ? color.new(color.red, 85) : na)
// =====================
// Plots
// =====================
plot(wt, color=color.new(color.blue, 0), title="WT")
plot(crsiValue, color=color.new(color.purple, 0), title="CRSI")
plot(lsdd, color=color.new(color.orange, 0), title="LSDD")
plotshape(finalLong, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// =====================
// Alerts
// =====================
alertcondition(finalLong, title="Long Alert", message="WT + CRSI + LSDD Long Signal")
alertcondition(sellSignal, title="Exit Alert", message="WT + CRSI + LSDD Exit Signal")