Berdasarkan strategi pelacakan pembalikan rata-rata pergerakan ganda


Tanggal Pembuatan: 2024-02-20 17:08:43 Akhirnya memodifikasi: 2024-02-20 17:08:43
menyalin: 1 Jumlah klik: 527
1
fokus pada
1617
Pengikut

Berdasarkan strategi pelacakan pembalikan rata-rata pergerakan ganda

Ringkasan

Strategi Binary Average Reversal Tracking adalah strategi perdagangan kuantitatif yang menggunakan crossover moving average sebagai sinyal perdagangan. Strategi ini menggabungkan MACD dengan rata-rata rata-rata rata-rata dan garis sinyalnya, serta penilaian rasio polygon volume transaksi, untuk membentuk sinyal perdagangan untuk menangkap peluang reversal pasar.

Prinsip Strategi

Strategi ini terutama menilai hubungan antara garis cepat dan garis lambat, ketika garis cepat melewati garis lambat menghasilkan sinyal yang lebih banyak, ketika garis cepat melewati garis lambat menghasilkan sinyal kosong. Selain itu, juga akan menggabungkan kondisi kosong dengan nilai MACD, hubungan antara nilai dan jalur sinyal, keadaan kosong dengan jumlah transaksi dan lain-lain untuk menilai keadaan kosong pasar.

Secara khusus, strategi akan menilai ukuran dan arah perbedaan MACD, persimpangan antara perbedaan dan garis sinyal, keseragaman atau kebalikan antara perbedaan dan arah garis sinyal, dan lain-lain. Ini mencerminkan karakteristik subidabubb rebound di pasar.

Strategi perdagangan dihasilkan ketika divergensi dan garis sinyal menunjukkan sinyal pembalikan pasar, dan volume transaksi sesuai dengan konfirmasi pembalikan pasar.

Keunggulan Strategis

  • Teori Reptilia Berdasarkan Ketergantungan Pada Titik Balik Pasar Dengan Menggunakan Dua Garis Persamaan
  • Pengertian Lalu Lintas Terpadu untuk Menghindari Penembusan Palsu
  • Indikator MACD menilai tren, mengidentifikasi karakteristik bouncing
  • Parameters Fleksibilitas kebijakan kontrol parsial

Risiko dan Solusi

  • Whipsaw yang disebabkan oleh penyeberangan dua garis lurus

    • Menyesuaikan parameter garis rata-rata, meningkatkan Threshold
  • Jumlah transaksi tidak bisa disaring sepenuhnya.

    • Kombinasi dengan sub-indikator seperti OBV untuk menilai tren volume transaksi yang sebenarnya
  • Tidak dapat menilai kedalaman dan intensitas subsection adjustment

    • Meningkatkan Stop Loss, Evaluasi Dukungan Penting

Arah optimasi

  • Menggunakan Model Pembelajaran Mesin untuk Penghakiman Peraturan

    • Meningkatkan kecanggihan strategi dan mengurangi over-fitting
  • Menambahkan teknik stop loss

    • Mengunci sebagian keuntungan, mengurangi risiko
  • Ini adalah metode yang digunakan untuk mendeteksi dan mengevaluasi perilaku seseorang.

    • Meningkatkan akurasi model
  • Transplantasi ke varietas lain, pasar

    • Tes Skalabilitas Strategi

Meringkaskan

Strategi pelacakan pembalikan dua garis rata-rata secara komprehensif mempertimbangkan indikator garis rata-rata, indikator MACD, dan indikator volume transaksi, dengan menangkap sinyal pembalikan mereka, memilih titik pembalikan yang sesuai untuk membangun kepemilikan. Ada banyak ruang untuk mengoptimalkan strategi, yang dapat meningkatkan stabilitas dan tingkat keuntungan strategi lebih lanjut melalui pembelajaran mesin dan pengendalian angin.

Kode 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)