Strategi penembusan pengesan semula mikro berdasarkan momentum kuantitatif

ATR SMA OCA VOLUME
Tarikh penciptaan: 2025-02-19 16:32:46 Akhirnya diubah suai: 2025-02-19 17:25:25
Salin: 0 Bilangan klik: 335
2
fokus pada
319
Pengikut

Strategi penembusan pengesan semula mikro berdasarkan momentum kuantitatif Strategi penembusan pengesan semula mikro berdasarkan momentum kuantitatif

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan berdasarkan pergerakan harga dan jumlah dagangan, yang memberi tumpuan kepada mengenal pasti peluang penarikan balik kecil selepas kenaikan yang kuat. Strategi ini memantau penarikan balik jangka pendek selepas garis hijau yang meningkat dengan ketara, dan memasuki perdagangan apabila harga menunjukkan isyarat pembalikan. Sistem ini menggunakan pelbagai syarat penapisan, termasuk penarikan balik, kadar ATR, dan had penarikan balik untuk meningkatkan ketepatan perdagangan.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan kepada prinsip dinamika pasaran yang berterusan, dan ia terdiri daripada unsur-unsur utama berikut:

  1. Kenaikan yang kuat diiktiraf oleh jumlah transaksi dan ATR, yang memerlukan jumlah transaksi melebihi 1.5 kali rata-rata dan lebih besar daripada 200,000
  2. Memantau proses penarikan balik selepas ketagihan, hadkan jumlah maksimum 3 biji merah berturut-turut
  3. Tetapkan pengembalian maksimum sebanyak 50% dan jika melebihi, buang peluang perdagangan
  4. Apabila harga naik, ia akan mencetuskan beberapa isyarat.
  5. Menggunakan OCO untuk menguruskan portfolios yang mengandungi sasaran stop loss dan profit
  6. Tetapan stop loss di bawah titik rendah pengembalian, sasaran keuntungan dua kali risiko

Kelebihan Strategik

  1. Pengesahan dua kali ganda pergerakan harga dan jumlah transaksi meningkatkan kebolehpercayaan isyarat
  2. Penapisan keadaan panggilan balik yang ketat untuk mengelakkan perangkap penembusan palsu
  3. Menggunakan penunjuk teknikal yang objektif untuk mengurangkan kesan penilaian subjektif
  4. Mekanisme kawalan risiko yang jelas, kedudukan ganjaran risiko yang tetap
  5. Tingkat automasi sistem yang tinggi, sesuai untuk berdagang banyak pelbagai jenis
  6. Mempunyai keluasan yang baik, mudah untuk menambah syarat penapisan baru

Risiko Strategik

  1. Mungkin sering mencetuskan isyarat palsu apabila pasaran bergolak
  2. Kemunculan semula saham yang kuat mungkin melebihi had yang ditetapkan
  3. Syarat-syarat kuantiti yang perlu disesuaikan secara dinamik dengan keadaan pasaran yang berbeza
  4. Tetapan stop loss lebih dekat dan mungkin terdedah kepada bunyi pasaran
  5. Matlamat keuntungan mungkin terlalu radikal dan sukar untuk dicapai
  6. Jumlah sampel yang lebih besar diperlukan untuk mengesahkan kestabilan strategi

Arah pengoptimuman strategi

  1. Memperkenalkan penapis trend, seperti sistem garis rata atau penunjuk trend, untuk memastikan perdagangan di arah trend utama
  2. Dinamika penyesuaian penurunan jumlah transaksi untuk menyesuaikan diri dengan kitaran pasaran yang berbeza
  3. Optimumkan tetapan kedudukan stop loss, perkalian menggunakan ATR
  4. Menambah penapis masa untuk mengelakkan pergerakan pasaran pada waktu buka dan tutup
  5. Pengenalan pengesahan kitaran masa berbilang untuk meningkatkan kebolehpercayaan isyarat
  6. Membangunkan sistem parameter adaptif, menyesuaikan parameter strategi mengikut keadaan pasaran

ringkaskan

Ini adalah strategi pengesanan trend yang dirancang dengan wajar, yang dapat menangkap peluang perdagangan yang berkualiti di pasaran melalui penyaringan syarat dan pengurusan risiko yang ketat. Strategi yang berjaya adalah kunci untuk mengoptimumkan parameter dan menyesuaikan diri dengan keadaan pasaran.

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

//@version=6
strategy(title="Micropullback Detector w/ Stop Buy & Exits", shorttitle="MicroPB Det+Exits", overlay=true)

// USER INPUTS
volLookback = input.int(20, "Volume SMA Period", minval=1)
volMultiplier = input.float(1.5, "Volume Multiplier for High Volume", minval=1.0)
largeCandleATR = input.float(0.5, "Fraction of ATR to define 'Large Candle'", minval=0.1)
maxRedPullback = input.int(3, "Max Consecutive Red Candles in Pullback")
maxRetracementPc = input.float(50, "Max Retracement % for pullback", minval=1.0, maxval=100.0)

// CALCULATIONS
fastAtr = ta.atr(14)
avgVolume = ta.sma(volume, volLookback)
isLargeGreenCandle = (close > open) and ((close - open) > fastAtr * largeCandleATR) and (volume > avgVolume * volMultiplier) and (volume > 200000)

// HELPER FLAGS
isGreen = close >= open
isRed   = close < open

// STATE VARIABLES
var int   state = 0
var float waveStartPrice   = na
var float waveHighestPrice = na
var float largestGreenVol  = na
var int   consecutiveRedPulls = 0
var bool  triggerSignal    = false
var float wavePullbackLow  = na

if barstate.isnew
    triggerSignal:=false
    if state==0
        wavePullbackLow:=na
        if isLargeGreenCandle
            state:=1
            waveStartPrice:=open
            waveHighestPrice:=high
            largestGreenVol:=volume
            consecutiveRedPulls:=0
    else if state==1
        if isGreen
            waveHighestPrice:=math.max(waveHighestPrice,high)
            if volume>largestGreenVol
                largestGreenVol:=volume
        else
            state:=2
            consecutiveRedPulls:=1
            wavePullbackLow:=low
    else if state==2
        if isRed
            if volume>largestGreenVol
                state:=0
            consecutiveRedPulls+=1
            if consecutiveRedPulls>=maxRedPullback+1
                state:=0
            retracementLevel=waveStartPrice+(maxRetracementPc/100.0)*(waveHighestPrice-waveStartPrice)
            wavePullbackLow:=math.min(wavePullbackLow,low)
            if close<retracementLevel
                state:=0
        else
            consecutiveRedPulls:=0
            if high>high[1]
                triggerSignal:=true
                state:=3
    else if state==3
        state:=0

// Plot shapes for signals (last 1440 bars ~ 1 day at 1-min TF)
plotshape(isLargeGreenCandle, title="Large Green Candle", style=shape.diamond, location=location.belowbar, color=color.new(color.blue, 0), offset=0, size=size.small, show_last=1440)
plotshape(triggerSignal, title="MicroPB Entry", style=shape.arrowdown, location=location.abovebar, color=color.new(color.green, 0), offset=0, size=size.large, show_last=1440)

// ENTRY & EXITS
if triggerSignal
    // Stop Buy above the previous bar's high
    entryPrice = high[1]
    strategy.order("MicroPullback Long", strategy.long, limit=entryPrice, oca_name="MicroPullback")

    // Stoploss slightly below pullback low
    stopPrice = wavePullbackLow - 2*syminfo.mintick

    // Risk & take-profit calculations
    risk = entryPrice - stopPrice
    tpPrice = entryPrice + 2 * risk

    // Exit: stop or TP
    strategy.exit("SL+TP", "MicroPullback Long", stop=stopPrice, limit=tpPrice, qty_percent=100)

// ALERT
alertcondition(triggerSignal, title="MicroPullback LONG", message="Micropullback Long Signal Detected!")