
Die Kernidee der Strategie ist die Durchführung von Kauf- und Verkaufshandlungen basierend auf Preisbruchfällen im Dongqian-Kanal, eine quantitative Strategie der Trendverfolgung. Sie kann automatisch einen Preiskanal identifizieren, eine Position aufnehmen, wenn der Preis den Kanal überschreitet, und eine Position platzieren, wenn der Preis in der Nähe oder am Stopppunkt unterhalb des Kanals zurückfällt. Die Strategie zielt darauf ab, mittlere und längere Preistrends zu erfassen und ist für den Handel mit Algorithmen für Finanzderivate wie Aktienindizes geeignet.
Die Strategie basiert auf dem Dongxian-Kanal-Indikator, dem Kanalbereich, der durch Höchst- und Tiefstpreise in einem bestimmten Zeitraum gezeichnet wird. Die Berechnung erfolgt wie folgt:
Aufwärts = Höchstpreis in nahezu n Zyklen Abwärtskurs = niedrigster Kurs in nahezu n Zyklen
Bei einem Kursbruch wird als in einen mehrseitigen Trend eingegangen angesehen, bei einem Kursbruch als in einen ungebundenen Trend eingegangen. Die Strategie berücksichtigt nur den Fall, dass ein Kursbruch in einen oberen Trend eingegangen ist.
Die Transaktionslogik lautet wie folgt:
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Entsprechende Lösungen:
Die Strategie kann auch in folgenden Bereichen optimiert werden:
Die Strategie ist übersichtlich, leicht zu verstehen und zu implementieren, nutzt die etablierten Tongan-Channel-Indikatoren, um die Richtung der Trends automatisch zu erkennen. Die Konfiguration ist flexibel und kann an die tatsächlichen Bedürfnisse angepasst werden. Durch Stop-Loss- und Parameteroptimierung können bessere Ergebnisse erzielt werden.
/*backtest
start: 2022-12-07 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Giovanni_Trombetta
// Strategy to capture price channel breakouts
//@version=4
strategy("ChannelsBreakout", max_bars_back=50, overlay=true)
instrument = input(1, title = "Select 1: Stock/Forex, 2: Future")
money = input(10000, title = "Money for each trade")
backtest_start = input(2000, "Insert first year to backtest")
period = input(50, title = "Period in bars of Donchian Channel")
monetary_stoploss = input(1000, title = "Monetary Stop Loss")
quantity = if instrument != 1
1
else
int(money / close)
upBarrier = highest(high,period)
downBarrier = lowest(low,period)
up = highest(high,period / 4)
down = lowest(low,period / 4)
plot(upBarrier, color=color.green, linewidth=2)
plot(downBarrier, color=color.red, linewidth=2)
plot(up, color=color.lime, linewidth=1)
plot(down, color=color.orange, linewidth=2)
longCondition = crossover(close, upBarrier[1]) and year >= backtest_start
if (longCondition)
strategy.entry("Long", strategy.long, quantity, when = strategy.position_size == 0)
closeCondition = crossunder(close, down[1]) or down < down[1]
if (closeCondition)
strategy.close("Long", comment = "Trailing")
stop_level = strategy.position_avg_price - monetary_stoploss / strategy.position_size
strategy.exit("StopLoss", from_entry = "Long", stop = stop_level)
plot(stop_level, color=color.yellow, linewidth=2)
// l = label.new(bar_index, na,
// text="PineScript Code", color= color.lime, textcolor = color.white,
// style=label.style_labelup, yloc=yloc.belowbar, size=size.normal)
// label.delete(l[1])