
Strategi ini terutama menggunakan double moving average sebagai sinyal beli dan jual, untuk mendapatkan keuntungan ketika tren berbalik. Berbuat lebih banyak ketika melewati rata-rata bergerak jangka panjang di atas rata-rata bergerak jangka pendek, dan mengambil posisi kosong ketika melewati rata-rata bergerak jangka panjang di bawah rata-rata bergerak jangka pendek, adalah strategi tracking stop loss yang umum.
Strategi ini pertama-tama menetapkan dua rata-rata bergerak, yaitu rata-rata 20 hari yang lebih pendek, dan rata-rata 60 hari yang lebih panjang. Kemudian menilai persilangan rata-rata jangka pendek dan rata-rata jangka panjang untuk menentukan masuk.
Secara khusus, ketika garis rata-rata jangka pendek di atas garis rata-rata jangka panjang, ini menunjukkan bahwa saat ini sedang dalam tren naik, ini lebih banyak; ketika garis rata-rata jangka pendek di bawah garis rata-rata jangka panjang, ini menunjukkan bahwa saat ini sedang dalam tren turun, ini kosong.
Stop loss setelah melakukan shorting lebih banyak adalah stop trailing, yang dapat mengunci keuntungan maksimum berdasarkan harga tertinggi dan harga terendah.
Kode logis utama adalah sebagai berikut:
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Ada beberapa cara untuk mengoptimalkan risiko:
Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:
Menambahkan penyaringan indikator lain, membentuk mekanisme masuk dengan kondisi ganda, menghindari terobosan palsu. Misalnya, penentuan indikator RSI dapat ditambahkan.
Optimalkan parameter periodik dari moving average untuk menemukan kombinasi optimal. Anda dapat menguji parameter periodik yang berbeda dengan langkah demi langkah.
Optimalkan Stop-Loss Range. Anda dapat menghitung Stop-Loss Range yang optimal dari data pengukuran ulang. Anda juga dapat mengatur Stop-Loss Range yang dinamis.
Siapkan mekanisme re-entry. Setelah stop loss keluar, Anda dapat mengatur logika re-entry yang masuk akal, mengurangi jumlah transaksi.
Menggabungkan indikator untuk menilai tren, menghentikan perdagangan jika tren tidak jelas, menghindari perdagangan yang tidak valid.
Bergabung dengan mekanisme manajemen posisi untuk menyesuaikan posisi dan batas stop loss sesuai dengan situasi pasar.
Strategi pembalikan rata-rata bergerak ganda secara keseluruhan relatif sederhana dan praktis, dan merupakan metode yang umum dan efektif untuk menentukan titik balik tren melalui garis rata-rata ganda. Namun, ada risiko tertentu, perlu melakukan pengujian optimasi pada pengaturan parameter dan batas penghentian, dan menambahkan indikator penyaringan lainnya untuk digunakan bersama, agar strategi dapat dimanfaatkan secara maksimal. Jika telah dioptimalkan dengan cermat dan manajemen risiko yang ketat, strategi ini dapat menjadi strategi perdagangan pita gelombang 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)