
Die Multi-Faktor-Umkehr-Trend-Trading-Strategie ist ein speziell entwickeltes programmierbares Handelssystem, um potenzielle Umkehrpunkte in einem Markt nach einer Reihe von Auf- oder Abwärtsbewegungen zu identifizieren. Die Strategie analysiert die Preisentwicklung und kombiniert mehrere technische Indikatoren wie die Transaktionsbestätigung und den Kanal-Band (Bulling-Band oder Kentner-Kanal), um Umkehrmöglichkeiten in einem überkauften oder überverkauften Markt zu erfassen.
Die Strategie basiert auf der Generierung von Handelssignalen, die aus folgenden drei Kernkomponenten bestehen:
Der Trigger des Handelssignals erfordert die Erfüllung einer bestimmten Kombination von Bedingungen. Nach der Bestätigung des K-Linien-Abschlusses zeichnet das System die Dreieckmarkierung an der geeigneten Position und führt die entsprechenden Multifunktion-Operationen aus. Die Strategie verwendet 80% der Kontogewinn als Positionsgröße für jeden Handel und berücksichtigt 0,01% der Transaktionsgebühren.
Die Multi-Faktor-Umkehr-Trend-Trading-Strategie bietet den Händlern eine systematische Umkehr-Trading-Strategie durch die umfassende Analyse von Marktinformationen in mehreren Dimensionen, wie z. B. Preisstrukturen, Transaktionsvolumenänderungen und Kanalbruch. Die Vorteile der Strategie liegen in ihrer flexiblen Parameterkonfiguration und ihrer mehrdimensionalen Signalbestätigungsmechanik, wobei jedoch auch auf die Anpassung an die Marktumgebung und die Risikokontrolle geachtet wird. Durch die empfohlene Optimierungsrichtung wird die Strategie in der realen Handelsdiskette eine bessere Leistung erbringen.
/*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")