この戦略は,110 日および 200 日指数動向平均値 (EMA) のクロスオーバーに基づいたトレンドフォローする取引システムである.短期および長期 EMA の交差点を通じて市場のトレンドを特定し,リスク管理のためのストップ・ロストとテイク・プロフィートメカニズムを組み込む.システムはトレンド確認時に自動的にロングとショートポジションを実行し,ポジションリスクを継続的に監視する.
基本論理は,トレンド逆転信号をキャプチャするためにEMA110とEMA200クロスオーバーを使用して価格トレンドの連続性に依存する.短期移動平均線 (EMA110) が長期移動平均線 (EMA200) を越えると,上向きトレンド形成をシグナル化し,ロングポジションを誘発する.逆に,短期移動平均線が長期移動平均線を下回ると,下向きトレンド形成をシグナル化し,ショートポジションを誘発する.リスク管理のために,戦略は利益を保護し,潜在的な損失を制限するために,1つのポジションに対して1%のストップ・ロストと0.5%のテイク・プロフィートレベルを設定する.
この戦略は,ストップ・ロストとテイク・プロフィートメカニズムを通じてリスクを管理しながら,移動平均クロスオーバーを通じてトレンドを把握し,健全な設計と論理的厳格性を実証している. 市場範囲で劣る可能性があるが,提案された最適化は戦略の安定性と収益性をさらに向上させることができる. 戦略は安定したリターンを求める中長期投資家に適している.
/*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)