N Bars Ausbruchstrategie

Schriftsteller:ChaoZhang, Datum: 2024-04-12 16:57:15
Tags:

img

Übersicht

Die N-Bars-Breakout-Strategie ist eine quantitative Handelsstrategie, die auf Preis-Breakouts basiert. Die Hauptidee dieser Strategie besteht darin, eine Long-Position zu eröffnen, wenn der Schlusskurs über das höchste Niveau der letzten N-Bars bricht, und die Long-Position zu schließen, wenn der Schlusskurs unter das niedrigste Niveau der letzten N-Bars bricht. Durch den Vergleich des aktuellen Preises mit den höchsten und niedrigsten Preisen der letzten N-Bars zielt diese Strategie darauf ab, starke Breakout-Bewegungen zu erfassen und den Effekt des Trendfolgens zu erzielen.

Strategieprinzip

  1. Berechnen Sie den höchsten (höchsten) und den niedrigsten (niedrigsten) Höchstwert der letzten N-Bars.
  2. Wenn der aktuelle Schlusskurs höher als der höchste ist, eröffnet man eine Long-Position.
  3. Wenn der aktuelle Schlusskurs unter dem niedrigsten liegt, schließt man die Long-Position (Short).
  4. Sie können wählen, ob Sie den Schlusskurs (Schließen) oder den hohen/niedrigen Preis (Hoch/Niedrig) als Signalquelle verwenden.
  5. Abhängig von der Signalquelle werden die höchsten und niedrigsten Preise mit ta.highest und ta.lowest berechnet.
  6. Verwenden Sie ta.crossover und ta.crossunder, um Preisbreaks zu ermitteln.

Strategische Vorteile

  1. Einfache und klare Logik, einfach umzusetzen und zu optimieren.
  2. Kann starke Breakout-Bewegungen effektiv erfassen, mit starker Trend-Folge-Fähigkeit.
  3. Großer Raum für die Optimierung von Parametern, kann für verschiedene Instrumente und Zeitrahmen optimiert werden.
  4. Breite Anwendbarkeit, gute Leistung für die meisten Instrumente und Zeitrahmen.
  5. Flexible Wahl der Signalquelle, Verbesserung der Anpassungsfähigkeit der Strategie.

Strategische Risiken

  1. Er erwirtschaftet eine schlechte Performance in unruhigen und leicht schwankenden Märkten, wobei häufiges Öffnen und Schließen von Positionen zu hohen Transaktionskosten führt.
  2. Eine unsachgemäße Parameterwahl kann zu einem Risiko einer Überanpassung führen.
  3. Bei Trendumkehrungen können große Rückgänge auftreten.
  4. Eine einzelne Signalquelle kann mit einer Signalverzerrung konfrontiert sein.

Strategieoptimierungsrichtlinien

  1. Hinzufügen von Trendfilterbedingungen wie MA-Trendrichtung, ADX usw., um den Handel in unruhigen Märkten zu reduzieren.
  2. Optimierung der Parameterwahl wie N-Wert, Signalquelle usw. zur Verbesserung der Strategie-Stabilität und Rentabilität.
  3. Hinzufügen von Stop-Loss- und Trailing-Stop-Loss-Logik zur Kontrolle des Single-Trade-Risikos.
  4. Kombination von mehreren Signalquellen zur Verbesserung der Signalzuverlässigkeit, z. B. Berücksichtigung des Schlusskurses und der hohen/niedrigen Preisbreakouts.
  5. Parameter und Logik für verschiedene Instrumente und Zeitrahmen separat optimieren.

Zusammenfassung

Die N Bars Breakout Strategie ist eine einfache und praktische quantitative Handelsstrategie, die durch die Erfassung von Preis-Breakouts gute Trend-nachfolgenden Effekte erzielt. Die Strategie hat eine klare Logik, einen großen Optimierungsraum und eine breite Anwendbarkeit, was sie zu einer quantitativen Strategie macht, die weitere Forschung und Optimierung wert ist. Durch eine angemessene Parameteroptimierung und Logikverbesserung können die Stabilität und Rentabilität dieser Strategie weiter verbessert werden, um sich besser an verschiedene Marktumgebungen anzupassen.


/*backtest
start: 2023-04-06 00:00:00
end: 2024-04-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Breakout", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(5, "N Bars", minval=1)
src_input = input.string("Close", "Source", ["Close", "High/Low"])

bull_src = switch src_input
	"Close" => close
	"High/Low" => high
	=>
		runtime.error("Invalid source input")
		na

bear_src = switch src_input
	"Close" => close
	"High/Low" => low
	=>
		runtime.error("Invalid source input")
		na

highest = ta.highest(bull_src[1], n)
lowest = ta.lowest(bear_src[1], n)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

bool long = ta.crossover(bull_src, highest)
bool short = ta.crossunder(bear_src, lowest)

//Plots
lowest_plot  = plot(lowest,  color=color.red, title="Lowest")
highest_plot  = plot(highest,  color=color.green, title="Highest")
bull_src_plot = plot(bull_src, color=color.blue, title="Bull")
bear_src_plot = plot(bear_src, color=color.orange, title="Bear")

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)

Mehr