Momentum Preiskanal Eröffnungs- und Schließungsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-06
Tags:

img

Übersicht

Diese Strategie basiert auf dem Preiskanal-Indikator. Durch die Festlegung eines Momentumparameters berechnet sie den Durchschnittswert der höchsten und niedrigsten Preise in verschiedenen Zyklen, um die Mittellinie des Preiskanals zu bilden, und setzt darauf basierend lange und kurze Linien fest. Wenn der Preis die lange Linie durchbricht, geht er lang; wenn der Preis die kurze Linie durchbricht, geht er kurz. Die Schlusskondition ist, dass der Preis zur Kanalmittellinie zurückfällt.

Strategieprinzip

Diese Strategie verwendet den Preiskanal-Indikator, um den Mittelwert der höchsten und niedrigsten Preise in verschiedenen Zyklen zu berechnen, um die Kanalmitte zu bilden. Basierend auf der Mittellinie werden lange und kurze Linien über den Shift-Parameter festgelegt. Die Lange-Linie-Rechenformel lautet: Mittellinie + (Mittellinie × Lange-Linie-Parameter%); die Kurzlinie-Rechenformel lautet: Mittellinie + (Mittellinie × Kurzlinie-Parameter%).

Wenn der Preis unter der Long-Linie liegt, öffnen Sie Long-Positionen mit Limit-Orders; wenn der Preis über der Short-Linie liegt, öffnen Sie Short-Positionen mit Limit-Orders.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Die Verwendung des Preiskanalindikators kann die Preisentwicklung und die wichtigsten Unterstützungs-/Widerstandsniveaus effektiv erfassen.
  2. Die Eröffnung von Positionen bei Ausbrüchen kann Verluste durch falsche Ausbrüche reduzieren.
  3. Die Stop-Loss-Methode nimmt direkt die Preiskanalmitte als Standard ein, um übermäßige Verluste durch Chase-Stopps zu vermeiden.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Bei falschen Parameter-Einstellungen des Preiskanals können aktive Trends übersehen oder zu viele falsche Ausbrüche entstehen.
  2. Bei Breakout-Öffnungsmethoden entstehen ein gewisses Maß an Rutschkosten.
  3. Bei schnellen Kursrückgängen nicht in der Lage, den Verlust rechtzeitig zu stoppen.

Die oben genannten Risiken können durch Optimierung von Parametern, Festlegung von Stop-Loss-Orders oder Kombination anderer Indikatoren zur Beurteilung gemildert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren Sie die Parameter des Preiskanals, um die beste Kombination zu finden.
  2. Versuchen Sie andere Öffnungsmethoden wie Kerzenmuster und Indikatorsignale.
  3. Hinzufügen von Stop-Loss-Order-Einstellungen, um Verluste durch schnelle Kursrückgänge zu vermeiden.
  4. Kombination von Handelsvolumen, Volatilität und anderen Indikatoren, um falsche Ausbrüche auf dem Aktienmarkt zu vermeiden.

Schlussfolgerung

Die Konstruktionsidee dieser Strategie basierend auf dem Preiskanalindikator ist klar. Durch den Einsatz von Breakouts zur Eröffnung von Positionen können Risiken effektiv kontrolliert werden. Es gibt aber auch große Parameteroptimierungsräume und Stop-Loss-Mechanismen, die verbessert werden müssen. Insgesamt hat die Strategie einen gewissen praktischen Wert und lohnt sich weitere Tests und Optimierungen.


/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's PCMA Strategy v1.0", shorttitle = "PCMA 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price Channel
h = highest(high, per)
l = lowest(low, per)
c = (h + l) / 2
ll = c + ((c / 100) * longlevel)
sl = c + ((c / 100) * shortlevel)

//Lines
shortcolor = needshort ? red : na
longcolor = needlong ? lime : na
plot(sl, linewidth = 2, color = shortcolor, title = "Short line")
plot(c, linewidth = 2, color = blue, title = "SMA line")
plot(ll, linewidth = 2, color = longcolor, title = "Long line")

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = ll, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = sl, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Mehr