
Die Strategie nennt sich Quantitative Trading Strategy, die auf einem K-Line-Closing-Price-Off-Hold-Vergleich mit einem EMA-Filter basiert. Die Strategie bewertet die Anzahl der K-Line-Off-Hold- und K-Line-Off-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-Hold-
Die Kernlogik der Strategie besteht darin, die Anzahl der K-Linien zu ermitteln, die in den letzten Lookback-Zyklen aufgestiegen sind. Aufgestiegene K-Linien werden als Mehrköpfe beurteilt, wenn die Anzahl der aufgestiegenen K-Linien höher ist, und die Anzahl der absteigenden K-Linien wird als Hohlmarkt beurteilt.
Die Logik des Urteils lautet:
Mehrköpfige Signal-Triggerbedingungen: inSession ist “true” (im Handelsprozess) und upCloseCount > downCloseCount (mehr K-Linien im Auf- und Abkauf) und close > ema (der Abkaufpreis ist höher als der EMA) und currentSignal ist nicht “long” (aktuell keine Position)
Triggerbedingungen: inSession ist true und downCloseCount > upCloseCount ((niedrigere Schließung mit mehr K-Linien) und close < ema ((Schließung unterhalb der EMA) und currentSignal ist nicht “short” ((derzeit keine Positionen))
Gegenmaßnahmen:
Diese Strategie identifiziert Trendsignale in bestimmten Handelszeiten durch die Erfassung der Anzahl von mehrköpfigen und leeren K-Linien, die den K-Line-Abschlusspreis in einem bestimmten historischen Zeitraum bilden, in Verbindung mit der Filterwirkung der EMA-Indikatoren. Es besteht jedoch ein gewisses Risiko für Fehltrades, das durch Parameteroptimierung, Stop-Loss-Strategie, Filtersignale usw. verbessert werden muss.
/*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")