Momentum Pengayun Berbilang Ditapis Pulangan Min Strategi Perdagangan Bitcoin

RSI WT STOCH RSI MEAN REVERSION OSCILLATOR SCALPING FIBONACCI momentum
Tarikh penciptaan: 2025-08-15 12:00:17 Akhirnya diubah suai: 2025-08-15 12:00:17
Salin: 0 Bilangan klik: 286
2
fokus pada
319
Pengikut

Momentum Pengayun Berbilang Ditapis Pulangan Min Strategi Perdagangan Bitcoin Momentum Pengayun Berbilang Ditapis Pulangan Min Strategi Perdagangan Bitcoin

Gambaran keseluruhan

Strategi ini adalah strategi kuantitatif yang direka khusus untuk perdagangan garis pendek bitcoin, yang menggabungkan dengan bijak RSI, indikator WaveTrend dan RSI acak untuk membentuk sistem penapisan berlapis. Inti strategi ini adalah untuk memanfaatkan ciri-ciri harga yang terbalik pada RSI, sambil menggunakan WaveTrend dan RSI acak sebagai penapis pengesahan untuk memastikan perdagangan yang menang di kawasan overbought dan oversold. Strategi ini menggunakan jangka masa 1 minit untuk perdagangan garis pendek frekuensi tinggi, dan dilengkapi dengan mekanisme stop-loss dan fungsi perdagangan reverse yang fleksibel.

Prinsip Strategi

Strategi ini adalah berasaskan kepada tiga indikator teknologi utama yang berfungsi bersama:

  1. RSI BandsStrategi ini menggunakan RSI Channel Indicator versi yang diperbaharui, berdasarkan tahap RSI overbought (70), dan oversold (30), untuk mengira pergerakan harga ke atas, ke bawah, dan ke tengah. Ia menghasilkan isyarat plus apabila harga menembusi pergerakan ke bawah, dan isyarat minus apabila ia menembusi pergerakan ke atas.

  2. Indeks WaveTrendIndeks WT1 menggunakan LazyBear, dengan panjang saluran yang ditetapkan secara default adalah 11, panjang purata adalah 12, tahap overbought adalah +60, tahap oversold adalah -60. Indeks ini adalah pengayun dinamik yang digunakan untuk menentukan sama ada pasaran berada dalam keadaan overbought atau oversold.

  3. RSI rawak (RSI stokastik): Hanya menggunakan K-line, set K panjang 5, RSI panjang 14, dan panjang rawak 10. Penunjuk ini lebih lanjut mengesahkan keadaan pasaran yang terlalu banyak membeli dan menjual, meningkatkan kebolehpercayaan isyarat.

Logik penjanaan isyarat strategi adalah seperti berikut:

  • Buat lebih banyak isyarat: harga jatuh RSI di bawah landasan AND WT di bawah paras oversold ((-60) AND K nilai RSI secara rawak di bawah paras oversold ((0 + toleransi)
  • Isyarat kosong: harga menembusi RSI di atas landasan AND WT lebih tinggi daripada tahap overbought ((+60) AND nilai K RSI secara rawak lebih tinggi daripada tahap overbought ((100-capacity gap)

Terdapat dua pilihan mod pemicu perdagangan: “Cross ((close) ” menggunakan harga penutupan melintasi saluran RSI, “Touch ((wick)) ” membolehkan garis bayangan menyentuh isyarat pemicu saluran RSI. Di samping itu, strategi ini juga merangkumi mekanisme keluar terbalik, iaitu apabila isyarat terbalik muncul, anda boleh membuka posisi dan membuka posisi terbalik, sesuai untuk persekitaran pasaran yang lebih turun naik.

Kelebihan Strategik

Dengan mengkaji kod strategi ini secara mendalam, kelebihan yang ketara dapat diringkaskan:

  1. Sistem penapisan berbilangDengan menggabungkan tiga petunjuk teknikal yang berbeza (RSI Channel, WaveTrend dan RSI Random), sistem penapisan berlapis yang kuat telah mengurangkan risiko penembusan palsu dengan ketara dan meningkatkan kualiti dan kebolehpercayaan isyarat perdagangan.

  2. Mekanisme perdagangan yang fleksibelStrategi menawarkan pelbagai pilihan yang boleh disesuaikan, termasuk sama ada menggunakan keluaran terbalik, sama ada mengaktifkan pilihan mod stop / stop loss dan pemicu, yang membolehkan peniaga menyesuaikan diri dengan keadaan pasaran dan keutamaan risiko peribadi.

  3. Pengurusan risiko yang berkesanPeratusan Stop-Loss yang terbina dalam mengawal kadar risiko dan ganjaran setiap dagangan dengan tepat, melindungi keselamatan dana.

  4. Sistem isyarat automatik: Mengintegrasikan fungsi amaran Telegram, mewujudkan pemberitahuan isyarat dagangan dalam masa nyata, memudahkan peniaga untuk menjejaki dan melaksanakan dagangan tepat pada masanya.

  5. Mekanisme Maklumat Anti-Sampah: Strategi mewujudkan mekanisme untuk mengelakkan penggera berulang, memastikan hanya satu isyarat dihantar dalam saluran K yang sama, mengelakkan maklumat yang berlebihan.

  6. Kebolehan berdagang frekuensi tinggiStrategi ini berdasarkan pada jangka masa 1 minit, sesuai untuk persekitaran dagangan frekuensi tinggi, mampu menangkap turun naik harga jangka pendek, dan membolehkan masuk dan keluar pasaran dengan cepat.

Risiko Strategik

Walaupun strategi ini direka dengan baik, terdapat beberapa risiko yang berpotensi:

  1. Risiko perdagangan frekuensi tinggiPenyelesaian: Anda boleh mempertimbangkan untuk menambah penapis masa tambahan atau hanya berdagang pada waktu pasaran tertentu.

  2. Risiko penembusan palsuWalaupun terdapat banyak penapis, terdapat kemungkinan untuk mengalami penembusan palsu di pasaran yang bergelombang tinggi, yang menyebabkan kerugian perdagangan. Penyelesaian: menyesuaikan parameter penunjuk, menambah syarat pengesahan, atau menilai trend dengan tempoh masa yang lebih lama.

  3. Kepekaan ParameterPerforma strategi sangat bergantung pada parameter yang ditetapkan, dan keadaan pasaran yang berbeza mungkin memerlukan parameter yang berbeza. Penyelesaian: melakukan pengesanan sejarah yang mencukupi, mencari kombinasi parameter yang optimum, dan mengoptimumkan semula parameter secara berkala.

  4. Kebolehan beradaptasi dengan trend pasaran: Strategi pulangan rata-rata ini berfungsi dengan baik di pasaran goyah, tetapi mungkin tidak berfungsi dengan baik di pasaran yang sedang tren kuat. Penyelesaian: Tambah penapis trend dan hadkan dagangan anti-trend semasa tren kuat.

  5. Risiko sistemikBergantung kepada sistem pemberitahuan Telegram, peluang perdagangan mungkin terlepas jika sistem pemberitahuan rosak. Penyelesaian: Menerapkan saluran pemberitahuan sandaran atau mekanisme amaran tempatan.

Arah pengoptimuman strategi

Berdasarkan analisis kod, strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Menambah penilaian status pasaran: Memperkenalkan mekanisme penyesuaian diri, menyesuaikan parameter strategi secara dinamik mengikut turun naik pasaran dan kekuatan trend. Ini membolehkan strategi mengekalkan prestasi yang baik dalam keadaan pasaran yang berbeza. Pelaksanaan khusus dapat menilai keadaan pasaran dengan mengira ATR (rata-rata gelombang sebenar) atau indikator kadar turun naik.

  2. Analisis pelbagai kerangka masa: Mengintegrasikan maklumat mengenai trend pasaran pada bingkai masa yang lebih tinggi, hanya berdagang di arah trend utama, atau menggunakan parameter yang berbeza dalam keadaan trend yang berbeza. Sebagai contoh, anda boleh menambah garis harian atau 4 jam untuk menilai trend, hanya melakukan lebih banyak dalam tren naik, hanya melakukan kosong dalam tren turun.

  3. Optimumkan masa kemasukan: Meningkatkan ketepatan kemasukan dengan menambah pengesahan jumlah transaksi atau pengenalan corak tingkah laku harga. Anda boleh mempertimbangkan untuk menunggu titik kemasukan yang lebih menguntungkan setelah isyarat dihasilkan, dan bukannya masuk dengan segera.

  4. Peningkatan mekanisme penangguhan kerugian: Mampu melakukan hentian hentian dinamik, seperti hentian yang dijejaki atau tetapan hentian berdasarkan kadar turun naik, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Sebagai contoh, jarak hentian boleh ditetapkan berdasarkan ATR, atau menggunakan keuntungan perlindungan hentian bergerak.

  5. Menambah elemen pembelajaran mesin: Menggunakan algoritma pembelajaran mesin untuk mengenal pasti kombinasi parameter terbaik secara automatik atau untuk meramalkan keberkesanan isyarat. Dengan model latihan data sejarah, setiap isyarat perdagangan diberi berat kebarangkalian.

  6. Pengurusan risiko: Mencapai penyesuaian skala kedudukan dinamik berdasarkan nilai bersih akaun, mengurangkan saiz urus niaga selepas kerugian berturut-turut, meningkatkan saiz urus niaga selepas keuntungan berturut-turut, mencapai pengurusan dana yang lebih saintifik.

ringkaskan

Strategi Perdagangan Bitcoin Mean Return Multiple Oscillator Dynamic Filter adalah sistem perdagangan garis pendek yang direka dengan baik, yang secara berkesan mengenal pasti keadaan pasaran yang terlalu banyak dan menangkap peluang perdagangan yang kembali ke nilai rata-rata melalui saluran RSI, WaveTrend dan RSI acak. Strategi ini mempunyai kelebihan pelbagai penapis, mekanisme perdagangan yang fleksibel, pengurusan risiko yang cekap dan amaran automatik, sesuai untuk pedagang garis pendek di pasaran bitcoin.

Walau bagaimanapun, strategi ini juga menghadapi cabaran seperti risiko perdagangan frekuensi tinggi, risiko penembusan palsu dan kesesuaian pasaran. Dengan menambah penilaian keadaan pasaran, analisis jangka masa berbilang, pengoptimuman masa masuk, penambahbaikan mekanisme hentian dan pengendalian kedudukan dinamik, strategi ini dapat meningkatkan kestabilan dan keuntungan.

Bagi peniaga kuantitatif yang ingin berdagang pendek di pasaran bitcoin, strategi ini menyediakan kerangka asas yang kukuh yang boleh disesuaikan dan dioptimumkan secara peribadi mengikut gaya perdagangan individu dan persepsi pasaran untuk mencapai keuntungan yang stabil.

Kod sumber strategi
/*backtest
start: 2024-08-15 00:00:00
end: 2025-08-13 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("RS BTC 1", overlay=true, max_labels_count=500, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.003, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_every_tick=true, process_orders_on_close=false, pyramiding=0)

// ==== Inputs
// RSI Bands
rsiLen   = input.int(14, "RSI Length")
obLevel  = input.int(70, "RSI Overbought")
osLevel  = input.int(30, "RSI Oversold")

// WT (LazyBear)
wtLen1   = input.int(11, "WT Channel Length")
wtLen2   = input.int(12, "WT Avg Length")
wtOB     = input.float( 60.0, "WT Overbought (+)")
wtOS     = input.float(-60.0, "WT Oversold (-)")

// Stoch RSI (sadece K filtresi)
kLen     = input.int(5,  "StochRSI K")
rsiLenSR = input.int(14, "StochRSI RSI Length")
stLen    = input.int(10, "Stoch Length")
rsiSrc   = input.source(close, "RSI Source")
stochOB  = input.float(100.0, "StochRSI OB (K ≥)", step=0.1)
stochOS  = input.float(0.0,   "StochRSI OS (K ≤)", step=0.1)
eps      = input.float(0.5,   "Tolerance around 0/100", step=0.1)

// Tetik modu
triggerMode = input.string("Cross(close)", "Trigger mode", options=["Cross(close)","Touch(wick)"])
showMid     = input.bool(true,  "Show RSI mid band")

// Çıkış seçenekleri
useReverseExit = input.bool(true,  "Exit & reverse on opposite band cross (swing)")
useTP          = input.bool(true,  "Enable Take Profit %")
useSL          = input.bool(true,  "Enable Stop Loss %")
tpPerc         = input.float(1.00, "TP %", step=0.01, minval=0.01)
slPerc         = input.float(1.00, "SL %", step=0.01, minval=0.01)

// ==== RSI Bands (LazyBear) – Mantık aynı, sadece ince çizgi
src = close
ep  = 2 * rsiLen - 1
auc = ta.ema(math.max(src - src[1], 0), ep)
adc = ta.ema(math.max(src[1] - src, 0), ep)
x1  = (rsiLen - 1) * (adc * obLevel / (100 - obLevel) - auc)
x2  = (rsiLen - 1) * (adc * osLevel / (100 - osLevel) - auc)
ub  = x1 >= 0 ? src + x1 : src + x1 * (100 - obLevel) / obLevel
lb  = x2 >= 0 ? src + x2 : src + x2 * (100 - osLevel) / osLevel
mid = (ub + lb) / 2.0

plot(ub,  "RSI Upper", color=color.yellow, linewidth=1)
plot(lb,  "RSI Lower", color=color.aqua,   linewidth=1)
plot(showMid ? mid : na, "RSI Mid", color=color.gray, linewidth=1)

// ==== WaveTrend (LazyBear WT1)
ap  = hlc3
esa = ta.ema(ap, wtLen1)
d   = ta.ema(math.abs(ap - esa), wtLen1)
ci  = (ap - esa) / (0.015 * d)
wt1 = ta.ema(ci, wtLen2)

// ==== Stoch RSI K (0..100)
rsiVal   = ta.rsi(rsiSrc, rsiLenSR)
stochRaw = ta.stoch(rsiVal, rsiVal, rsiVal, stLen)
stochK   = ta.sma(stochRaw, kLen)

// ==== Sinyaller
longCrossRaw  = triggerMode == "Cross(close)" ? ta.crossunder(close, lb) : ta.crossunder(low,  lb)
shortCrossRaw = triggerMode == "Cross(close)" ? ta.crossover( close, ub) : ta.crossover( high, ub)

stochLongOK  = stochK <= (stochOS + eps)
stochShortOK = stochK >= (stochOB - eps)
wtLongOK     = wt1 < wtOS
wtShortOK    = wt1 > wtOB

longSig_raw  = longCrossRaw  and wtLongOK  and stochLongOK
shortSig_raw = shortCrossRaw and wtShortOK and stochShortOK

longSig  = useReverseExit ? longSig_raw  : (longSig_raw  and strategy.position_size == 0)
shortSig = useReverseExit ? shortSig_raw : (shortSig_raw and strategy.position_size == 0)

// ==== İşlemler
if longSig
    if useReverseExit and strategy.position_size < 0
        strategy.close("S")
    if strategy.position_size <= 0
        strategy.entry("L", strategy.long)

if shortSig
    if useReverseExit and strategy.position_size > 0
        strategy.close("L")
    if strategy.position_size >= 0
        strategy.entry("S", strategy.short)

// ==== TP / SL
if strategy.position_size > 0 and (useTP or useSL)
    longEntryPrice = strategy.position_avg_price
    longTP  = useTP ? longEntryPrice * (1 + tpPerc/100.0) : na
    longSL  = useSL ? longEntryPrice * (1 - slPerc/100.0) : na
    strategy.exit(id="L-EXIT", from_entry="L", limit=longTP, stop=longSL)

if strategy.position_size < 0 and (useTP or useSL)
    shortEntryPrice = strategy.position_avg_price
    shortTP = useTP ? shortEntryPrice * (1 - tpPerc/100.0) : na
    shortSL = useSL ? shortEntryPrice * (1 + slPerc/100.0) : na
    strategy.exit(id="S-EXIT", from_entry="S", limit=shortTP, stop=shortSL)


// ==== ENTRY alert (tek bar / tek kez) ====
// TV Alert -> Condition: Any alert() function call
// Webhook  -> https://api.telegram.org/bot<YOUR_TOKEN>/sendMessage
// Message  -> BOŞ (alert() JSON yolluyor)

chatId   = input.string("-1002849453919", "Telegram chat_id (channel)")
lotTxt   = input.string("0.20", "Lot (text)")
tpPips   = input.int(10000,  "TP (pip)")   // SL yok

makeJson(_txt) => '{"chat_id":"' + chatId + '","text":"' + _txt + '"}'

// MT5 sembolü sabit
longTxt  = 'BUY BTCUSD# '  + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'
shortTxt = 'SELL BTCUSD# ' + lotTxt + ' TP=' + str.tostring(tpPips) + 'pip'

// Giriş oldu mu? (bar içinde)
enteredLong  = strategy.position_size >  0 and strategy.position_size[1] <= 0
enteredShort = strategy.position_size <  0 and strategy.position_size[1] >= 0

// --- anti-spam: aynı barda yalnızca 1 kere gönder ---
var int  lastEntryBar = na
var int  lastDir      = 0   // +1: long, -1: short

if enteredLong and (lastEntryBar != bar_index or lastDir != 1)
    alert(makeJson(longTxt), alert.freq_once_per_bar)   // tek gönderim
    lastEntryBar := bar_index
    lastDir      := 1

if enteredShort and (lastEntryBar != bar_index or lastDir != -1)
    alert(makeJson(shortTxt), alert.freq_once_per_bar)
    lastEntryBar := bar_index
    lastDir      := -1