Strategie zur Umkehrung der Dynamik

Schriftsteller:ChaoZhang, Datum: 2023-11-13 10:02:25
Tags:

img

Übersicht

Diese Strategie zielt darauf ab, die prozentuale Preisänderung von Aktien innerhalb eines bestimmten Zeitraums zu erkennen und Handelssignale zu erzeugen, wenn ein Schwellenwert überschritten wird.

Strategie Logik

  1. Der Eingabeparameter x stellt die Anzahl der zu überprüfenden Kerzenperioden dar, wobei bei 5-minütigen Kerzen ein Standardwert von 5 gilt.

  2. Berechnen Sie die prozentuale Veränderung des aktuellen Schlusskurses gegenüber dem Schlusskurs vor x Perioden, gespeichert als trueChange1 und trueChange2.

  3. Die Eingabeparameter percentChangePos und percentChangeNeg stellen die Schwellenwertprozentsatzänderung dar, wobei die Standardwerte 0,4% und -0,4% liegen.

  4. Wenn trueChange1 größer als percentChangePos ist, wird ein Kaufsignal generiert. Wenn trueChange2 kleiner als percentChangeNeg ist, wird ein Verkaufssignal generiert.

  5. Hinzufügen von Text- und Hintergrundfarben für den Kauf- und Verkaufsstatus.

  6. Setzen Sie Ein- und Ausstiegsregeln anhand der Signale.

  7. Alarme und Zeichnungen einrichten.

Vorteile

  1. Verwenden Sie die prozentuale Veränderung anstelle der absoluten Preisänderung, die an verschiedene Bestände angepasst werden kann.

  2. Flexible Festlegung von positiven und negativen Prozentsatzschwellen, um Bollinger-Band-Breakouts zu ermitteln.

  3. Einstellbare Nachweisperiode zur Ermittlung von Trendänderungen in verschiedenen Zeitrahmen.

  4. Konfigurierbare Alarme, um wichtige Signale zu erfassen.

  5. Einfache und unkomplizierte Signallogik, leicht zu verstehen und zu verwenden.

  6. Kurzfristige Rückschläge bei Marktöffnung erfassen.

Risiken

  1. Eine prozentuale Veränderung bestimmt nicht die Trendrichtung, kann irreführende Signale erzeugen.

  2. Die Standardparameter sind möglicherweise nicht für alle Bestände geeignet, eine spezifische Anpassung ist erforderlich.

  3. Keine Stop Loss vorhanden, nicht in der Lage, Verluste zu begrenzen.

  4. Häufige Signale, möglicherweise hohe Handelskosten.

  5. Nicht in der Lage, die Marktstruktur zu bestimmen, anfällig für Whipsaws in verschiedenen Märkten.

Lösungen:

  1. Kombinieren Sie mit Trendindikatoren wie linearer Regression, um den Gesamttrend zu bestimmen.

  2. Optimierung der Parameter anhand der Bestandseigenschaften.

  3. Implementieren Sie einen ordnungsgemäßen Stop-Loss.

  4. Filtern Sie Signale, um zu vermeiden, dass Sie zu viel handeln.

  5. Marktstrukturen aus höheren Zeitrahmen zu messen, um Handelsschwierigkeiten zu vermeiden.

Verbesserungen

  1. Hinzufügen von Stop-Loss-Mechanismen wie Trailing Stop-Loss, um Verluste zu begrenzen.

  2. Fügen Sie Filterbedingungen wie Volumen, gleitende Durchschnitte hinzu, um Whipsaws zu vermeiden.

  3. Optimieren Sie die Ein- und Ausstiegsregeln mit Indikatoren wie dem MACD.

  4. Verwenden Sie maschinelles Lernen, um Parameter automatisch zu optimieren.

  5. Analyse der Marktstruktur, um Probleme zu vermeiden.

  6. Dynamisch festgelegte Parameter auf der Grundlage von Volatilität und Liquidität.

  7. Kombination mit einer höheren Zeitrahmenanalyse zur Ermittlung des Gesamttrends.

Zusammenfassung

Diese Strategie erzeugt Trades, indem sie prozentualen Preiswandel mit vorgegebenen Schwellenwerten vergleicht, was sie zu einer kurzfristigen Mittelumkehrstrategie macht. Die Vorteile liegen in ihrer Einfachheit, Flexibilität und Fähigkeit, plötzliche Marktbewegungen zu erfassen. Die Nachteile sind Risiken, die durch Optimierungen und einen ordnungsgemäßen Einsatz mit Trendanalyse und Risikomanagement angegangen werden können. Insgesamt hat sie eine solide Logik und kann eine effektive kurzfristige Handelsstrategie sein, wenn sie richtig verbessert wird.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)

x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")

//if (percentChange > trueChange) then Signal  

plotChar1 = if percentChangePos > trueChange1
    false
else
    true

plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )

trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")

plotChar2 = if percentChangeNeg < trueChange2
    false
else
    true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)

//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2

//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2


col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)

//Background Highlights
//bgcolor(condColor, transp=70)


//---------

barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)

//------------------------------------------------------------------------

buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2


//------------------------------------------------------------------------
/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

//-------------------------------------------------

if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)


/////////////////// Plotting //////////////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


Mehr