Diese Strategie ist ein Trend-Folgende Handelssystem, das auf dem Crossover von 110-Tage- und 200-Tage-Exponential Moving Averages (EMA) basiert. Es identifiziert Markttrends durch die Schnittstelle von kurzfristigen und langfristigen EMAs und beinhaltet Stop-Loss- und Take-Profit-Mechanismen zur Risikokontrolle. Das System führt automatisch lange und kurze Positionen bei Trendbestätigung aus und überwacht kontinuierlich das Positionsrisiko.
Die Kernlogik beruht auf der Kontinuität der Kursentwicklungen, wobei EMA110 und EMA200-Kreuzungen verwendet werden, um Trendumkehrsignale zu erfassen. Wenn der kurzfristige gleitende Durchschnitt (EMA110) über den längerfristigen gleitenden Durchschnitt (EMA200) kreuzt, signalisiert er eine Aufwärtstrendbildung, was eine Long-Position auslöst. Umgekehrt signalisiert der kurzfristige gleitende Durchschnitt, wenn er unter den längerfristigen gleitenden Durchschnitt geht, eine Abwärtstrendbildung, was eine Short-Position auslöst. Für das Risikomanagement setzt die Strategie für jede Position ein Stop-Loss-Level von 1% und ein Take-Profit-Level von 0,5% fest, um Gewinne zu schützen und potenzielle Verluste zu begrenzen.
Die Strategie erfasst Trends durch gleitende Durchschnitts-Crossovers und steuert gleichzeitig Risiken durch Stop-Loss- und Take-Profit-Mechanismen, demonstriert eine solide Gestaltung und logische Strenge.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-18 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA110/200 Cross with Stop-Loss and Take-Profit", overlay=true) // 定义EMA110和EMA200 ema110 = ta.ema(close, 110) ema200 = ta.ema(close, 250) // 画出EMA plot(ema110, color=color.blue, title="EMA110") plot(ema200, color=color.red, title="EMA200") // 计算交叉信号 longCondition = ta.crossover(ema110, ema200) // EMA110上穿EMA200,做多 shortCondition = ta.crossunder(ema110, ema200) // EMA110下穿EMA200,做空 // 设置止损和止盈 stopLoss = 0.01 // 止损1% takeProfit = 0.005 // 止盈0.5% // 判断是否已有仓位 isLong = strategy.position_size > 0 // 当前是否为多头仓位 isShort = strategy.position_size < 0 // 当前是否为空头仓位 // 执行策略:做多时平空,做空时平多 if (longCondition and not isLong) // 如果满足做多条件并且当前没有多头仓位 if (isShort) // 如果当前是空头仓位,先平空 strategy.close("Short") strategy.entry("Long", strategy.long) // 执行做多 strategy.exit("Take Profit/Stop Loss", "Long", stop=close * (1 - stopLoss), limit=close * (1 + takeProfit)) if (shortCondition and not isShort) // 如果满足做空条件并且当前没有空头仓位 if (isLong) // 如果当前是多头仓位,先平多 strategy.close("Long") strategy.entry("Short", strategy.short) // 执行做空 strategy.exit("Take Profit/Stop Loss", "Short", stop=close * (1 + stopLoss), limit=close * (1 - takeProfit)) // 在表格中显示信号 var table myTable = table.new(position.top_right, 1, 1) if (longCondition and not isLong) table.cell(myTable, 0, 0, "Buy Signal", text_color=color.green) if (shortCondition and not isShort) table.cell(myTable, 0, 0, "Sell Signal", text_color=color.red)