Strategi ini adalah berdasarkan pada 50 hari bergerak rata-rata dan 200 hari bergerak rata-rata BTC, yang digabungkan dengan penilaian indikator teknikal tambahan untuk memberi isyarat membeli dan menjual. Strategi ini digunakan terutamanya untuk pasangan mata wang BTC / USDT yang mempunyai ciri-ciri trend yang jelas.
Apabila 50 hari rata-rata bergerak ke atas memecahkan 200 hari rata-rata bergerak dan membentuk forks emas berlian, menunjukkan bahawa BTC memasuki pasaran multihead dan menghasilkan isyarat beli. Dan apabila 50 hari rata-rata bergerak ke bawah memecahkan 200 hari rata-rata bergerak dan membentuk forks mati, menunjukkan bahawa BTC memasuki pasaran kosong dan menghasilkan isyarat jual.
Selain daripada penghakiman asas pergerakan rata-rata pada forklift dan isyarat forklift mati, strategi ini menambah beberapa petunjuk teknikal tambahan untuk membantu penghakiman, termasuk:
Indeks EMA: Mengira EMA dengan panjang + offset, yang boleh dibeli apabila kenaikan menunjukkan bahawa ia kini berada di pasaran multihead.
Bandingkan purata bergerak dengan nilai EMA: Jika nilai EMA lebih tinggi daripada purata bergerak 50 hari, keputusan beli dihasilkan.
Semak harga turun lebih daripada 1% daripada titik rendah pada garis K sebelumnya, dan jika dipenuhi akan menghasilkan isyarat jual.
Dengan menggunakan gabungan beberapa indikator di atas, anda boleh menyaring beberapa isyarat yang salah dan membuat keputusan perdagangan strategi yang lebih dipercayai.
Strategi ini mempunyai beberapa kelebihan:
Menggunakan purata bergerak sebagai isyarat perdagangan utama, ia boleh menapis bunyi pasaran dan mengenal pasti arah trend.
Digabungkan dengan pelbagai penunjuk teknologi tambahan seperti EMA, ia dapat meningkatkan kebolehpercayaan isyarat dan menyaring isyarat palsu.
Dengan menggunakan strategi hentikan kerugian yang sesuai, anda boleh mengawal kerugian tunggal dengan berkesan.
Logik perdagangan yang lebih mudah, mudah difahami, sesuai untuk pemula dalam perdagangan kuantitatif.
Lebih banyak parameter boleh dikonfigurasi dan boleh disesuaikan mengikut keutamaan anda.
Strategi ini juga mempunyai risiko yang perlu diperhatikan:
Rata-rata bergerak sendiri sangat ketinggalan zaman dan mungkin terlepas peluang untuk harga berbalik dengan cepat.
Penambahbaikan ini menambah jumlah peraturan dan meningkatkan kebarangkalian untuk menghasilkan isyarat salah.
Tetapan henti rugi yang tidak betul boleh menyebabkan kerugian meningkat.
Tetapan parameter yang tidak betul (seperti panjang purata bergerak dan sebagainya) juga boleh menjejaskan kesan strategi.
Penyelesaian:
Memperingkat tempoh purata bergerak dengan betul, meningkatkan ruang optimasi parameter.
Meningkatkan jumlah data pengukuran dan memeriksa kualiti isyarat.
Melepaskan Stop Loss dengan betul, sambil menetapkan Stop Profit.
Menambah pengoptimuman parameter, mencari kombinasi parameter yang terbaik.
Strategi ini juga boleh dioptimumkan dengan cara berikut:
Menambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik.
Menambah lebih banyak penunjuk tambahan, membina lebih banyak sub-strategi, dan menghasilkan keputusan melalui mekanisme pengundian.
Cuba strategi Breakout untuk mengenal pasti kenaikan harga.
Menggunakan pembelajaran mendalam untuk meramalkan trend harga.
Mengoptimumkan mekanisme hentian kerugian, mewujudkan hentian kerugian yang dinamik.
Pengoptimuman di atas dapat meningkatkan ketepatan keputusan dan meningkatkan keuntungan dan kestabilan strategi.
Strategi ini terutamanya berdasarkan BTC bergerak purata persilangan untuk membuat keputusan perdagangan, ditambah dengan petunjuk teknikal seperti EMA untuk memfilter isyarat. Strategi ini mempunyai keupayaan trend yang kuat, juga boleh dikonfigurasi tinggi, sesuai sebagai strategi kemasukan untuk perdagangan kuantitatif. Tetapi ada juga risiko ketinggalan tertentu, perlu berhati-hati. Arah pengoptimuman seterusnya boleh dilakukan dari pelbagai peringkat seperti pembelajaran mesin, strategi integrasi, dan strategi hentikan kerugian.
/*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)