Die Ressourcen sind geladen. Beförderung...

Effiziente Oszillationsdurchbruchstrategie mit doppeltem Stop-Profit und Stop-Loss

Schriftsteller:ChaoZhang, Datum: 2024-02-01 14:46:00
Tags:

img

Übersicht

Dies ist eine hocheffiziente bidirektionale Handelsstrategie, die auf der Grundlage von Kanalindikatoren und Breakout-Prinzipien entwickelt wurde.

Strategie Logik

Die Strategie verwendet SMA-Indikatoren, um Kanäle aufzubauen. Sie geht lang ein, wenn der Preis über den Kanal bricht und kurz, wenn die Preise unter dem Kanal bricht.

Insbesondere berechnet die Strategie die obere und untere Schiene des Kanals. Die obere Schiene ist die 10-Perioden-SMA des Schlusskurses multipliziert mit 1.02; Die untere Schiene ist die 10-Perioden-SMA des niedrigsten Preises geteilt durch 1.02.

Nach dem Long-Gehen werden zwei Take-Profit-Levels auf 1% bzw. 3% festgelegt, mit einem Stop-Loss von 3%. Der Short-Gehen hat ähnliche Gewinn/Verlust-Einstellungen. Durch Breakout-Prinzipien kann die Strategie eine relativ hohe Einstiegsgewinnrate erreichen; durch doppelte Take-Profite kann sie mehr Gewinne erzielen; durch Stop-Loss kontrolliert sie den Verlustbetrag pro Handel.

Analyse der Vorteile

Kanal-Breakout-Strategien wie diese haben Vorteile wie klare Einstiegssignale, hohe Betriebsfrequenz, mehrstufige Gewinnentnahme usw. Die Hauptvorteile sind:

  1. Durch die Verwendung von Kanalindikatoren zur Ermittlung des Preisschwankungsbereichs und der Auswahl der Eintrittspunkte kann eine relativ hohe Gewinnrate erzielt werden.

  2. Wir arbeiten auf einem 1-minütigen Diagramm, um mehr Chancen zu erlangen und den Bedarf an Schnelligkeitshandel zu decken.

  3. Zwei Gewinnspielstufen ermöglichen es, mehr Gewinn zu erzielen, wenn der Trend gut läuft.

  4. Ein relativ breiter Stop-Loss gibt der Preisbewegung etwas Spielraum und vermeidet einen vorzeitigen Stop-Loss.

Risikoanalyse

Das größte Risiko bei solchen Breakout-Strategien sind falsche Breakouts, die zu Verlusten führen.

  1. Breakout-Signale können falsche Breakouts sein und es nicht schaffen, Gewinn zu erzielen oder einen Stop-Loss zu erzielen.

  2. Ein Stop-Loss-Schwelle von 3% könnte für einige Händler schwierig sein.

  3. Diese Strategie eignet sich eher für den kurzfristigen Handel und erfordert eine Überwachung.

Optimierungsrichtlinien

Trendbreakout-Strategien wie diese können hauptsächlich in folgenden Aspekten optimiert werden:

  1. Testen Sie mehr Indikatoren, um Kanäle aufzubauen, und finden Sie zuverlässigere, um falsche Ausbrüche zu reduzieren.

  2. Optimieren Sie die Anpassung der gleitenden Durchschnittsparameter, finden Sie die besten Parameterkombinationen.

  3. Testen Sie komplexere Eingangsmechanismen, wie das Hinzufügen von Lautstärkungsfiltern usw.

  4. Es sind Parameterkombinationen festzulegen, die sich an die Eigenschaften verschiedener Produkte anpassen, um eine Selbstanpassung der Parameter zu erreichen.

  5. Fügen Sie automatische Stop-Loss-Mechanismen hinzu, die den Stop-Loss im Laufe der Zeit dynamisch anpassen.

Schlussfolgerung

Dies ist eine effiziente bidirektionale Handelsstrategie, die auf Kanalindikatoren aufbaut. Sie tritt durch Breakout-Prinzipien in die Märkte ein, doppelte Gewinne, um Belohnungen zu erzielen, Stop-Loss, um Risiken zu kontrollieren. Weitere Optimierung kann noch bessere Ergebnisse erzielen. Aber Händler müssen sich immer noch vor Risiken wie falschen Breakouts hüten.


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

//@version=4
strategy("Erweiterte SSL Channel Strategy mit 2 TPs, SL und BE", overlay=true)

period = input(title="Period", defval=10)
len = input(title="Length", defval=10)
multiplier = input(title="Multiplier", defval=1.0, minval=1.0)
tp1Percent = input(title="Take Profit 1 (%)", defval=1.0) / 100
tp2Percent = input(title="Take Profit 2 (%)", defval=20.0) / 100
slPercent = input(title="Stop Loss (%)", defval=3.0) / 100

var float tp1Price = na
var float tp2Price = na
var float slPrice = na
var bool tp1Reached = false

smaHigh = sma(high * multiplier, len)
smaLow = sma(low / multiplier, len)

Hlv = 0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : nz(Hlv[1])
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)

longCondition = crossover(close, sslUp)
shortCondition = crossunder(close, sslDown)

if (longCondition)
    strategy.entry("Long", strategy.long)
    tp1Price := strategy.position_avg_price * (1 + tp1Percent)
    tp2Price := strategy.position_avg_price * (1 + tp2Percent)
    slPrice := strategy.position_avg_price * (1 - slPercent)
    tp1Reached := false

if (shortCondition)
    strategy.entry("Short", strategy.short)
    tp1Price := strategy.position_avg_price * (1 - tp1Percent)
    tp2Price := strategy.position_avg_price * (1 - tp2Percent)
    slPrice := strategy.position_avg_price * (1 + slPercent)
    tp1Reached := false

// Take Profit, Break-even und Stop-Loss Logik
if (strategy.position_size > 0) // Long-Positionen
    if (not tp1Reached and close >= tp1Price)
        strategy.close("Long", qty_percent = 50)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close < tp1Price)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
    if (close >= tp2Price)
        strategy.close("Long", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Long", "Long", stop = slPrice)

if (strategy.position_size < 0) // Short-Positionen
    if (not tp1Reached and close <= tp1Price)
        strategy.close("Short", qty_percent = 50)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close > tp1Price)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
    if (close <= tp2Price)
        strategy.close("Short", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Short", "Short", stop = slPrice)


Mehr