
Strategi ini didasarkan pada 50 hari moving average BTC dan 200 hari moving average Forex signal, yang dikombinasikan dengan penilaian indikator teknis tambahan untuk mengirim sinyal beli dan jual. Strategi ini terutama berlaku untuk pasangan mata uang BTC / USDT yang memiliki karakteristik tren yang jelas.
Ketika 50 hari bergerak rata-rata di atas pecah 200 hari bergerak rata-rata dan membentuk berlian forks, menunjukkan BTC masuk ke pasar multihead, menghasilkan sinyal beli. Dan ketika 50 hari bergerak rata-rata ke bawah pecah 200 hari bergerak rata-rata dan membentuk berlian mati, menunjukkan BTC masuk ke pasar kosong, menghasilkan sinyal jual.
Selain penilaian dasar dari moving average forks and dead forks, strategi ini menambahkan beberapa indikator teknis tambahan untuk membantu penilaian, termasuk:
Indikator EMA: Menghitung indikator EMA dengan length+offset, yang dapat dibeli ketika kenaikan menunjukkan bahwa saat ini ada di pasar berantai.
Bandingkan hubungan numerik dari moving average dengan EMA: Jika nilai EMA lebih tinggi dari moving average 50 hari, maka keputusan beli akan dihasilkan.
Cek harga turun lebih dari 1% dari titik terendah pada garis K sebelumnya, dan jika memenuhi akan menghasilkan sinyal jual.
Dengan menggunakan kombinasi beberapa indikator di atas, Anda dapat menyaring beberapa sinyal yang salah dan membuat keputusan perdagangan strategis yang lebih andal.
Strategi ini memiliki beberapa keuntungan:
Menggunakan moving average sebagai sinyal perdagangan utama, dapat menyaring kebisingan pasar dan mengidentifikasi arah tren.
Dengan kombinasi berbagai indikator teknologi tambahan seperti EMA, dapat meningkatkan keandalan sinyal, memfilter sinyal palsu.
Dengan strategi stop loss yang tepat, Anda dapat secara efektif mengendalikan kerugian tunggal.
Logika perdagangan yang lebih sederhana, mudah dipahami, dan cocok untuk pemula dalam perdagangan kuantitatif.
Ada banyak parameter yang dapat dikonfigurasi, yang dapat disesuaikan sesuai dengan preferensi Anda.
Strategi ini juga memiliki beberapa risiko yang perlu diperhatikan:
Rata-rata bergerak sendiri sangat lambat dan mungkin kehilangan kesempatan untuk membalikkan harga dengan cepat.
Indikator tambahan meningkatkan jumlah aturan dan juga meningkatkan probabilitas untuk menghasilkan sinyal yang salah.
Setelan stop loss yang tidak tepat dapat menyebabkan peningkatan kerugian.
Pengaturan parameter yang tidak tepat (seperti panjang rata-rata bergerak, dll.) juga dapat memengaruhi hasil strategi.
Solusi yang sesuai:
Memperpendekorasi siklus rata-rata bergerak dengan tepat dan memperluas ruang lingkup optimasi parameter.
Meningkatkan jumlah data pengukuran kembali, memeriksa kualitas sinyal.
Keterbatasan Stop Loss yang tepat, dengan setelan Stop Profit.
Menambahkan optimasi parameter, mencari kombinasi parameter yang optimal.
Strategi ini juga dapat dioptimalkan dalam beberapa arah:
Menambahkan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis.
Menambahkan lebih banyak indikator tambahan, membangun lebih banyak strategi kecil, dan menghasilkan keputusan melalui mekanisme voting.
Cobalah strategi Breakout untuk mengidentifikasi harga yang terjatuh.
Menggunakan pembelajaran mendalam untuk memprediksi tren harga.
Mengoptimalkan mekanisme stop loss, dan melakukan stop loss tracking secara dinamis.
Optimalisasi ini dapat meningkatkan keakuratan pengambilan keputusan, meningkatkan profitabilitas dan stabilitas strategi.
Strategi ini terutama didasarkan pada crossover rata-rata bergerak BTC untuk membuat keputusan perdagangan, ditambah dengan indikator teknis seperti EMA untuk memfilter sinyal. Strategi ini memiliki kemampuan pelacakan tren yang kuat, juga dapat dikonfigurasi dengan baik, dan cocok sebagai strategi masuk untuk perdagangan kuantitatif. Tetapi ada juga risiko keterlambatan tertentu, perlu berhati-hati.
/*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)