この戦略は,MACD指標ベースの取引戦略の改良版である.MACD指標のトレンドフォローする特徴とモメント取引のアイデアを組み合わせ,高速および遅い移動平均値の違いを分析することによって取引信号を生成する.一方,戦略は,トレンド確認,信号遅延確認,固定パーセントストップ損失および利益を引き出すなどの最適化方法も導入し,戦略の堅牢性と収益性を向上させる.
この戦略の核心は,高速移動平均線 (EMA) とスロームービング平均線 (EMA) の違いで構成されるMACD指標である.高速移動平均線がスロー移動平均線 (EMA) を越えると,購入または販売信号を生成する.特に,MACD線が信号線を下から上へと突破すると,購入信号を生成する.MACD線が上から下へと信号線を下に落ちると,販売信号を生成する.
この戦略は,基本MACDクロスオーバー信号に加えて,トレンド確認メカニズムも導入している.現在の市場が上昇傾向か下落傾向にあるかどうかを判断するために,単純な移動平均 (SMA) と比較する.上昇傾向または下落傾向で購入信号が表示されたときのみ,取引操作が実行される.これは振動する市場で生成される偽信号を効果的に回避する.
さらに,この戦略は信号確認の時間窓を延長する.つまり,現在のキャンドルスタイクが購入または販売条件を満たし,以前のキャンドルスタイクも同じ条件を満たす場合にのみ,対応する取引が実行される.これは信号の信頼性をさらに向上させる.
最後に,ストラテジーは固定パーセントのストップ・ロストとテイク・プロフィートレベルを設定します.取引が実行されると,エントリー価格に基づいてストップ・ロストとテイク・プロフィートの価格が計算され,これらの価格に達するとポジションは自動的に閉鎖されます.これは単一の取引のリスクと収益を制御するのに役立ちます.
この戦略は,MACD指標に基づいた改良された取引戦略である.トレンド確認,信号遅延確認,固定ストップ損失とテイク・プロフィート,その他の方法を通じて,戦略の堅牢性と利益の可能性を向上させる.しかし,パラメータ最適化,トレンド認識,単一指標,バックテストデータなどのリスクに直面している.将来,他の指標,ダイナミックストップ損失とテイク・プロフィート,ポジション管理,機械学習を組み合わせるなどの側面から戦略を最適化することを検討し,実用的な応用効果をさらに改善することができます.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © sligetit //@version=5 strategy("Improved MACD_VXI Strategy", overlay=true) // Calculate MACD and Signal Line fastLength = input.int(13, title="Fast Length") slowLength = input.int(21, title="Slow Length") signalLength = input.int(8, title="Signal Length") fastMA = ta.ema(close, fastLength) slowMA = ta.ema(close, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) // Plot MACD and Signal Line plot(macd, color=color.red, linewidth=1) plot(signal, color=color.blue, linewidth=2) // Calculate Cross Signals with Trend Confirmation smaPeriod = input.int(50, title="SMA Period") sma = ta.sma(close, smaPeriod) trendUp = close > sma trendDown = close < sma crossOver = ta.crossover(signal, macd) crossUnder = ta.crossunder(signal, macd) buySignal = crossOver and trendUp sellSignal = crossUnder and trendDown // Execute Buy/Sell Operations if buySignal strategy.entry("Buy", strategy.long) if sellSignal strategy.entry("Sell", strategy.short) // Extend Signal Confirmation Time Window longSignal = crossOver[1] and trendUp[1] shortSignal = crossUnder[1] and trendDown[1] if longSignal strategy.entry("Buy", strategy.long) if shortSignal strategy.entry("Sell", strategy.short) // Set Fixed Percentage Stop Loss and Take Profit stopLossPercent = input.float(1, title="Stop Loss (%)") / 100 takeProfitPercent = input.float(2, title="Take Profit (%)") / 100 stopLossPrice = strategy.position_avg_price * (1 - stopLossPercent) takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPercent) strategy.exit("Stop Loss/Profit", "Buy", stop=stopLossPrice, limit=takeProfitPrice) strategy.exit("Stop Loss/Profit", "Sell", stop=stopLossPrice, limit=takeProfitPrice)