Strategi Perdagangan Multi-faktor Bitcoin

Penulis:ChaoZhang, Tarikh: 2023-09-25 18:24:02
Tag:

Ringkasan

Ini adalah strategi perdagangan komprehensif yang direka untuk perdagangan jangka masa 15 minit Bitcoin dan mata wang kripto lain. Ia menggabungkan beberapa penunjuk untuk menjana isyarat beli dan jual, termasuk Purata Bergerak Eksponensial Tiga (TEMA), Julat Benar Purata (ATR), dan lilin Heikin-Ashi, bersama dengan ciri pengurusan risiko seperti mengambil keuntungan dan hentikan kerugian.

Logika Strategi

Strategi ini menggunakan penunjuk berikut:

  • Purata Bergerak Eksponensial Ganda (TEMA): Tiga garis TEMA dengan panjang dan sumber yang berbeza, berdasarkan harga tinggi, rendah dan dekat masing-masing.

  • Rata-rata Jangkauan Benar (ATR): Pengiraan ATR tersuai dengan penyusunan EMA untuk mengukur turun naik.

  • Supertrend: Dihitung menggunakan ATR dan pengganda untuk menentukan arah trend.

  • Purata Bergerak Sederhana (SMA): Digunakan pada garis TEMA pendek untuk meratakan nilainya.

  • Tutup Heikin-Ashi: Digunakan untuk pengesahan trend tambahan.

Isyarat masuk panjang diaktifkan apabila TEMA pendek berada di atas kedua-dua garis TEMA panjang, Supertrend adalah bullish, TEMA pendek berada di atas SMA, dan penutupan Heikin-Ashi lebih tinggi daripada penutupan sebelumnya.

Isyarat masuk pendek diaktifkan apabila syarat yang bertentangan dipenuhi.

Ambil keuntungan dan hentikan kerugian ditetapkan pada 1% dan 3% daripada harga masuk.

Analisis Kelebihan

  • Pelbagai faktor meningkatkan ketepatan Menggabungkan trend, turun naik, penunjuk corak boleh meningkatkan ketepatan dan mengelakkan isyarat palsu.

  • Risiko kawalan stop loss/take profit yang munasabah Stop loss yang ditetapkan dengan baik dan mengambil tahap keuntungan mengunci keuntungan dan had kerugian.

  • Ruang pengoptimuman parameter yang besar Parameter penunjuk boleh disesuaikan dengan fleksibel untuk menyesuaikan diri dengan pasaran yang berubah.

  • Lebih realistik dengan komisen yang diambil kira Suruhanjaya yang dipertimbangkan menjadikan hasil backtest lebih dekat dengan prestasi langsung.

Analisis Risiko

  • Risiko salah penilaian daripada pengoptimuman berlebihan Terlalu banyak penunjuk gabungan juga boleh membawa kepada penilaian yang salah.

  • Risiko yang lebih tinggi dengan perdagangan jangka pendek Berbanding dengan jangka masa yang lebih lama, 15 minit lebih mudah terdedah kepada peristiwa dan risiko tiba-tiba.

  • Stabiliti Strategi memerlukan pengesahan lanjut Ujian yang lebih luas di sepanjang sejarah dan pasaran yang panjang diperlukan untuk memastikan kebolehpercayaan.

  • Pengoptimuman panjang dengan pelbagai parameter Banyak parameter yang diperkenalkan membawa kepada proses yang panjang untuk mengoptimumkan semua kombinasi parameter.

Arahan Penambahbaikan

  • Menilai kesan sebenar setiap penunjuk Ujian balik untuk mengesahkan faedah tambahan sebenar setiap penunjuk, mengelakkan kelebihan.

  • Mengoptimumkan dan menguji kestabilan Hasil pengoptimuman ujian merentasi lebih banyak pasaran untuk memastikan ketahanan.

  • Memasukkan strategi stop loss Seperti hentian penarikan, hentian pesanan kurung untuk mengawal risiko lebih lanjut.

  • Pertimbangkan lebih banyak faktor kos Seperti slippage untuk membuat backtest lebih dekat dengan persembahan langsung.

Ringkasan

Strategi ini menggabungkan pelbagai penunjuk dan teknik pengurusan risiko yang disesuaikan untuk perdagangan Bitcoin 15 minit. Ruang yang besar masih tersisa untuk mengoptimumkan parameter, menilai keberkesanan penunjuk, ujian kestabilan pasaran yang luas, dan memperkenalkan lebih banyak faktor dunia nyata untuk mencari kombinasi yang optimum dalam pendekatan pelbagai faktor. Dengan pengoptimuman dan pengesahan yang berterusan, ia boleh menjadi alat yang berkesan untuk perdagangan frekuensi tinggi crypto.


/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-09 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © deperp
//@version=5
strategy('3kilos', shorttitle='3kilos BTC 15m', overlay=true, initial_capital=100000, max_bars_back=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)

short = input.int(50, minval=1)
srcShort = input(high, title='TEMA short')

long = input.int(100, minval=1)
srcLong = input(low, title='TEMA long 2')

long2 = input.int(350, minval=1)
srcLong2 = input(close, title='TEMA long 3')

atrLength = input.int(550, title='ATR Length', minval=1)
mult = input.float(3, title="Multiplier", minval=0.5, step=1)

smaPeriod = input.int(100, title="SMA Period", minval=1)

takeProfitPercent = input.float(1, title="Take Profit (%)", minval=0.1) / 100
stopLossPercent = input.float(3, title="Stop Loss (%)", minval=0.1) / 100


tema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    3 * (ema1 - ema2) + ema3

tema1 = tema(srcShort, short)
plot(tema1, color=color.new(color.red, 0), linewidth=2)

tema2 = tema(srcLong, long)
plot(tema2, color=color.new(color.blue, 0), linewidth=2)

tema3 = tema(srcLong2, long2)
plot(tema3, color=color.new(color.green, 0), linewidth=2)

// Custom ATR calculation with EMA smoothing
atr_ema(src, length) =>
    trueRange = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
    emaTrueRange = ta.ema(trueRange, length)
    emaTrueRange

// Calculate ATR with EMA smoothing
atr = atr_ema(close, atrLength)

// Calculate Supertrend
var float up = na
var float dn = na
var bool uptrend = na
up := na(up[1]) ? hl2 - (mult * atr) : uptrend[1] ? math.max(hl2 - (mult * atr), up[1]) : hl2 - (mult * atr)
dn := na(dn[1]) ? hl2 + (mult * atr) : uptrend[1] ? hl2 + (mult * atr) : math.min(hl2 + (mult * atr), dn[1])
uptrend := na(uptrend[1]) ? true : close[1] > dn[1] ? true : close[1] < up[1] ? false : uptrend[1]

// Calculate SMA
sma = ta.sma(tema1, smaPeriod)

// Heikin-Ashi Close
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)


// Trend determination using Heikin-Ashi Close
longC = tema1 > tema2 and tema1 > tema3 and uptrend and tema1 > sma and haClose > haClose[1]
shortC = tema1 < tema2 and tema1 < tema3 and not uptrend and tema1 < sma and haClose < haClose[1]


alertlong = longC and not longC[1]
alertshort = shortC and not shortC[1]

useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2023"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

stopLossLevelLong = close - atr * mult
stopLossLevelShort = close + atr * mult
longTakeProfitLevel = close * (1 + takeProfitPercent)
longStopLossLevel = close * (1 - stopLossPercent)
shortTakeProfitLevel = close * (1 - takeProfitPercent)
shortStopLossLevel = close * (1 + stopLossPercent)



if inTradeWindow and longC
    strategy.entry('Long', strategy.long, comment='Long')
    strategy.exit("TP Long", "Long", limit=longTakeProfitLevel, stop=longStopLossLevel, comment="TP/SL Long")

if inTradeWindow and shortC
    strategy.entry('Short', strategy.short, comment='Short')
    strategy.exit("TP Short", "Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel, comment="TP/SL Short")

// Alerts

alertcondition(longC, title='Long', message=' Buy Signal ')
alertcondition(shortC, title='Short', message=' Sell Signal ')

Lebih lanjut