
Strategi ini terutamanya menggunakan purata bergerak ganda sebagai tanda membeli dan menjual, untuk mendapat keuntungan apabila trend berbalik. Apabila bergerak pendek rata-rata bergerak lebih banyak apabila bergerak panjang rata-rata bergerak, apabila bergerak pendek rata-rata bergerak bawah apabila bergerak panjang rata-rata bergerak, adalah salah satu yang biasa strategi berhenti kehilangan.
Strategi ini mula-mula menetapkan dua purata bergerak, satu purata 20 hari yang lebih pendek, dan satu purata 60 hari yang lebih lama. Kemudian menilai persilangan purata jangka pendek dan purata jangka panjang untuk menentukan kemasukan.
Khususnya, apabila garis purata jangka pendek melintasi garis purata jangka panjang, ia menunjukkan bahawa ia sedang dalam trend menaik, dan ia lebih banyak; apabila garis purata jangka pendek melintasi garis purata jangka panjang, ia menunjukkan bahawa ia sedang dalam trend menurun, dan ia kosong.
Hentikan kerugian selepas melakukan lebih banyak shorting adalah dengan mengesan hentian, berdasarkan harga tertinggi dan harga terendah untuk trailing stop, anda boleh mengunci keuntungan maksimum.
Logik kod utama adalah seperti berikut:
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Untuk mengoptimumkan risiko, anda boleh:
Strategi ini boleh dioptimumkan dengan cara berikut:
Menambah penapisan indikator lain, membentuk mekanisme kemasukan berbilang syarat, mengelakkan pemecahan palsu. Sebagai contoh, penentuan indikator RSI boleh dimasukkan.
Mengoptimumkan parameter kitaran pada garis purata bergerak untuk mencari kombinasi parameter yang terbaik. Anda boleh menguji parameter kitaran yang berbeza dengan langkah demi langkah.
Mengoptimumkan Jarak Hentian. Jarak Hentian yang optimum boleh dikira melalui data pengukuran semula. Jarak Hentian yang dinamik juga boleh ditetapkan.
Menetapkan mekanisme kemasukan semula. Selepas penarikan kerugian, logik kemasukan semula yang munasabah boleh ditetapkan untuk mengurangkan jumlah transaksi.
Menggabungkan indikator penilaian trend, berhenti berdagang apabila trend tidak jelas, untuk mengelakkan perdagangan tidak sah.
Menyertai mekanisme pengurusan kedudukan, menyesuaikan kedudukan dan had hentian mengikut keadaan pasaran yang dinamik.
Strategi pembalikan rata-rata bergerak berganda ini agak mudah dan praktikal secara keseluruhan, dan merupakan kaedah yang biasa dan berkesan untuk menentukan titik peralihan trend melalui dua garis rata. Tetapi ada risiko tertentu, perlu melakukan ujian pengoptimuman pada parameter dan ruang berhenti, dan menggabungkan indikator penapisan lain untuk digunakan bersama, agar strategi dapat digunakan secara maksimal. Jika dioptimumkan dengan teliti dan pengurusan risiko yang ketat, strategi ini boleh menjadi strategi perdagangan jangka panjang yang stabil dan menguntungkan.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
needdb = input(true, defval = true, title = "Double Body")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close
//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2
//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]
//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Body
body = abs(close - open)
smabody = needdb == false ? ema(body, 30) : ema(body, 30) * 2
candle = high - low
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0
if up7 == 1 or up8 == 1
strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)
if dn7 == 1 or dn8 == 1
strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)