Kreuz bewegende Durchschnittliche Goldene Kreuz Todeskreuz Strategie

Schriftsteller:ChaoZhang, Datum: 2023-12-05 11:11:02
Tags:

img

Dies ist eine sehr klassische gleitende durchschnittliche Golden Cross Death Cross Strategie. Die Strategie verwendet zwei gleitende Durchschnitte, TENKAN und KIJUN, mit unterschiedlichen Zeiträumen, um goldenes Kreuz und Todeskreuzsignale für lange und kurze Trades zu bilden.

Strategie Logik

Die Strategie basiert hauptsächlich auf einer japanischen Aktientechnischen Analysemethode namens Ichimoku Kinko Hyo, bei der mehrere gleitende Durchschnitte wie die TENKAN- und KIJUN-Linien zur Bestimmung der Markttrendrichtung verwendet werden.

Zunächst ist die TENKAN-Linie eine 9-tägige Linie, die den kurzfristigen Trend darstellt; die KIJUN-Linie ist eine 26-tägige Linie, die den mittelfristigen Trend darstellt. Wenn die TENKAN-Linie über die KIJUN-Linie kreuzt, wird ein Kaufsignal generiert. Wenn die TENKAN-Linie unter die KIJUN-Linie fällt, wird ein Verkaufssignal generiert. Dies bildet die klassische gleitende Durchschnitts-Goldene Kreuz- und Todeskreuz-Strategie.

Zweitens führt die Strategie auch die Senkou Span A (SSA) -Linie und die Senkou Span B (SSB) -Linie ein. Die SSA-Linie ist der Durchschnitt der TENKAN- und KIJUN-Linien, während die SSB-Linie ein gleitender Durchschnitt über 52 Tage ist. Zusammen bilden sie die Kumo (Wolke) -Bänder, die die langfristige Trendrichtung bestimmen - der Preis über der Wolke bedeutet einen Aufwärtstrend, während der Preis unter der Wolke einen Abwärtstrend bedeutet.

Schließlich untersucht diese Strategie, um gefälschte Signale zu filtern, auch die Position des Preises im Vergleich zur Chikou-Spanne (der Schlusskurs mit einer Verzögerung von 26 Tagen) , wobei nur Kaufsignale generiert werden, wenn der Preis unter Chikou liegt, und Verkaufssignale, wenn der Preis über Chikou liegt.

Vorteile

Dies ist eine sehr typische gleitende Durchschnittsstrategie.

  1. Die Verwendung von zwei gleitenden Durchschnitten für verschiedene Zeiträume erlaubt es, kurz- und mittelfristige Trendrichtungen gleichzeitig zu beurteilen.

  2. Langfristige Trends werden mit den Kumo-Bändern ermittelt, um langfristige Bärenmärkte zu vermeiden.

  3. Der Preisvergleich mit der verzögerten Chikou-Linie filtert viele falsche Signale aus und reduziert unnötige Trades.

Durch die geschickte Nutzung verschiedener Funktionen gleitender Durchschnitte kann diese Strategie den Trends in kurzen, mittleren und langen Zeitrahmen folgen.

Risiken

Zu den wichtigsten Risiken dieser Strategie gehören:

  1. Bei schwebenden Durchschnittsstrategien werden in der Regel viele falsche Signale erzeugt. Häufiger Handel durch ungenaue Parameter kann zu Verlusten führen.

  2. Diese Strategie konzentriert sich stark auf die technischen Aspekte, ohne die Grundlagen zu berücksichtigen.

  3. Es ist kein Stop-Loss-Mechanismus enthalten. Sobald die Marktrichtungsbeurteilung falsch ist, können sich Verluste ansammeln.

Daher benötigen wir fortschrittlichere gleitende Durchschnittssysteme, geeignete Stop-Loss-Regeln oder ergänzende fundamentale Signale, um diese Strategie weiter zu verfeinern und Risiken zu verringern.

Möglichkeiten zur Verbesserung

Diese Strategie kann auch in folgenden Bereichen verbessert werden:

  1. Suche nach stabileren und effizienteren Parametersätzen durch mehr Backtests.

  2. Hinzufügen von Stop-Loss-Regeln. Ein angemessener Stop-Loss hilft, maximale Verluste effektiv zu kontrollieren.

  3. Ergänzen Sie grundlegende Signale wie die Revisionen der Gewinnschätzungen, die Einblicke in die Aussichten eines Unternehmens enthalten.

  4. Optimierung der Preisvergleichsstrategie der Chikou-Linie mit stabileren Lösungen.

  5. Einbeziehen Sie Aktienwahlsignale. Punktefaktoren wie PE-Ratio und ROE können minderwertige Aktien filtern.

Schlussfolgerung

Dies ist eine sehr typische und praktische gleitende Durchschnittsstrategie. Durch die gleichzeitige Überwachung von kurz-, mittelfristigen und langfristigen Trends, unter Verwendung verschiedener Funktionen von gleitenden Durchschnitten, erzeugt es Handelssignale mit solider Performance. Wir können es durch Parameter-Tuning, Hinzufügen von Stop Loss, Aktienwahl usw. weiter verbessern. Insgesamt ist dies eine vielversprechende quantitative Strategie, die der Forschung und Verfolgung würdig ist.


/*backtest
start: 2022-11-28 00:00:00
end: 2023-12-04 00:00:00
period: 1d
basePeriod: 1h
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/
// © mdeous

//@version=4
strategy(
     title="Ichimoku Kinko Hyo Strategy", 
     shorttitle="Ichimoku Strategy", 
     overlay=true,
     pyramiding=0,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     initial_capital=1000,
     currency="USD",
     commission_type=strategy.commission.percent,
     commission_value=0.0
     )

//
// SETTINGS
//

// Ichimoku

int TENKAN_LEN = input(title="Tenkan-Sen Length", defval=9, minval=1, step=1)
int KIJUN_LEN = input(title="Kijun-Sen Length", defval=26, minval=1, step=1)
int SSB_LEN = input(title="Senkou Span B Length", defval=52, minval=1, step=1)
int OFFSET = input(title="Offset For Chikou Span / Kumo", defval=26, minval=1, step=1)

// Strategy

int COOLDOWN = input(title="Orders Cooldown Period", defval=5, minval=0, step=1)
bool USE_CHIKOU = input(title="Use Imperfect Chikou Position Detection", defval=false)

//
// HELPERS
//

color _red = color.red
color _blue = color.blue
color _lime = color.lime
color _fuchsia = color.fuchsia
color _silver = color.silver
color _aqua = color.aqua

f_donchian(_len) => avg(lowest(_len), highest(_len))

//
// ICHIMOKU INDICATOR
//

float tenkan = f_donchian(TENKAN_LEN)
float kijun = f_donchian(KIJUN_LEN)
float ssa = avg(tenkan, kijun)
float ssb = f_donchian(SSB_LEN)

plot(tenkan, title="Tenkan", color=_silver)
plot(close, title="Chikou", offset=-OFFSET+1, color=_aqua)
_ssa = plot(ssa, title="SSA", offset=OFFSET-1, color=_lime)
_ssb = plot(ssb, title="SSB", offset=OFFSET-1, color=_red)
fill(_ssa, _ssb, color=ssa > ssb ? _lime : _fuchsia, transp=90)

//
// STRATEGY
//

// Check if price is "above or below" Chikou (i.e. historic price line):
// This detection is highly imperfect, as it can only know what Chikou position
// was 2*offset candles in the past, therefore if Chikou crossed the price
// line in the last 2*offset periods it won't be detected.
// Use of this detection is disabled by default,

float _chikou_val = close[OFFSET*2+1]
float _last_val = close[OFFSET+1]
bool above_chikou = USE_CHIKOU ? _last_val > _chikou_val : true
bool below_chikou = USE_CHIKOU ? _last_val < _chikou_val : true

// Identify short-term trend with Tenkan

bool _above_tenkan = min(open, close) > tenkan
bool _below_tenkan = max(open, close) < tenkan

// Check price position compared to Kumo

bool _above_kumo = min(open, close) > ssa
bool _below_kumo = max(open, close) < ssb

// Check if Kumo is bullish or bearish

bool bullish_kumo = ssa > ssb
bool bearish_kumo = ssa < ssb

// Correlate indicators to confirm the trend

bool bullish_trend = _above_tenkan and _above_kumo and bullish_kumo
bool bearish_trend = _below_tenkan and _below_kumo and bearish_kumo

// Build signals

bool buy1 = (close > open) and ((close > ssa) and (open < ssa)) // green candle crossing over SSA
bool buy2 = bullish_kumo and bearish_kumo[1] // bullish Kumo twist

bool sell1 = (close < open) and ((close < ssb) and (open > ssb)) // red candle crossing under SSB
bool sell2 = bearish_kumo and bullish_kumo[1] // bearish Kumo twist

bool go_long = below_chikou and (bullish_trend and (buy1 or buy2))
bool exit_long = above_chikou and (bearish_trend and (sell1 or sell2))

//
// COOLDOWN
//

f_cooldown() =>
    _cd_needed = false
    for i = 1 to COOLDOWN by 1
        if go_long[i]
            _cd_needed := true
            break
    _cd_needed

go_long := f_cooldown() ? false : go_long

//
// ORDERS
//

strategy.entry("buy", strategy.long, when=go_long)
strategy.close_all(when=exit_long)

//
// ALERTS
//

alertcondition(
     condition=go_long,
     title="Buy Signal",
     message="{{exchange}}:{{ticker}}: A buy signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )
alertcondition(
     condition=exit_long,
     title="Sell Signal",
     message="{{exchange}}:{{ticker}}: A sell signal for {{strategy.market_position_size}} units has been detected (last close: {{close}})."
     )


Mehr