Strategi ini dirancang berdasarkan prinsip saluran dinamis dan pelacakan tren rata-rata bergerak. Ini menghitung saluran harga dinamis, menilai arah tren melalui rel atas dan bawah saluran, dan menghasilkan sinyal perdagangan dengan menggabungkan rata-rata bergerak untuk menyaring volatilitas harga. Strategi ini cocok untuk perdagangan tren jangka menengah dan pendek.
Prinsip utama dari strategi ini adalah:
Hitung saluran harga dinamis. Garis tengah saluran dihitung dari harga tertinggi dan harga terendah. Rel atas adalah garis tengah + volatilitas harga MA, dan rel bawah adalah garis tengah - volatilitas harga MA.
Bila harga menembus rel atas, itu didefinisikan sebagai bullish. Ketika harga menembus rel bawah, itu didefinisikan sebagai bearish.
Gunakan volatilitas harga MA dari periode tertentu untuk menyaring kebisingan dari fluktuasi harga acak.
Saat bullish, sinyal beli dihasilkan ketika harga penutupan lebih rendah dari harga buka dalam periode tersebut. Saat bearish, sinyal jual dihasilkan ketika harga penutupan lebih tinggi dari harga buka.
Keuntungan dari strategi ini adalah:
Risiko dari strategi ini adalah:
Solusi:
Strategi dapat dioptimalkan dalam aspek berikut:
Strategi ini mengintegrasikan ide-ide penilaian tren saluran dinamis dan MA, dan berkinerja baik dalam menangkap arah tren dalam jangka menengah dan pendek.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Strategy v1.0", shorttitle = "NoroBands str 1.0", 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") len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period") color = input(true, "Color") needbb = input(false, defval = false, title = "Show Bands") needbg = input(false, defval = false, title = "Show Background") src = close //PriceChannel 1 lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 //dist dist = abs(src - center) distsma = sma(dist, len) hd = center + distsma ld = center - distsma //Trend trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //up = and trend == 1 ? 1 : 0 //dn = and trend == -1 ? 1 : 0 up = close < hd and trend == 1 and (close < open or color == false) ? 1 : 0 dn = close > ld and trend == -1 and (close > open or color == false) ? 1 : 0 longCondition = up == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)