ORIGINAL PRIMITIVE TREND TRACKING STRATEGY basierend auf gleitendem Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2023-11-23 15:54:37
Tags:

img

Übersicht

Diese Strategie basiert auf dem Körper der Kerze, kombiniert mit dem EMA-Indikator, um die Markttrendrichtung zu beurteilen, um den ORIGINALEN PRIMITIVEN TREND TRACKING-Effekt zu erzielen.

Strategieprinzip

  1. Berechnen Sie die durchschnittliche Körperlänge sbody der letzten 30 K-Linie Kerzen
  2. Wenn die neueste K-Linie eine Yang-Linie ist und die Körperlänge größer ist als sbody/2, gehen Sie lang
  3. Wenn bereits lange, wenn die neueste K-Linie ist eine Yin-Linie, die Körperlänge größer als sbody/2, und die aktuelle Position ist profitabel, dann schließen Sie die lange Position
  4. Wenn die neueste K-Linie eine Yin-Linie ist und die Körperlänge größer ist als sbody/2, gehen Sie kurz
  5. Wenn bereits kurz, wenn die neueste K-Linie ist eine Yang-Linie, die Körperlänge größer als sbody/2, und die aktuelle Position ist profitabel, dann schließen Sie die kurze Position

Analyse der Vorteile

Diese Strategie hat folgende Vorteile:

  1. Original und einfach, leicht zu verstehen und umzusetzen
  2. Basierend auf der Kerzenstruktur Urteil, hat einige Auswirkungen auf Breakouts fangen
  3. Verfolgen Sie Trends, können größere Bewegungen erfassen
  4. Schnelle Stop-Loss, wenn es profitabel ist, hilft, Gewinne zu erzielen

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Nicht in der Lage, falsche Ausbrüche effektiv zu filtern, kann zu unnötigen Verlusten führen
  2. Nur nach Kerzen zu urteilen, ist anfällig für Schlupf und Spalt beeinflussen
  3. Das Problem der übermäßigen Handelsfrequenz wurde nicht berücksichtigt.

Die Risiken können verringert werden, indem

  1. Kombination mit anderen Indikatoren, um Signale zu filtern
  2. Einrichtung einer Stop-Loss-Strategie
  3. Optimierung der Parameter zur Steuerung der Handelsfrequenz

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Hinzufügen von Ausbruchindikatoren zum Filtern falscher Ausbrüche
  2. Hinzufügen einer Stop-Loss-Strategie zur Verringerung von Einzelverlusten
  3. Einbeziehung von Trendindikatoren zur Überprüfung der Trendrichtung
  4. Parameteroptimierung zur Suche nach der besten Parameterkombination

Zusammenfassung

Diese Strategie gehört zur ursprünglichen einfachen Trend-Tracking-Strategie. Durch das Beurteilen von Kerzenstrukturen kann sie effektiv Trendrichtungen verfolgen. Gleichzeitig kann die Einstellung eines schnellen Stop-Loss-Mechanismus Gewinne erzielen. Diese Strategie kann das Trend-Tracking-Portfolio ergänzen, muss jedoch noch optimiert werden, um Risiken zu reduzieren. Es lohnt sich, die Wirkung der Kombination mit anderen Indikatoren in Zukunft weiter zu untersuchen.


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

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

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
useus = input(true, defval = true, title = "Use UUP")
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(01, defval = 01, 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")

//Logic
body = abs(close - open)
sbody = ema(body, 30) / 2
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == -1 and (body > sbody or usebody == false) and (close < strategy.position_avg_price or strategy.position_size <= 0 or useus == false)
dn = bar == 1 and (body > sbody or usebody == false) and (close > strategy.position_avg_price or strategy.position_size >= 0 or useus == false)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00)
    strategy.close_all()

Mehr