Diese Strategie wird
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
Das Kurzsignal wird ausgelöst, wenn: inSession true und downCloseCount > upCloseCount (mehr nach unten) und close < ema (Schlusskurs niedriger als EMA) und currentSignal nicht
Lösungen:
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")