Strategie für mehrfache Prozentsatzgewinne

Schriftsteller:ChaoZhang, Datum: 2023-12-01 15:22:29
Tags:

img

Übersicht

Diese Strategie implementiert die Funktionalität der Einstellung mehrerer Prozentsatz-Gewinn-Ausgänge. Die Strategie beurteilt zuerst die langen und kurzen Bedingungen, um Positionen einzugeben. Es verwendet dann eine benutzerdefinierte PercentAsPoints-Funktion, um Prozentsätze in Preisschwankungen umzuwandeln. Das Programm setzt 4 Ausgänge mit Gewinn-Prozentsätzen von 1%, 2%, 3% und 4% basierend auf den Konfigurationen und setzt auch einen gemeinsamen Stop-Loss-Ausgang von 2%. Dies erreicht den Effekt mehrerer Prozentsatz-Gewinn-Ausgänge.

Strategie Logik

Die Kernlogik dieser Strategie ist die Verwendung von SMA-Crossovers zur Bestimmung von Einträgen. Insbesondere, wenn die schnelle SMA (14) über die langsame SMA (28) kreuzt, wird sie lang gehen. Wenn die schnelle SMA (14) unter die langsame SMA (28) kreuzt, wird sie kurz gehen.

Wie können Sie dann mehrere Prozentsatz-Gewinn-Ausgänge festlegen? Hier wird eine benutzerdefinierte PercentAsPoints-Funktion verwendet, um Prozentsätze in Preissticks umzuwandeln.

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) 

Wenn die Positionsgröße nicht 0 beträgt, wird der Preis-Tick pro Prozent berechnet, multipliziert mit dem durchschnittlichen Einstiegspreis und geteilt durch die Mindest-Tick-Größe.

Mit dieser Funktion können wir leicht Prozentsätze in Ticks umwandeln. Das Programm setzt dann 4 Ausgänge basierend auf Gewinnprozentsätzen von 1%, 2%, 3% und 4%:

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)   

strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)

strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)  

strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

Für alle Exits wird auch ein gemeinsamer Stop-Loss von 2% verwendet, wodurch der Effekt von Profit-Exits in mehreren Prozent erreicht wird.

Analyse der Vorteile

Diese Mehrprozentsatz-Gewinn-Ausstiegsstrategie hat folgende Vorteile:

  1. Es ermöglicht, Profite Schritt für Schritt zu erzielen, um größere Gewinne zu vermeiden.

  2. Der Ausgang in Chargen ermöglicht Kapitalrückgewinnung, Risiken zu senken. Zum Beispiel mit 25% Chargengröße, 1% Gewinn kann 1/4 des Kapitals zurückgeben, und spätere Positionen sind alle durch reinen Gewinn.

  3. 2% Stop Loss verhindert extreme Verluste bei abnormalen Marktbewegungen.

  4. Die Implementierung ist einfach und sauber, leicht zu verstehen und zu ändern.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Prozentsatz-Ausgänge können seitliche Spannungen verursachen, wobei die Preise um die Ausgangspreise herum schwanken und häufige Ausgänge auslösen.

  2. Bei Batch Exits steigen die Anzahl der Trades und die Provisionen, hohe Provisionen könnten einen Teil des Exit-Gewinns auslöschen.

  3. Eine falsche Ausgangsposition könnte sich auch auf die Rendite auswirken.

  4. Bei Festprozentsatz-Ausgänge werden die Marktvolatilität und -trends nicht berücksichtigt.

Optimierungsrichtlinien

Angesichts der vorstehenden Risiken könnten weitere Optimierungen in folgenden Bereichen vorgenommen werden:

  1. Optimieren Sie die Ausgänge, um sich an die Marktvolatilität und -stärke anzupassen, indem Sie Methoden wie ATR-Ausgänge verwenden.

  2. Optimieren Sie Chargenprozentsätze und -bereiche, um optimale Risiko-Rendite-Kombinationen zu finden. Fügen Sie Parameteroptimierung hinzu, um die besten Parameter zu finden.

  3. Verringern Sie die Anzahl der Exits, um zu vermeiden, dass Sie zu viel handeln.

  4. Berücksichtigen Sie Provisionsfaktoren, vermeiden Sie Ausgänge, bei denen der prognostizierte Gewinn geringer ist als die Provisionskosten.

  5. Verwenden Sie Auftragsbuch-Ausgänge basierend auf der Tiefe anstelle der Bewegung der Ausgangspreise.

Zusammenfassung

Diese Strategie erzielt den Effekt von mehrfachen Prozentsatz-Gewinn-Ausgängen, mit 4 Ausgängen bei 1%, 2%, 3% und 4%, was schrittweise profitable Ausgänge ermöglicht und 2% Stop-Loss verwendet, um riesige Verluste bei extremen Bewegungen zu vermeiden. Sie balanciert Risiken und Renditen und verhindert, dass weitere Gewinne verpasst werden.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 3h
basePeriod: 15m
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/
// © adolgov

//@version=4
strategy("Multiple %% profit exits example", overlay=false, default_qty_value = 10)

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

profitPercent(price) =>
    posSign = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
    (price - strategy.position_avg_price) / strategy.position_avg_price * posSign * 100

p1 = plot(profitPercent(high), style=plot.style_linebr, title = "open profit % upper bound")
p2 = plot(profitPercent(low), style=plot.style_linebr, title = "open profit % lower bound")
fill(p1, p2, color = color.red)

Mehr