この戦略は,取引のためのMACD指標の連続した黄金十字と死亡十字信号に基づいています. 連続した黄金十字信号が表示されると,ロングポジションを開きます. 連続した死十字信号が表示されると,ショートポジションを開きます. 同時に,この戦略は,リスクを制御するために,利用者に利益とストップロスのレベルを設定することを可能にします. さらに,この戦略は,バックテストの時間範囲を選択するオプションを提供し,ユーザーが指定された時間内に戦略のパフォーマンスを評価することができます.
この戦略の核心は,市場動向のターニングポイントを決定するためにMACD指標のゴールデンクロスとデスクロスシグナルを使用することです.MACD指標は,高速移動平均値 (EMA) とスロー移動平均値 (EMA) で構成されています.高速EMAがスローEMAを横切ると,ゴールデンクロスまたはデスクロスシグナルを形成します.連続したゴールデンクロスシグナルは,市場は上昇傾向に入り,ロングポジションが開かれる可能性があることを示します.連続したデスクロスシグナルは,市場はダウントレンドに入り,ショートポジションが開かれる可能性があることを示します.これらのトレンドターニングポイントをキャプチャーすることで,戦略は市場動向から利益を得ようとします.
この戦略は,連続的なMACD黄金十字と死十字信号に基づいて取引し,市場のトレンドのターニングポイントを把握しようとします. シンプルで理解しやすい,主要なトレンドを追跡することができ,リスク制御と柔軟なバックテスト機能を提供します. しかし,戦略のパフォーマンスはパラメータ選択,市場の騒音,トレンドレイグなどの要因の影響を受けることがあります. さらに改善するために,他の指標と組み合わせ,パラメータを最適化,ダイナミックなテイク・プロフィートとストップ・ロース,ポジション管理を導入することを検討することができます. 全体的に,戦略はトレンドトレードのための基本的な枠組みを提供します. しかし,実践的な応用では,特定の市場条件と個人的なリスクの好みに合わせて慎重に評価し調整する必要があります.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("连续MACD交叉和回测范围") //策略初始化時間設置 useDateFilter = input.bool(true, title="启用时间回测范围", group="回测范围") backtestStartDate = input(timestamp("1 Jan 2023"), title="开始时间", group="回测范围") backtestEndDate = input(timestamp("1 Jan 2024"), title="结束时间", group="回测范围") inTradeWindow = true // 定义MACD指标参数 fastLength = input.int(12, "快速EMA周期") slowLength = input.int(26, "慢速EMA周期") signalSmoothing = input.int(9, "信号线平滑周期") long_win = input.float(defval = 0.01,title = "多单止盈设置", tooltip = "0.01代表1%" ) long_lose= input.float(0.01,"多单止损设置") short_win = input.float(0.01,"空单止盈设置") short_lose = input.float(0.01,"空单止损设置") // 计算MACD值 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // 定义金叉和死叉的条件 crossUp = ta.crossover(macdLine, signalLine) crossDown = ta.crossunder(macdLine, signalLine) // 使用历史状态记录上一次交叉情况 var lastCrossUp = false var lastCrossDown = false // 更新历史状态 if crossUp lastCrossUp := true else if crossDown lastCrossUp := false if crossDown lastCrossDown := true else if crossUp lastCrossDown := false // 交易执行逻辑:检查是否存在连续的金叉或死叉 if lastCrossUp and crossUp and inTradeWindow strategy.entry("买入开多", strategy.long) strategy.exit("买入止盈止损", "买入开多", limit=close * (1 + long_win), stop=close * (1 - long_lose)) if lastCrossDown and crossDown and inTradeWindow strategy.entry("卖出开空", strategy.short) strategy.exit("卖出止盈止损", "卖出开空", limit=close * (1 - short_win), stop=close * (1 + short_lose)) // 显示MACD线和信号线 plot(macdLine, "MACD线", color=color.blue) plot(signalLine, "信号线", color=color.orange)