Bewegliche durchschnittliche Crossover-Strategie mit Intraday-Candlestick-Mustern

Schriftsteller:ChaoZhang
Tags:

img

Übersicht

Strategie Logik

Wenn der kurzfristige gleitende Durchschnitt (9-Tage-MA) über den längerfristigen gleitenden Durchschnitt (15-Tage-MA) kreuzt, deutet dies auf eine stärkere kurzfristige Aufwärtsdynamik hin, um lang zu gehen. Wenn der kurzfristige MA unter den langfristigen MA kreuzt, signalisiert er eine stärkere kurzfristige Abwärtsdynamik, um kurz zu gehen. Darüber hinaus muss der Winkel des MA größer als 30 Grad sein, um eine ausreichende Aufwärts- oder Abwärtsleistung zu gewährleisten.

Analyse der Vorteile

Diese Strategie kombiniert gleitende Durchschnittsindikatoren und Intraday-Candlestick-Muster, um Geräusche effektiv auszufiltern und Handelssignale zuverlässiger zu machen. Besonders mit der Winkelschwelle stellt sie sicher, dass vor der Erzeugung von Signalen genügend Kursänderungsmomentum besteht und unnötige falsche Signale vermieden werden. Außerdem können die Stop-Loss- und Take-Profit-Levels automatisch den maximalen Verlust und die Gewinnentnahme begrenzen. Diese Maßnahmen verbessern sowohl die Stabilität als auch die Rentabilität.

Der gleitende Durchschnitt kann mittelfristige bis langfristige Preistrends erfassen. Die Intraday-Candlesticks spiegeln den Leistungsvergleich von kurzfristigen Marktteilnehmern wider.

Risikoanalyse

Zu den wichtigsten Risiken dieser Strategie gehören:

  1. Das Risiko eines falschen Ausbruchs. Während der Marktkonsolidierung können gleitende Durchschnitte mehrere Kreuzungen haben, von denen die meisten falsche Signale sind. Wenn Sie hier geschlagen werden, würden Sie Verluste erleiden. Die Kerzenmuster und Winkelbedingungen können dieses Risiko mindern.

  2. Parameteroptimierungsrisiko. Verschiedene Märkte passen sich unterschiedlich an Parameter-Einstellungen an. Die direkte Anwendung eines Parameter-Satzes ohne Anpassung kann zu Verlusten führen. Richtige Parameter müssen durch Backtesting und Papierhandel gefunden werden.

Im Allgemeinen kann diese Strategie einige falsche Signale erzeugen und ohne Berücksichtigung der Marktbedingungen hohe/niedrige Risiken verfolgen.

Optimierungsrichtlinien

Die folgenden Aspekte dieser Strategie können weiter verbessert werden:

  1. Hinzufügen einer Analyse der wichtigsten Trends, z. B. Bestätigen von mittelfristigen/langfristigen Kanälen, um Trends nicht zu ignorieren.

  2. Die Analyse der Fundamentaldaten kombinieren und Aktien mit besseren Aussichten und Erträgen auswählen, um die Gewinnrate zu verbessern.

  3. Test-Stop-Loss-/Take-Profit-Parameter. Setzen Sie die Rabattquoten des Auftragsbuchs basierend auf den Rücktestresultaten, um ein optimales Risiko-Rendite-Verhältnis zu erzielen.

Die oben genannten Optimierungsrichtungen sollten sowohl die Rentabilität als auch die Stabilität dieser Strategie erheblich verbessern.

Zusammenfassung

Der nächste Schritt besteht darin, die Gewinnrate und die Rentabilität durch Parameteroptimierung weiter zu verbessern. Das Hinzufügen von mehr Indikatoren kann auch die Robustheit stärken.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true)

// Define input parameters
fast_length = input(9, "Fast MA Length")
slow_length = input(15, "Slow MA Length")
stop_loss_percent = input(0.25, "Stop Loss (%)")
target_percent = input(0.25, "Target (%)")
angle_threshold = input(30, "Angle Threshold (degrees)")

// Calculate moving averages
fast_ma = sma(close, fast_length)
slow_ma = sma(close, slow_length)

// Define candlestick patterns
is_pin_bar() =>
    pin_bar = abs(open - close) > 2 * abs(open[1] - close[1])
    high_tail = max(open, close) - high > abs(open - close) * 1.5
    low_tail = low - min(open, close) > abs(open - close) * 1.5
    pin_bar and high_tail and low_tail

is_marubozu() =>
    marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75
    no_upper_shadow = high == max(open, close)
    no_lower_shadow = low == min(open, close)
    marubozu and no_upper_shadow and no_lower_shadow

is_full_body() =>
    full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95
    full_body

// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")

// Calculate angle of slow moving average
ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159))

// Generate buy/sell signals based on angle condition and candlestick patterns
buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body())
sell_signal = crossunder(fast_ma, slow_ma)

// Calculate stop-loss and target levels
stop_loss_level = close * (1 - stop_loss_percent / 100)
target_level = close * (1 + target_percent / 100)

// Execute trades based on signals with stop-loss and target
strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level)

// Plot buy/sell signals on chart (optional)
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Plot angle line
hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)


Mehr