Berdasarkan strategi penjejakan pembalikan purata bergerak berganda


Tarikh penciptaan: 2024-02-20 17:08:43 Akhirnya diubah suai: 2024-02-20 17:08:43
Salin: 1 Bilangan klik: 527
1
fokus pada
1617
Pengikut

Berdasarkan strategi penjejakan pembalikan purata bergerak berganda

Gambaran keseluruhan

Strategi pelacakan berbalik binari adalah strategi perdagangan kuantitatif yang menggunakan persilangan purata bergerak sebagai isyarat perdagangan. Strategi ini menggabungkan perbezaan rata-rata MACD dan garis isyaratnya, serta penilaian perkadaran kosong dalam jumlah yang diperdagangkan, untuk membentuk isyarat perdagangan untuk menangkap peluang berbalik pasaran.

Prinsip Strategi

Strategi ini terutamanya menilai hubungan antara garis cepat dan lambat, menghasilkan isyarat polusi apabila garis cepat melalui garis lambat, menghasilkan isyarat kosong apabila garis lambat melalui garis cepat. Selain itu, ia juga menggabungkan keadaan kosong dengan nilai MACD, hubungan antara nilai dan garis isyarat, keadaan kosong dengan jumlah transaksi dan lain-lain untuk menilai keadaan kosong pasaran.

Secara khusus, strategi akan menilai saiz dan arah perbezaan nilai MACD, persilangan perbezaan nilai dan garis isyarat, keserasian atau kebalikan perbezaan nilai dan arah garis isyarat. Keadaan ini mencerminkan ciri-ciri rebound subidabubb di pasaran. Di samping itu, pengedaran jumlah yang diperdagangkan juga boleh digunakan sebagai penunjuk penilaian tambahan.

Strategi perdagangan dihasilkan apabila penilaian terhadap perbezaan dan garis isyarat menunjukkan isyarat pembalikan pasaran, dan jumlah transaksi sesuai dengan pengesahan pembalikan pasaran.

Kelebihan Strategik

  • Teori Reptilian Berkuasa Berkuasa Menggunakan Dua Garis Persilangan untuk Menentukan Titik Peralihan Pasaran
  • Pengkajian gabungan untuk mengelakkan penembusan palsu
  • Indeks MACD menilai sub-seksyen dan mengenal pasti ciri-ciri bouncing
  • Parameters Fleksibiliti yang tinggi dalam mengawal sebahagian daripada strategi

Risiko dan Penyelesaian

  • Penyelesaian masalah whipsaw

    • Menyesuaikan parameter garis purata, meningkatkan Threshold
  • Penembusan palsu tidak dapat disaring sepenuhnya

    • Menggabungkan petunjuk sampingan seperti OBV untuk menentukan trend jumlah pesanan sebenar
  • Tidak dapat menilai kedalaman dan kekuatan subsection

    • Meningkatkan Stop Loss dan menilai tahap sokongan penting

Arah pengoptimuman

  • Menggunakan model pembelajaran mesin sebagai pengganti penilaian peraturan

    • Meningkatkan ketangguhan strategi dan mengurangkan kesesakan
  • Tambah teknik stop loss

    • Mengunci sebahagian daripada keuntungan dan mengurangkan risiko
  • Menerusi analisis sentimen dan berita.

    • Meningkatkan ketepatan model
  • Dipindahkan ke jenama, pasaran

    • Ujian Skalasi Strategi

ringkaskan

Strategi pengesanan balik binari merangkumi indikator garis rata, indikator MACD dan indikator kuantiti transaksi, dengan menangkap isyarat pembalikan mereka, memilih titik pembalikan yang sesuai untuk membina kedudukan. Terdapat ruang yang besar untuk pengoptimuman strategi, yang dapat meningkatkan kestabilan strategi dan kadar pulangan dengan cara pembelajaran mesin dan kawalan angin.

Kod sumber strategi
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 10 Oscillator Profile Flagging", shorttitle="3 10 Oscillator Profile Flagging", overlay=true)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.8)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=10)

fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)

buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
//plot(macdSlope, color=color.red, title="Total Volume")
//plot(signalSlope, color=color.green, title="Total Volume")
intrabarRange = high - low

getLookBackSlope(lookBack) => signal - signal[lookBack]
getBuyerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if buyVolume[i] > sellVolume[i]
            j += 1
    j

getSellerVolBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if sellVolume[i] > buyVolume[i]
            j += 1
    j

getVolBias(lookBack) =>
    float b = 0
    float s = 0
    for i = 1 to lookBack
        b += buyVolume[i]
        s += sellVolume[i]
    b > s

getSignalBuyerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] > signalBiasValue
            j += 1
    j

getSignalSellerBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < ( 0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0 - signalBiasValue )
            j += 1
    j

getPriceRising(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] > close[i + 1]
            j += 1
    j


getPriceFalling(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if close[i] < close[i + 1] 
            j += 1
    j

getRangeNarrowing(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] < intrabarRange[i + 1] 
            j+= 1
    j

getRangeBroadening(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if intrabarRange[i] > intrabarRange[i + 1] 
            j+= 1
    j

bool isNegativeSignalReversal = signalSlope < 0 and signalSlope[1] > 0
bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0

bool isPositiveSignalReversal = signalSlope > 0 and signalSlope[1] < 0
bool isPositiveMacdReversal = macdSlope > 0 and macdSlope[1] < 0

bool hasBearInversion = signalSlope > 0 and macdSlope < 0
bool hasBullInversion = signalSlope < 0 and macdSlope > 0

bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0 - signalBiasValue )

bool hasSignalBuyerBias = hasSignalBias and signal > 0
bool hasSignalSellerBias = hasSignalBias and signal < 0

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0 - macdBiasValue )

bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)

bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )

// 7.48 Profit 52.5% 
if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack  and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion)
    strategy.entry("Short1", strategy.short)
strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - 0.75, stop=strategy.position_avg_price + 0.5)

// 32.53 Profit 47.91%
if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias)
    strategy.entry("Long1", strategy.long)
strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + 0.75, stop=strategy.position_avg_price - 0.5)