In diesem Artikel wird eine quantitative Handelsstrategie beschrieben, die auf der Grundlage eines Preisrückschlags Trends verfolgt. Diese Strategie identifiziert lokale Höchststände und punktet den Einstieg mit einem bestimmten Rückschlag.
Die Kernlogik dieser Strategie besteht darin, die höchsten Preise innerhalb einer bestimmten Periode zu identifizieren und dann den Handel in einer bestimmten Reduzierungsposition zu verfolgen. Die konkreten Schritte lauten:
Zuerst werden die höchsten Werte der letzten 90 K-Linien als lokale Höchstwerte berechnet.
Kauf- und Kaufverfolgung wird durchgeführt, wenn der Preis von diesem Höchststand um einen bestimmten Prozentsatz (z. B. 3%) zurückgeht.
Der Stop-Loss ist so eingestellt, dass er einen bestimmten Prozentsatz (z. B. 6%) des Einstiegspreises übersteigt und die Position platziert, wenn der Preis den Stop-Loss erreicht.
Es gibt keine Stop-Loss-Einstellungen, sondern nur Trends.
Auf diese Weise kann die Eintrittszeit durch die Rate der lokalen Höchstrückmeldung beurteilt werden, wodurch die Erschütterungen wirksam gefiltert werden können. Die Eintrittszeit wird nur nach der Trendbestätigung eingestellt.
Der größte Vorteil dieser Strategie besteht darin, dass die Rücklaufquote verwendet wird, um Trends zu beurteilen und viel Lärm abzufiltern. Es kann die Wahrscheinlichkeit verringern, dass ein Eintritt an einem Wendepunkt eingestellt wird, im Vergleich zu einem direkten Eintritt.
Ein weiterer Vorteil ist die Einrichtung einer Stop-Loss-Logik, die den Gewinn und Verlust jedes einzelnen Handels in Einklang mit den Prinzipien der positiven Geldverwaltung kontrolliert.
Schließlich ermöglicht es die Strategie auch, einen gewissen Risiko-Rendite-Mechanismus zu haben, wenn die Stop-Loss-Rate größer ist als die Rückruf-Rate.
Obwohl diese Strategie einige Vorteile hat, sind folgende Risiken in der Praxis zu beachten:
Zunächst einmal muss die Rückzahlungsquote vorsichtig eingestellt werden. Eine zu tiefe oder zu flache Rückzahlung beeinträchtigt den Gewinnspielraum.
Zweitens ist die Strategie ohne Stop-Loss-Einstellung mit einem höheren Einzelschutzrisiko konfrontiert. Eine starke Trendwende kann zu größeren Verlusten führen.
Letztendlich kann eine falsche Optimierung der Parameter zu Überfusion führen, was zu einer Verschlechterung der Signalqualität führt.
Vier Inhalte, Zusammenfassung
Dieser Artikel beschreibt eine quantitative Strategie zur Trendverfolgung basierend auf dem Preisrückschlag. Sie erlaubt es, Trends zu erkennen und Rückschläge zu nutzen. Die Strategie verfügt über eine Art Risiko-Kontrollmechanismus.
/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 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/
// © luboremenar
//@version=4
strategy("test_%_down_up", overlay = false, initial_capital = 1000, pyramiding = 0, default_qty_value = 1000,
default_qty_type = strategy.cash, precision = 8, commission_type = strategy.commission.percent, commission_value = 0.1)
// inputs
range_of_tops = input(title="Range of candles to find highest value from.", defval=90, type=input.integer, minval=1 )
basis_points = input(title="Basis points, if asset has two decimals use 100, three decimals 1000, etc.", defval=100, type=input.integer, minval=1)
retrace_percent = input(title="Percent value retrace from the top.", type=input.integer, defval=3, minval = 1, maxval=99)
take_profit_percent = input(title="Percent value of take profit from entry price.", type=input.integer, defval=6, minval=1)
// strategy definition
three_months_top = highest(range_of_tops)
longCondition1 = (close <= float((three_months_top*(1-(take_profit_percent/100)))) and strategy.position_size == 0)
if (longCondition1)
strategy.entry("Long1", strategy.long, qty = strategy.equity/close)
strategy.exit(id="TP1", from_entry="Long1", profit=((close*(1 + take_profit_percent/100)-close)*basis_points),
when= crossover(strategy.position_size, 0))
// plot
plot(strategy.equity)
// for testing, debugging
//test=0.0
//if(crossover(strategy.position_size, 0))
// test := (close*1.06-close)*basis_points
//plot(test)