
Strategi perdagangan trend reversal pelbagai faktor adalah sistem perdagangan berprogrami yang direka khusus untuk mengenal pasti titik-titik perubahan yang berpotensi di pasaran selepas kenaikan atau penurunan berturut-turut. Strategi ini menggunakan analisis pergerakan harga, pengesahan jumlah gabungan dan beberapa petunjuk teknikal seperti jalur jalur (Bulline Belt atau Kettner Channel) untuk menangkap peluang perubahan di bawah keadaan pasaran yang terlalu banyak atau terlalu banyak.
Strategi ini berdasarkan kepada tiga elemen utama untuk menghasilkan isyarat perdagangan:
Trigger isyarat dagangan memerlukan kombinasi syarat yang ditetapkan. Sistem akan menggambar penanda segitiga di kedudukan yang memenuhi syarat dan melakukan operasi polygonal yang sesuai setelah mengesahkan penutupan K. Strategi menggunakan 80% daripada kepentingan akaun sebagai saiz kedudukan setiap dagangan, dan mempertimbangkan 0.01% dari bayaran pemprosesan dagangan.
Strategi dagangan trend reversal pelbagai faktor menyediakan pedagang dengan rancangan dagangan reversal yang sistematik dengan menganalisis maklumat pasaran dalam pelbagai dimensi seperti bentuk harga, perubahan jumlah dagangan, dan penembusan saluran. Kelebihan strategi adalah konfigurasi parameter yang fleksibel dan mekanisme pengesahan isyarat berbilang dimensi, tetapi juga memerlukan perhatian terhadap penyesuaian dan kawalan risiko persekitaran pasaran. Dengan arah pengoptimuman yang disyorkan, strategi ini dijangka dapat mencapai prestasi yang lebih baik dalam cakera perdagangan sebenar.
/*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")