Model penilaian tambahan kejutan harga tiga faktor


Tanggal Pembuatan: 2024-02-26 15:32:27 Akhirnya memodifikasi: 2024-02-26 15:32:27
menyalin: 0 Jumlah klik: 591
1
fokus pada
1617
Pengikut

Model penilaian tambahan kejutan harga tiga faktor

Ringkasan

Model tiga faktor yang membantu menentukan pergerakan harga adalah strategi perdagangan short-line yang menggabungkan penilaian multi-faktor. Strategi ini secara komprehensif mempertimbangkan penilaian multi-faktor dari rasio volume transaksi, indikator RSI, indikator MACD, dan indikator garis sinyal untuk menilai perilaku pergerakan harga untuk menemukan peluang perdagangan short-line.

Prinsip Strategi

Logika inti dari strategi ini adalah:

  1. Perhitungan indikator teknis seperti rata-rata bergerak cepat, rata-rata bergerak lambat, kurva MACD, garis sinyal;

  2. Untuk menilai rasio volume trading, RSI, MACD, dan kondisi multi-faktor dari sinyal;

  3. Pertimbangan multi-faktor yang komprehensif, yang mengkonfirmasi bahwa saat ini adalah fase harga yang bergejolak, dan ada peluang untuk membeli dan menjual;

  4. Masukkan posisi LONG atau SHORT, dan atur stop loss.

  5. Bila harga mencapai kondisi stop loss atau stop loss, maka posisi tersebut akan ditutup.

Strategi ini fleksibel menggunakan penilaian multi-faktor seperti rasio volume, RSI, MACD, dan indikator garis sinyal untuk menilai perilaku pergerakan harga untuk menangkap peluang perdagangan short-line. Pengadilan kombinasi multi-faktor dapat menghindari sinyal salah yang disebabkan oleh faktor tunggal dan meningkatkan akurasi sinyal.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Pengertian multi-faktor, meningkatkan akurasi sinyal, menghindari sinyal yang salah;
  2. Menggunakan karakteristik harga yang bergejolak untuk menangkap peluang perdagangan jangka pendek dan menghasilkan keuntungan besar;
  3. Pengaturan otomatis stop loss, pengendalian risiko;
  4. Logika transaksi yang sederhana dan mudah diterapkan.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Algoritma terlalu bergantung pada data historis dan terlalu sensitif terhadap perubahan pasar;
  2. Komposisi multi-faktor mungkin perlu dioptimalkan lebih lanjut, dan ada kemungkinan kesalahan penilaian.
  3. Pengaturan stop loss dapat secara langsung mempengaruhi stabilitas strategi.

Untuk mengatasi risiko di atas, Anda dapat mengoptimalkan:

  1. Meningkatkan siklus pengambilan data dan mengurangi dampak dari perubahan data pasar;
  2. Adaptasi adalah suatu proses yang dilakukan oleh individu untuk menyesuaikan diri dengan kondisi lingkungan yang ada.
  3. Uji berbagai titik penghentian untuk menemukan posisi penghentian yang optimal.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mengoptimalkan berat multi-faktor, mencapai penyesuaian dinamis. Berdasarkan situasi yang berbeda, penilaian multi-faktor dapat disesuaikan dengan berat, meningkatkan adaptasi;

  2. Bergabung dengan algoritma pembelajaran mesin, untuk mencapai optimasi multi-faktor beradaptasi sendiri. Menggunakan jaringan saraf, algoritma genetik dan lain-lain untuk melatih model multi-faktor, untuk mencapai optimasi parameter otonom;

  3. Optimalkan strategi stop loss. Anda dapat menguji berbagai stop loss tracking dan stop loss mobile untuk menemukan strategi stop loss yang optimal.

  4. Kombinasi dengan indikator teknologi canggih. Dapat menguji indikator lain seperti fluktuasi tingkat, getaran momentum, dan kombinasi faktor-faktor yang kaya.

Meringkaskan

Strategi pivot memanfaatkan fitur multi-faktor dari interval getaran harga, untuk mencapai strategi perdagangan garis pendek yang efisien. Strategi ini menggunakan penilaian multi-faktor seperti volume, RSI, MACD, dan garis sinyal untuk menentukan waktu jual beli yang optimal. Pemecahan multi-faktor meningkatkan akurasi sinyal, yang bermanfaat untuk mendapatkan keuntungan yang stabil.

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.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false)

signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.7)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=6)
takeProfit = input( title="Take Profit", defval=2)
stopLoss = input( title="Stop Loss", defval=0.7)

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")
plot(macdSlope, color=color.green, title="MACD Slope")
plot(signalSlope, color=color.red, title="Signal Slope")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]
plot(rsiSlope, color=color.black, title="RSI Slope")

getRSISlopeChange(lookBack) =>
    j = 0
    for i = 0 to lookBack
        if ( rsi[i] - rsi[ i + 1 ] ) > -5
            j += 1
    j

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.0
    float s = 0.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.0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0.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.0 and signalSlope[1] > 0.0
bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0

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

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

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

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

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0.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 )


// 202.30 Profit 55.29% 5m
if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open)
    strategy.entry("5C1", strategy.long, qty=1.0)
strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 171.70 Profit 50.22% 5m
if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0)
    strategy.entry("5C2", strategy.long, qty=1.0)
strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades
if ( macd > macdBiasValue and macdSlope > 0)
    strategy.entry("5P1", strategy.short, qty=1.0)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)