Strategi Perdagangan Pelbagai Faktor Bitcoin


Tarikh penciptaan: 2023-09-25 18:24:02 Akhirnya diubah suai: 2023-09-25 18:24:02
Salin: 9 Bilangan klik: 837
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan komprehensif yang digunakan untuk Bitcoin dan mata wang kripto lain dalam jangka masa 15 minit. Ia menggabungkan beberapa indikator untuk menghasilkan isyarat beli dan jual, termasuk purata bergerak indeks tiga kali ganda, purata pergerakan sebenar, dan grafik garisan penyaring keseimbangan, dan mempunyai mekanisme pengurusan risiko seperti stop loss.

Prinsip Strategi

Strategi ini menggunakan pelbagai indikator:

  • TEMA: 3 TEMA yang menggunakan panjang dan sumber yang berbeza, dikira berdasarkan harga tinggi, rendah dan harga penutupan.

  • Rata-rata Ganjaran Pergerakan Sebenar (ATR): Menggunakan EMA yang lancar untuk mengira kadar pergerakan pasaran.

  • Penunjuk Super Trend: menentukan arah trend berdasarkan ATR dan kelipatan.

  • Purata bergerak sederhana ((SMA): SMA untuk TEMA jangka pendek dikira sebagai nilai rata.

  • Harga penutupan garisan keseimbangan: digunakan untuk trend pengesahan tambahan.

Apabila TEMA jangka pendek lebih tinggi daripada dua TEMA jangka panjang, indikator overtrend adalah bullish, TEMA jangka pendek lebih tinggi daripada SMA, dan harga penutupan garisan keseimbangan lebih tinggi daripada hari sebelumnya, menghasilkan isyarat beli.

Apabila TEMA jangka pendek adalah lebih rendah daripada dua TEMA jangka panjang, penunjuk overtrend turun, TEMA jangka pendek adalah lebih rendah daripada SMA, dan harga penutupan garisan keseimbangan adalah lebih rendah daripada hari sebelumnya, menghasilkan isyarat jual.

Hentian dan kerugian ditetapkan sebagai 1% dan 3% daripada harga kemasukan.

Analisis kelebihan

  • Penghakiman Komprehensif Berbilang Faktor Untuk Meningkatkan Ketepatan

Gabungan beberapa indikator faktor seperti trend, kadar turun naik, bentuk, dan lain-lain dapat meningkatkan ketepatan penghakiman dan mengelakkan isyarat palsu.

  • Mekanisme Stop Loss mengawal risiko dengan bijak

Tetapan henti rugi yang munasabah dapat mengunci keuntungan dan juga dapat mengehadkan kerugian individu secara berkesan.

  • Optimasi parameter ruang yang besar

Parameter penunjuk boleh diselaraskan secara fleksibel, menyesuaikan diri dengan perubahan pasaran, mencari kombinasi terbaik.

  • Mempertimbangkan faktor bayaran lebih dekat dengan rakaman sebenar

Dengan penambahan faktor yuran, keputusan pengesahan akan lebih dekat dengan prestasi transaksi sebenar.

Analisis risiko

  • Risiko kesalahan pengiraan dalam kombinasi faktor-faktor

Terlalu banyak kombinasi indikator juga boleh menyebabkan kesalahan penghakiman, dan keberkesanan indikator perlu dinilai dengan teliti.

  • Operasi kitaran pendek berisiko tinggi

Operasi 15 minit lebih terdedah kepada kejadian yang tidak dijangka dan mempunyai risiko yang lebih besar untuk kejadian yang tidak dijangka.

  • Kestabilan strategi yang akan diuji

Strategi ini masih perlu disahkan dalam tempoh yang lebih lama dan dalam pelbagai pasaran untuk memastikan kestabilan.

  • Optimasi parameter yang lebih lama

Kombinasi pelbagai parameter membawa banyak parameter, dan mengoptimumkan semua kombinasi parameter memerlukan masa yang lama.

Arah pengoptimuman

  • Penilaian kesan sebenar setiap petunjuk

Uji balas untuk menguji kesan peningkatan sebenar setiap indikator, mengelakkan penggunaan indikator berlebihan.

  • Parameter pengoptimuman, pengujian kestabilan

Ujian Parameter Optimisasi Hasil Di Lebih Banyak Pasaran, Memastikan Kestabilan Dan Ketergantungan.

  • Menyertai strategi stop loss

Pengendalian risiko yang lebih lanjut boleh dilakukan dengan cara-cara seperti bergerak berhenti, berhenti berhenti dan sebagainya.

  • Pertimbangkan faktor kos yang lebih

Kos slippoint dan lain-lain menjadikan pengukuran lebih realistik.

ringkaskan

Strategi ini menggabungkan beberapa indikator dan mekanisme kawalan risiko yang direka untuk perdagangan kitaran 15 minit Bitcoin. Ruang untuk pengoptimuman masih besar dan memerlukan penilaian mendalam mengenai kesan indikator, ujian kestabilan pasaran yang luas, dan penambahan lebih banyak pertimbangan dalam talian untuk mencari kombinasi parameter terbaik dalam strategi berbilang faktor.

Kod sumber strategi
/*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 ')