Up vs. Down Close Candles Strategie mit EMA-Filter und Sitzungszeitrahmen

Schriftsteller:ChaoZhang, Datum: 2023-12-27 14:38:28
Tags:

img

1. Überblick über die Strategie

Diese Strategie wird Up versus Down Close Candles Strategy mit EMA-Filter und Session Timeframes genannt. Sie zählt die Anzahl der Up- und Down-Close Kerzen in einem bestimmten Lookback-Zeitraum, um die Marktstimmung zu bestimmen, kombiniert mit EMA-Filter und Handel in bestimmten Sitzungen, um lange und kurze Signale zu identifizieren.

2. Strategie Logik

Die Kernlogik besteht darin, die Anzahl der UpCloseCount- und DownCloseCount-Kerzen in der jüngsten Lookback-Periode zu zählen. Wenn UpCloseCount größer ist, deutet dies auf einen bullischen Markt hin. Wenn DownCloseCount größer ist, deutet dies auf einen bärischen Markt hin. Der EMA-Indikator wird als Filter verwendet und berücksichtigt nur lange, wenn der Preis > EMA, und kurze, wenn der Preis < EMA. Er setzt auch Session1 und Session2 als Handelssitzungen ein.

Detaillierte Logik:

Das Long-Signal wird ausgelöst, wenn: inSession true (in Handelssitzungen) und upCloseCount > downCloseCount (mehr up close candles) und close > ema (Schließpreis höher als EMA) und currentSignal nicht long (keine bestehende Position) ist.

Das Kurzsignal wird ausgelöst, wenn: inSession true und downCloseCount > upCloseCount (mehr nach unten) und close < ema (Schlusskurs niedriger als EMA) und currentSignal nicht short (keine bestehende Position) ist.

3. Analyse der Vorteile

  1. Erfasst die Marktstimmung und den Markttrend durch Vergleich der Schließ-/Abschließungshistorie von Kerzen
  2. Verwenden Sie den EMA-Filter, um den Handel in verschiedenen Märkten zu vermeiden
  3. Vermeiden Sie Lärm in nicht wichtigen Handelszeiten, indem Sie Sitzungen einstellen
  4. Gleichgewicht zwischen Trendverfolgung und Handelsfrequenz

4. Risikoanalyse

  1. Kann in Seitenmärkten irregeführt werden
  2. Ein falscher EMA-Parameter kann zu einem unwirksamen Filter führen
  3. Verpasste Gelegenheiten, wenn die Sitzung nicht ordnungsgemäß eingestellt wurde
  4. Es ist nicht möglich, die durch Ereignisse verursachte Lücke zu erfassen.

Lösungen:

  1. Optimierung des EMA-Parameters
  2. Optimierung der Handelssitzungen
  3. Hinzufügen von Stop-Loss auf Basis von ATR
  4. Identifizieren von Ereignissen, vermeiden von Lücken

5. Optimierungsrichtlinien

  1. Optimierung der Handelssitzungen
  2. Optimierung der EMA-Parameter
  3. Hinzufügen eines ATR-basierten Stop-Loss
  4. Identifizieren von Ereignissen, vermeiden von Lücken
  5. Kombination mit anderen Indikatoren für einen besseren Filter
  6. Versuchung und Anpassung von Produkten

6. Zusammenfassung

Diese Strategie identifiziert Trendsignale durch den Vergleich von Close- und Down-Close-Kerzen und mit einem EMA-Filter innerhalb von voreingestellten Handelssessions. Sie hat einen Trendfolgeneffekt, aber auch Risiken falscher Signale. Verbessern Sie durch Optimierung von Parametern, Hinzufügen von Stop Loss, Verbesserung von Filtern usw. Beurteilen Sie gründlich im Backtest.


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

//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")


Mehr