
Dies ist eine quantitative Handelsstrategie, die EMA-Trend, Zyklusausbruch und Handelssitzungsfilterung kombiniert. Die Strategie basiert hauptsächlich auf der Beurteilung der Trendrichtung des gleitenden Durchschnitts und verwendet das Durchbruchsmuster des Preises an der Schlüsselzyklusposition als Handelssignal. Gleichzeitig wird eine Handelsperiodenfilterung eingeführt, um die Handelsqualität zu verbessern. Die Strategie verwendet prozentuale Stop-Loss- und Take-Profit-Methoden zur Risikokontrolle.
Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:
Diese Strategie erstellt ein logisch strenges Handelssystem durch die Kombination mehrerer Mechanismen wie gleitende Durchschnittstrends, Preismuster und Zeitabschnittsfilterung. Obwohl gewisse Einschränkungen bestehen, wird erwartet, dass die Stabilität und Rentabilität der Strategie durch kontinuierliche Optimierung und Verbesserung weiter gesteigert wird. Die Strategie eignet sich als Grundgerüst eines mittel- und langfristigen Trendverfolgungssystems und kann entsprechend den tatsächlichen Handelsanforderungen angepasst und verbessert werden.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("The Gold Box Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Inputs
roundNumberInterval = input.int(5, title="Round Number Interval ($)", minval=1)
useEMA = input.bool(true, title="Use 20 EMA for Confluence")
emaLength = input.int(20, title="EMA Length")
// Session times for London and NY
londonSession = input("0300-1200", title="London Session (NY Time)")
nySession = input("0800-1700", title="New York Session (NY Time)")
// EMA Calculation
emaValue = ta.ema(close, emaLength)
// Plot Round Number Levels
roundLow = math.floor(low / roundNumberInterval) * roundNumberInterval
roundHigh = math.ceil(high / roundNumberInterval) * roundNumberInterval
// for level = roundLow to roundHigh by roundNumberInterval
// line.new(x1=bar_index - 1, y1=level, x2=bar_index, y2=level, color=color.new(color.gray, 80), extend=extend.both)
// Session Filter
inLondonSession = not na(time("1", londonSession))
inNYSession = not na(time("1", nySession))
inSession = true
// Detect Bullish and Bearish Engulfing patterns
bullishEngulfing = close > open[1] and open < close[1] and close > emaValue and inSession
bearishEngulfing = close < open[1] and open > close[1] and close < emaValue and inSession
// Entry Conditions
if bullishEngulfing
strategy.entry("Long", strategy.long, comment="Bullish Engulfing with EMA Confluence")
if bearishEngulfing
strategy.entry("Short", strategy.short, comment="Bearish Engulfing with EMA Confluence")
// Stop Loss and Take Profit
stopLossPercent = input.float(1.0, title="Stop Loss (%)", minval=0.1) / 100
takeProfitPercent = input.float(1.5, title="Take Profit (%)", minval=0.1) / 100
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent), limit=close * (1 + takeProfitPercent))
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent), limit=close * (1 - takeProfitPercent))