Strategi perdagangan volatilitas spesifik lintas kerangka waktu pembalikan tren


Tanggal Pembuatan: 2024-02-26 17:15:54 Akhirnya memodifikasi: 2024-02-26 17:15:54
menyalin: 0 Jumlah klik: 669
1
fokus pada
1617
Pengikut

Strategi perdagangan volatilitas spesifik lintas kerangka waktu pembalikan tren

Ringkasan

Strategi ini merancang strategi perdagangan yang membalikkan tren dengan menghitung perbedaan tekanan jual beli volume transaksi dalam jendela waktu yang berbeda, dikombinasikan dengan sinyal bullish dari indikator MACD. Strategi ini terutama menggunakan asimetri volume transaksi sebagai sinyal untuk menentukan pembalikan tren, dan diverifikasi melalui sinyal bullish dari MACD, sehingga menangkap peluang pembalikan.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada:

  1. Menghitung volume transaksi dalam jendela waktu yang berbeda (lama atau pendek) untuk memprediksi tekanan beli dan tekanan jual. Perbedaan tekanan beli dan jual untuk menentukan arah tren masa depan.

  2. Menggunakan perbedaan MACD (perbedaan antara garis MACD dan garis sinyal) untuk menentukan keadaan kosong. Menggabungkan sinyal tekanan jual beli dalam jumlah pertukaran, untuk memverifikasi pembalikan tren.

  3. Ketika volume transaksi membeli tekanan gesekan meningkat, dan garis MACD terjadi melintasi, dianggap bahwa pasar mungkin akan muncul dari tendensi berbalik dari nol ke lebih.

  4. Ketika volume transaksi menjual tekanan gesekan meningkat, dan garis MACD terjadi melintasi, dianggap bahwa perdagangan mungkin muncul dengan reversal tren yang lebih banyak dibalik.

  5. Setelah masuk ke sinyal reversal, gunakan strategi stop loss untuk mengendalikan risiko.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan:

  1. Menggunakan perbedaan polygonal volume transaksi untuk menentukan titik balik tren, menghindari hanya bergantung pada indikator penilaian tren seperti kesetaraan dan mengabaikan peran volume transaksi.

  2. Kombinasi reversal verifikasi sinyal multifungsi dengan indikator MACD dapat meningkatkan akurasi penilaian.

  3. Menggunakan jendela waktu yang panjang dan pendek untuk menentukan arah geser dari volume lalu lintas, membuat sinyal reversal lebih dapat diandalkan.

  4. Strategi anti-transformasi memiliki tingkat keuntungan rata-rata yang lebih tinggi.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Baik nilai transaksi maupun sinyal MACD dapat mengirimkan sinyal yang salah, sehingga menyebabkan risiko kesalahan penilaian terbalik.

  2. Setelah sinyal reversal, pasar mungkin kembali beradaptasi dan tidak bisa langsung reversal.

  3. Stop loss yang tidak tepat dapat menyebabkan risiko peningkatan kerugian.

  4. Tingkat penarikan yang tinggi, tidak cocok untuk investor yang mencari keuntungan yang stabil.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mengoptimalkan jarak antara jendela waktu yang lebih panjang dan lebih pendek untuk membuat penilaian yang lebih akurat.

  2. Optimalkan parameter MACD untuk meningkatkan akurasi penilaian polygon.

  3. Mengoptimalkan algoritma stop loss untuk mengurangi risiko kerugian.

  4. Menambahkan lebih banyak indikator penilaian pasif, meningkatkan tingkat keberhasilan reversal.

  5. Menambahkan kontrol posisi dan pengelolaan modal.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi perdagangan algoritma reversal tren yang khas. Ini terutama bergantung pada penguatan sinyal MACD yang diperkuat dengan verifikasi, menilai dan menangkap peluang untuk membalikkan harga dari multihead ke headless atau dari headless ke headless. Strategi ini memiliki akurasi penilaian yang tinggi dan keuntungan yang lebih baik, tetapi ada juga risiko tertentu.

Kode Sumber Strategi
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

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)
takeProfit = input( title="Take Profit", defval=0.75)
stopLoss = input( title="Stop Loss", defval=0.5)

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(macd, color=color.blue, title="Total Volume")
plot(signal, color=color.orange, 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, qty=10)
strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

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