Strategi Trading BTC Berdasarkan Moving Average Crossover

Penulis:ChaoZhang, Tanggal: 2023-12-07 14:56:50
Tag:

img

Gambaran umum

Strategi ini didasarkan pada sinyal golden cross dan death cross dari rata-rata bergerak 50 hari dan rata-rata bergerak 200 hari BTC, dikombinasikan dengan indikator teknis tambahan untuk menghasilkan sinyal beli dan jual. Strategi ini terutama cocok untuk pasangan mata uang dengan karakteristik tren yang jelas seperti BTC/USDT.

Prinsip Strategi

Ketika rata-rata bergerak 50 hari melintasi di atas rata-rata bergerak 200 hari untuk membentuk golden cross, itu menunjukkan bahwa BTC telah memasuki pasar bull dan menghasilkan sinyal beli. Sementara ketika rata-rata bergerak 50 hari melintasi di bawah rata-rata bergerak 200 hari untuk membentuk death cross, itu menunjukkan bahwa BTC telah memasuki pasar bear dan menghasilkan sinyal jual.

Selain penilaian sinyal rata-rata bergerak dasar salib emas dan salib kematian, strategi ini juga menggabungkan beberapa indikator teknis tambahan untuk membantu penilaian, termasuk:

  1. Indikator EMA: Menghitung indikator EMA dengan panjang + offset, ketika naik menunjukkan pasar saat ini bullish, kita dapat membeli.

  2. Bandingkan hubungan nilai antara rata-rata bergerak dan EMA: Jika nilai EMA lebih tinggi dari rata-rata bergerak 50 hari, sinyal beli dihasilkan.

  3. Periksa apakah harga telah turun lebih dari 1% dibandingkan dengan terendah dari K-line sebelumnya, jika demikian menghasilkan sinyal jual.

Dengan menggabungkan penggunaan beberapa indikator di atas, beberapa sinyal yang salah dapat disaring dan keputusan perdagangan strategi dapat lebih dapat diandalkan.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan rata-rata bergerak sebagai sinyal perdagangan utama dapat menyaring kebisingan pasar dan mengidentifikasi arah tren.

  2. Kombinasi dengan beberapa indikator teknis bantu dapat meningkatkan keandalan sinyal dan menyaring sinyal palsu.

  3. Mengadopsi strategi stop-loss yang tepat dapat secara efektif mengendalikan kerugian tunggal.

  4. Logika perdagangan yang relatif sederhana mudah dimengerti dan diimplementasikan, cocok untuk pemula perdagangan kuantitatif.

  5. Ada banyak parameter konfigurasi yang dapat disesuaikan sesuai dengan preferensi Anda sendiri.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko yang perlu dicatat:

  1. Rata-rata bergerak itu sendiri memiliki atribut keterlambatan yang kuat, mungkin kehilangan peluang untuk pembalikan harga yang cepat.

  2. Menambahkan indikator asisten meningkatkan jumlah aturan dan juga meningkatkan kemungkinan menghasilkan sinyal yang salah.

  3. Pengaturan stop-loss yang tidak benar dapat menyebabkan kerugian meningkat.

  4. Pengaturan parameter yang tidak tepat (seperti panjang rata-rata bergerak, dll.) juga akan mempengaruhi hasil strategi.

Solusi yang sesuai:

  1. Singkatkan siklus rata-rata bergerak dengan tepat dan tingkatkan rentang optimasi parameter.

  2. Meningkatkan jumlah data backtest untuk memeriksa kualitas sinyal.

  3. Rilakkan rentang stop loss dengan benar saat mengatur stop profit.

  4. Tingkatkan optimasi parameter untuk menemukan kombinasi parameter terbaik.

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam arah berikut:

  1. Meningkatkan algoritma pembelajaran mesin untuk mencapai optimasi parameter otomatis.

  2. Tambahkan indikator tambahan untuk membangun beberapa sub-strategi dan membuat keputusan melalui mekanisme pemungutan suara.

  3. Coba strategi breakout untuk mengidentifikasi terobosan harga.

  4. Gunakan pembelajaran mendalam untuk memprediksi tren harga.

  5. Mengoptimalkan mekanisme stop-loss untuk mencapai stop-loss pelacakan dinamis.

Optimalisasi di atas dapat meningkatkan akurasi keputusan dan meningkatkan profitabilitas dan stabilitas strategi.

Ringkasan

Strategi ini terutama membuat keputusan perdagangan berdasarkan crossover rata-rata bergerak BTC, dibantu oleh indikator teknis seperti EMA untuk menyaring sinyal. Strategi ini memiliki kemampuan mengikuti tren yang kuat dan konfigurasi yang tinggi, menjadikannya cocok sebagai strategi perdagangan kuantitatif pemula. Tetapi ada juga risiko tertinggal tertentu yang perlu dijaga. Arah optimasi berikutnya dapat dari berbagai dimensi seperti pembelajaran mesin, strategi portofolio, strategi stop-loss, dll.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('JayJay BTC Signal', overlay=true, initial_capital=100, currency='USD', default_qty_value=100, default_qty_type=strategy.percent_of_equity, commission_value=0, calc_on_every_tick=true)

securityNoRepaint(sym, tf, src) => request.security(sym, tf, src[barstate.isrealtime ? 1 : 0])[barstate.isrealtime ? 0 : 1]

//200 50 Moving Average
ma50Len = input.int(50, minval=1, title='MA50-Length')
ma50Src = input(close, title='MA50-Source')
ma50Show = input(true, title='Show SMA50 on chart')
ma50Close = ta.sma(ma50Src, ma50Len)
ma50CloseTimeframe = input.timeframe("240", "Ma50 Timeframe", group = "EMA Options")
ma50Open = ta.sma(open, ma50Len)
ma200Len = input.int(200, minval=1, title='MA200-Length')
ma200Src = input(close, title='MA200-Source')
ma200Show = input(true, title='Show SMA200 on chart')
ma200CloseTimeframe = input.timeframe("D", "Ma200 Timeframe", group = "EMA Options")
ma200Close = ta.sma(ma200Src, ma200Len)
ma200Open = ta.sma(open, ma200Len)
//plot(ma200Close, color=color.new(#0b6ce5, 0), title='MA200')
//plot(ma50Close, color=color.new(#00d8ff, 0), title='MA50')

sma50 = securityNoRepaint(syminfo.tickerid, ma50CloseTimeframe, ma50Close)
plot(sma50 and ma50Show ? sma50 : na, color=color.new(#00d8ff, 0), title='SMA50')
sma200 = securityNoRepaint(syminfo.tickerid, ma200CloseTimeframe, ma200Close)
plot(sma200 and ma200Show ? sma200 : na, color=color.new(#00d8ff, 0), title='SMA200')

// Short/Long EMA
// Define the offset value
EMAOffsetValue = input.int(2, title='EMA Offset', minval=0)
emaplot = input(true, title='Show EMA on chart')
len = input.int(20, minval=1, title='ema Length') + EMAOffsetValue
emaCloseTimeframe = input.timeframe("240", "EMA 1 Timeframe", group = "EMA Options")
emaOpen = ta.ema(open, len)
emaClose = ta.ema(close, len)

ema = securityNoRepaint(syminfo.tickerid, emaCloseTimeframe, emaClose)

up = emaClose > ema[1]
down = emaClose < ema[1]
mycolor = up ? color.green : down ? color.red : color.blue

plot(ema and emaplot ? ema : na, title='Signal EMA', color=mycolor, linewidth=3)
//plot(emaClose and emaplot ? emaClose : na, title='Signal 20 EMA', color=color.yellow, linewidth=3)

ma50GreaterThanMa200 = sma50 > sma200

last3BarUp = ema > ema[1]

startLong = up and ema > sma50 and ma50GreaterThanMa200 and (100 - (sma50 / ema * 100) > 1.0)

startFrom = input(timestamp("20 Jan 2000 00:00"), "StartFrom")

yearFilter = true

alertLongPositionMessage = "{\"direction:\": \"long\", \"action\": \"{{strategy.order.action}}\", \"price\": \"{{strategy.order.price}}\", \"qty\": \"{{strategy.position_size}}\", \"symbol\": \"{{ticker}}\", \"date\": \"{{time}}\"}"

if true and startLong and yearFilter
    strategy.entry('Long', strategy.long, comment = "Long", alert_message = alertLongPositionMessage)

longStopLossLevel = open * 0.05
strategy.exit('StopLoss', from_entry='Long',comment = "StopLoss!", loss=longStopLossLevel, profit=close * 0.3, alert_message = alertLongPositionMessage)
longPercentageChange = low / close[1] * 100 - 100
is1PercentLower = longPercentageChange < -0.1
closeLongPositionWhen = (down and is1PercentLower) or (emaClose < sma50)
if closeLongPositionWhen
    strategy.close('Long', comment = "Fuck It!", alert_message =  alertLongPositionMessage)

bgcolor(startLong ? color.green : na, transp=90)



Lebih banyak