
Die Strategie ist ein intelligentes Handelssystem, basierend auf einer doppelten Gleichgewicht-Kreuzung, mit einem 9-Zyklus- und 21-Zyklus-Index-Moving-Average (EMA) als Kernindikator. Die Strategie integriert einen dynamischen Stop-Loss-Stopp-Mechanismus, der die Handelsanweisungen automatisch ausführt, indem er die EMA-Indikator-Kreuzungssignale in Echtzeit überwacht. Das System verwendet ein Prozentsatz-Stopp- und ein Fixed-Ratio-Stopp-System, um die Sicherheit des Handels zu gewährleisten und die Gewinnchancen zu gewährleisten.
Die Kernlogik der Strategie basiert auf der Kreuzbeziehung zwischen einem schnellen EMA (Zyklus 9) und einem langsamen EMA (Zyklus 21). Wenn die schnelle Linie nach oben über die langsame Linie geht, erkennt das System ein bullishes Signal, das automatisch die Positionen auslöst und ein Plus eröffnet. Wenn die schnelle Linie nach unten über die langsame Linie geht, erkennt das System ein bullishes Signal, das automatisch die Positionen auslöst und ein Plus eröffnet. Gleichzeitig wird ein dynamischer Stop-Loss-Mechanismus eingerichtet: Während der Haltung von mehreren Positionen wird der Stop-Loss-Preis 5% unter dem Eröffnungspreis festgelegt, der Stop-Loss-Preis 10% über dem Eröffnungspreis.
Die Strategie ist ein strukturiertes, logisch klares, automatisiertes Handelssystem. Die Handelsentscheidung wird über EMA-Kreuzsignale getroffen, die mit einem dynamischen Stop-Loss-Stopp-Mechanismus verbunden sind, um eine bessere Performance in einem Trendmarkt zu erzielen. Die Verwendung erfordert jedoch die Beachtung der Veränderungen der Marktumgebung, die Anpassung der Parameter-Einstellungen und die Risikokontrolle.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 添加策略参数设置
var showLabels = input.bool(true, "显示标签")
var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1)
var takeProfitPercent = input.float(10.0, "止盈百分比", minval=0.1, maxval=50.0, step=0.1)
// 计算EMA
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)
// 绘制EMA线
plot(ema9, "EMA9", color=color.blue, linewidth=2)
plot(ema21, "EMA21", color=color.red, linewidth=2)
// 检测交叉
crossOver = ta.crossover(ema9, ema21)
crossUnder = ta.crossunder(ema9, ema21)
// 格式化时间显示 (UTC+8)
utc8Time = time + 8 * 60 * 60 * 1000
timeStr = str.format("{0,date,MM-dd HH:mm}", utc8Time)
// 计算止损止盈价格
longStopLoss = strategy.position_avg_price * (1 - stopLossPercent / 100)
longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent / 100)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent / 100)
shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent / 100)
// 交易逻辑
if crossOver
if strategy.position_size < 0 // 如果持有空仓
strategy.close("做空") // 先平掉空仓
strategy.entry("做多", strategy.long) // 开多仓
if showLabels
label.new(bar_index, high, text="做多入场\n" + timeStr, color=color.green, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar)
if crossUnder
if strategy.position_size > 0 // 如果持有多仓
strategy.close("做多") // 先平掉多仓
strategy.entry("做空", strategy.short) // 开空仓
if showLabels
label.new(bar_index, low, text="做空入场\n" + timeStr, color=color.red, textcolor=color.white, style=label.style_label_up, yloc=yloc.belowbar)
// 设置止损止盈
if strategy.position_size > 0 // 多仓止损止盈
strategy.exit("多仓止损止盈", "做多", stop=longStopLoss, limit=longTakeProfit)
if strategy.position_size < 0 // 空仓止损止盈
strategy.exit("空仓止损止盈", "做空", stop=shortStopLoss, limit=shortTakeProfit)