
Strategi perdagangan reversal tren multi-faktor adalah sistem perdagangan terprogram yang dirancang khusus untuk mengidentifikasi titik balik potensial setelah kenaikan atau penurunan berturut-turut di pasar. Strategi ini menggunakan analisis pergerakan harga, pengakuan volume gabungan, dan beberapa indikator teknis seperti jalur jalur (Bulling Belt atau Kettner Channel) untuk menangkap peluang reversal di pasar yang overbought atau oversold. Inti dari strategi ini adalah meningkatkan keandalan dan akurasi sinyal perdagangan melalui penilaian komposit dari beberapa faktor.
Strategi ini didasarkan pada tiga elemen utama untuk menghasilkan sinyal perdagangan:
Trigger sinyal perdagangan perlu memenuhi kombinasi kondisi yang ditetapkan. Sistem akan menggambar tanda segitiga di posisi yang memenuhi syarat dan melakukan operasi polygonal yang sesuai setelah mengkonfirmasi penutupan K. Strategi ini menggunakan 80% dari ekuitas akun sebagai ukuran posisi untuk setiap perdagangan dan mempertimbangkan biaya transaksi 0,01% .
Strategi perdagangan reversal tren multi-faktor menyediakan pedagang dengan skema reversal yang sistematis melalui analisis komprehensif informasi pasar dalam beberapa dimensi, seperti bentuk harga, perubahan volume transaksi, dan terobosan saluran. Keunggulan strategi terletak pada konfigurasi parameter yang fleksibel dan mekanisme konfirmasi sinyal multi-dimensi, tetapi juga perlu memperhatikan adaptasi dan pengendalian risiko lingkungan pasar.
/*backtest
start: 2024-12-03 00:00:00
end: 2024-12-10 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="The Bar Counter Trend Reversal Strategy [TradeDots]", overlay=true, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 80, commission_type = strategy.commission.percent, commission_value = 0.01)
// Initialize variables
var bool rise_triangle_ready = false
var bool fall_triangle_ready = false
var bool rise_triangle_plotted = false
var bool fall_triangle_plotted = false
//Strategy condition setup
noOfRises = input.int(3, "No. of Rises", minval=1, group="STRATEGY")
noOfFalls = input.int(3, "No. of Falls", minval=1, group="STRATEGY")
volume_confirm = input.bool(false, "Volume Confirmation", group="STRATEGY")
channel_confirm = input.bool(true, "", inline="CHANNEL", group="STRATEGY")
channel_type = input.string("KC", "", inline="CHANNEL", options=["BB", "KC"],group="STRATEGY")
channel_source = input(close, "", inline="CHANNEL", group="STRATEGY")
channel_length = input.int(20, "", inline="CHANNEL", minval=1,group="STRATEGY")
channel_mult = input.int(2, "", inline="CHANNEL", minval=1,group="STRATEGY")
//Get channel line information
[_, upper, lower] = if channel_type == "KC"
ta.kc(channel_source, channel_length,channel_mult)
else
ta.bb(channel_source, channel_length,channel_mult)
//Entry Condition Check
if channel_confirm and volume_confirm
rise_triangle_ready := ta.falling(close, noOfFalls) and ta.rising(volume, noOfFalls) and high > upper
fall_triangle_ready := ta.rising(close, noOfRises) and ta.rising(volume, noOfRises) and low < lower
else if channel_confirm
rise_triangle_ready := ta.falling(close, noOfFalls) and low < lower
fall_triangle_ready := ta.rising(close, noOfRises) and high > upper
else if volume_confirm
rise_triangle_ready := ta.falling(close, noOfFalls) and ta.rising(volume, noOfFalls)
fall_triangle_ready := ta.rising(close, noOfRises) and ta.rising(volume, noOfRises)
else
rise_triangle_ready := ta.falling(close, noOfFalls)
fall_triangle_ready := ta.rising(close, noOfRises)
// Check if trend is reversed
if close > close[1]
rise_triangle_plotted := false // Reset triangle plotted flag
if close < close[1]
fall_triangle_plotted := false
//Wait for bar close and enter trades
if barstate.isconfirmed
// Plot triangle when ready and counts exceed threshold
if rise_triangle_ready and not rise_triangle_plotted
label.new(bar_index, low, yloc = yloc.belowbar, style=label.style_triangleup, color=color.new(#9CFF87,10))
strategy.entry("Long", strategy.long)
rise_triangle_plotted := true
rise_triangle_ready := false // Prevent plotting again until reset
if fall_triangle_ready and not fall_triangle_plotted
label.new(bar_index, low, yloc = yloc.abovebar, style=label.style_triangledown, color=color.new(#F9396A,10))
strategy.entry("Short", strategy.short)
fall_triangle_plotted := true
fall_triangle_ready := false
// plot channel bands
plot(upper, color = color.new(#56CBF9, 70), linewidth = 3, title = "Upper Channel Line")
plot(lower, color = color.new(#56CBF9, 70), linewidth = 3, title = "Lower Channel Line")