Die Multi-Faktor Counter-Trend Trading Strategie ist ein ausgeklügeltes algorithmisches Handelssystem, das entwickelt wurde, um potenzielle Umkehrpunkte nach aufeinanderfolgenden Preisanstiegen oder -rückgängen auf dem Markt zu identifizieren.
Die Strategie erzeugt Handelssignale auf der Grundlage von drei Kernelementen:
Die Strategie verwendet 80% des Kontokapitals für die Positionsgröße und Faktoren in einer Handelsprovision von 0,01%.
Die Multi-Faktor Counter-Trend Trading Strategie bietet einen systematischen Ansatz für den Umkehrhandel durch eine umfassende Analyse von Preismustern, Volumenänderungen und Kanal-Breakouts. Während die Strategie in ihrer flexiblen Konfiguration und mehrdimensionalen Signalbestätigung hervorstecht, muss auf die Anpassung an das Marktumfeld und die Risikokontrolle geachtet werden.
/*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")