Strategi Perdagangan Multi-faktor Bitcoin

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

Gambaran umum

Ini adalah strategi perdagangan komprehensif yang dirancang untuk perdagangan jangka waktu 15 menit Bitcoin dan cryptocurrency lainnya. Ini menggabungkan beberapa indikator untuk menghasilkan sinyal beli dan jual, termasuk Triple Exponential Moving Average (TEMA), Average True Range (ATR), dan lilin Heikin-Ashi, bersama dengan fitur manajemen risiko seperti mengambil keuntungan dan stop loss.

Logika Strategi

Strategi ini menggunakan indikator berikut:

  • Triple Exponential Moving Average (TEMA): Tiga garis TEMA dengan panjang dan sumber yang berbeda, berdasarkan harga tinggi, rendah, dan dekat.

  • Rata-rata rentang benar (ATR): Perhitungan ATR khusus dengan perataan EMA untuk mengukur volatilitas.

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

  • Simple Moving Average (SMA): diterapkan pada garis TEMA pendek untuk meratakan nilainya.

  • Heikin-Ashi Close: Digunakan untuk konfirmasi tren tambahan.

Sinyal masuk panjang dipicu ketika TEMA pendek berada di atas kedua garis TEMA panjang, Supertrend bullish, TEMA pendek berada di atas SMA, dan penutupan Heikin-Ashi lebih tinggi dari penutupan sebelumnya.

Sinyal masuk pendek diaktifkan ketika kondisi sebaliknya terpenuhi.

Ambil keuntungan dan stop loss ditetapkan pada 1% dan 3% dari harga masuk.

Analisis Keuntungan

  • Beberapa faktor meningkatkan akurasi Menggabungkan indikator tren, volatilitas, pola dapat meningkatkan akurasi dan menghindari sinyal palsu.

  • Risiko Stop Loss/Take Profit yang wajar Stop loss yang diatur dengan baik dan mengambil tingkat keuntungan mengunci keuntungan dan membatasi kerugian.

  • Ruang pengoptimalan parameter besar Parameter indikator dapat disesuaikan secara fleksibel untuk beradaptasi dengan perubahan pasar.

  • Lebih realistis dengan komisi diperhitungkan Komisi yang dipertimbangkan membuat hasil backtest lebih dekat dengan kinerja hidup.

Analisis Risiko

  • Risiko kesalahan penilaian akibat terlalu banyak optimasi Terlalu banyak indikator gabungan juga dapat menyebabkan penilaian yang salah.

  • Risiko yang lebih tinggi dengan perdagangan jangka pendek Dibandingkan dengan jangka waktu yang lebih lama, 15 menit lebih rentan terhadap peristiwa dan risiko mendadak.

  • Stabilitas strategi membutuhkan validasi lebih lanjut Pengujian yang lebih luas di seluruh sejarah dan pasar yang panjang diperlukan untuk memastikan keandalan.

  • Optimasi panjang dengan beberapa parameter Banyak parameter yang diperkenalkan mengarah pada proses yang panjang untuk mengoptimalkan semua kombinasi parameter.

Arah Peningkatan

  • Evaluasi efek nyata dari setiap indikator Backtest untuk memverifikasi manfaat tambahan yang sebenarnya dari setiap indikator, menghindari redundansi.

  • Mengoptimalkan dan menguji stabilitas Hasil pengujian optimasi di lebih banyak pasar untuk memastikan ketahanan.

  • Menggabungkan strategi stop loss Seperti trailing stop, bracket order stop untuk mengontrol risiko lebih lanjut.

  • Pertimbangkan lebih banyak faktor biaya Seperti tergelincir untuk membuat backtest lebih dekat dengan pertunjukan langsung.

Ringkasan

Strategi ini menggabungkan beberapa indikator dan teknik manajemen risiko yang disesuaikan untuk perdagangan Bitcoin selama 15 menit. Masih ada ruang besar untuk mengoptimalkan parameter, mengevaluasi efektivitas indikator, tes stabilitas pasar yang luas, dan memperkenalkan lebih banyak faktor dunia nyata untuk menemukan kombinasi optimal dalam pendekatan multi-faktor. Dengan optimasi dan verifikasi yang terus-menerus, ini dapat menjadi alat yang efektif untuk perdagangan frekuensi tinggi kripto.


/*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 banyak