この記事では,標準化されたMACD指標に基づいた定量的な取引戦略を詳細に説明します.信号品質を改善するために,クラシックMACD戦略を最適化します.
I. 戦略の論理
この戦略の主な考えは,誤差率を減らすために伝統的なMACD指標を標準化することです.具体的ステップは:
短期と長期間のハル移動平均を計算し,そのクロスオーバーをトレンド方向に利用します.
MACD差を計算する.
MACDを一定期間で正規化する.
標準化MACDの移動平均値をトリガーとして計算する.
標準MACDがトリガーの上を横切るとロング,下を横切るとショート.
トレンドフィルタを追加して 重要な動きを見逃さないようにします
ストップ・ロスを設定し,取引ごとにリスクを制御するために利益を取ります.
標準化によりMACD差の絶対値が減少し,より高い信号品質のためにノイズが低下する.トレンドフィルタリングは主要なトレンドに対する偽逆転を回避する.ストップ損失と利益を取ることは取引ごとに損失を制御する.
戦略の利点
シンプルなMACD戦略と比較して,最大の利点は標準化であり,MACDエラーを効果的に削減し,信号精度を向上させることができます.
また,トレンドフィルタリングが加えられ,偽逆転を避けるため,戦略の安定性が向上します.
最後に,ストップ・ロストとテイク・プロフィートの設定は,慎重なマネーマネジメントのために,取引ごとに制御可能なリスク・リターンを保証します.
III.潜在的な弱点
最適化にもかかわらず,実際に取引する際には,以下のリスクは注意すべきです.
まず,大きなパラメータ最適化困難が不適切に設定された場合,オーバーフィッティングにつながる可能性があります.
2つ目は ストップロスの設定が あまりにも近ければ 早期にストップされるリスクがあります
最後に,トレンド移行時に信号が遅れており,間に合わずに反応することがあります.
IV.要約
この記事では,MACD指標を正常化する定量的な取引戦略を説明した.これは,シグナル品質を効果的に向上させるためにクラシックMACD戦略を改善し,リスク管理メカニズムを組み込む.しかし,パラメータ最適化困難とストップロスの設定はまだ慎重に処理する必要があります.全体として,MACD戦略を最適化するための実行可能なアプローチを提供します.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // Normalized MACD but heavily modified by SeaSide420. Normalized MACD v420 strategy("Normalized MACD (v420)",shorttitle="NmacD(v420)",overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=1440, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) p=input(ohlc4) jah=input(title="HullMA cross",defval=21) tsp = input(34,title='Trigger') np = input(50,title='Normalize') SL = input(defval=-420.00, title="Stop Loss in $", step=1) TP = input(defval=31.00, title="Target Point in $", step=1) ot=1 n2ma=2*wma(p,round(jah/2)) nma=wma(p,jah) diff=n2ma-nma sqn=round(sqrt(jah)) n2ma1=2*wma(p[2],round(jah/2)) nma1=wma(p[2],jah) diff1=n2ma1-nma1 sqn1=round(sqrt(jah)) n1=wma(diff,sqn) n2=wma(diff1,sqn) sh=n1 lon=n2 ratio = min(sh,lon)/max(sh,lon) Mac = (iff(sh>lon,2-ratio,ratio)-1) MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1 MacNorm2 = iff(np<2,Mac,MacNorm) Trigger = wma(MacNorm2, tsp) Hist =(MacNorm2-Trigger) Hist2= Hist>1?1:Hist<-1?-1:Hist teh=MacNorm2+MacNorm2[2]-MacNorm2[1] closelong = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]<Trigger[1] and n1<n2[1] if (closelong) strategy.close("Long") closeshort = strategy.openprofit<SL or strategy.openprofit>TP or teh[1]>Trigger[1] and n1>n2[1] if (closeshort) strategy.close("Short") longCondition = Trigger<0 and teh>Trigger and MacNorm>Trigger and strategy.opentrades<ot if (longCondition) strategy.entry("Long",strategy.long) shortCondition = Trigger>0 and teh<Trigger and MacNorm<Trigger and strategy.opentrades<ot if (shortCondition) strategy.entry("Short",strategy.short)