Model tiga faktor pertimbangan tambahan kejutan harga


Tarikh penciptaan: 2024-02-26 15:32:27 Akhirnya diubah suai: 2024-02-26 15:32:27
Salin: 0 Bilangan klik: 591
1
fokus pada
1617
Pengikut

Model tiga faktor pertimbangan tambahan kejutan harga

Gambaran keseluruhan

Model tiga faktor yang membantu menilai pergerakan harga adalah strategi perdagangan garis pendek yang menggabungkan penilaian pelbagai faktor. Strategi ini mengambil kira penilaian pelbagai faktor dari kadar transaksi, RSI, MACD, dan garis isyarat untuk menilai pergerakan harga untuk mencari peluang perdagangan garis pendek.

Prinsip Strategi

Logik utama strategi ini ialah:

  1. Mengira penunjuk teknikal seperti purata bergerak pantas, purata bergerak perlahan, kurva MACD, garis isyarat;

  2. untuk menilai kadar dagangan, RSI, MACD, dan signal line;

  3. Penghakiman pelbagai faktor yang komprehensif, mengesahkan bahawa ini adalah masa harga yang bergolak dan peluang untuk membeli dan menjual;

  4. Masukkan kedudukan LONG atau SHORT dan setkan stop loss;

  5. Kedudukan kosong apabila harga mencapai keadaan berhenti atau berhenti.

Strategi ini fleksibel menggunakan penilaian pelbagai faktor, seperti nisbah jumlah transaksi, petunjuk RSI, petunjuk MACD, petunjuk garis isyarat, untuk menilai tingkah laku pergerakan harga, untuk menangkap peluang perdagangan garis pendek. Penilaian gabungan pelbagai faktor dapat mengelakkan isyarat salah yang disebabkan oleh faktor tunggal, meningkatkan ketepatan isyarat.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Penghakiman berbilang faktor untuk meningkatkan ketepatan isyarat dan mengelakkan isyarat yang salah;
  2. Menggunakan ciri-ciri turun naik harga untuk menangkap peluang perdagangan jangka pendek dan menghasilkan keuntungan yang besar;
  3. Pengaturan automatik untuk menghentikan kerugian dan mengawal risiko;
  4. Logik urus niaga yang ringkas dan mudah dilaksanakan.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Algoritma terlalu bergantung pada data sejarah dan sensitif terhadap perubahan pasaran;
  2. Kaedah gabungan faktor mungkin memerlukan pengoptimuman lebih lanjut dan terdapat kemungkinan kesalahan penilaian;
  3. Penetapan titik hentian boleh mempengaruhi kestabilan strategi secara langsung atau tidak.

Menghadapi risiko di atas, anda boleh mengoptimumkan:

  1. Meningkatkan kitaran pengambilan data untuk mengurangkan kesan perubahan data pasaran;
  2. Menyesuaikan kepentingan pelbagai faktor untuk mencapai penyesuaian yang optimum;
  3. Uji pelbagai titik hentian untuk mencari titik hentian yang terbaik.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan berat pelbagai faktor, mencapai penyesuaian dinamik. Ia boleh menyesuaikan berat penilaian pelbagai faktor mengikut keadaan yang berbeza, meningkatkan daya serap;

  2. Menggabungkan algoritma pembelajaran mesin, untuk mencapai pengoptimuman penyesuaian diri pelbagai faktor. Menggunakan rangkaian saraf, algoritma genetik dan lain-lain untuk melatih model pelbagai faktor, untuk mencapai pengoptimuman parameter sendiri;

  3. Mengoptimumkan strategi penutupan kerugian. Anda boleh menguji pelbagai kombinasi penutupan pengesanan dan penutupan pergerakan untuk mencari penyelesaian penutupan yang terbaik.

  4. Gabungan dengan petunjuk teknologi canggih. Ia boleh menguji lebih banyak petunjuk seperti turun naik kadar turun naik, gegaran dinamik, dan lain-lain, dengan kombinasi pelbagai faktor.

ringkaskan

Strategi penarikan menggunakan ciri-ciri pelbagai faktor di antara rentang pergerakan harga untuk mencapai strategi perdagangan garis pendek yang cekap. Strategi ini menggunakan pertimbangan pelbagai faktor seperti jumlah dagangan, RSI, MACD, dan garis isyarat untuk menentukan masa pembelian dan penjualan yang terbaik. Pertimbangan pelbagai faktor meningkatkan ketepatan isyarat untuk mendapatkan keuntungan yang stabil.

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