マックドに基づいた多期取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-12 11時46分59秒
タグ:

img

概要: この戦略は,トレンドを追跡するために複数のタイムフレームで取引信号を生成するためにMACDインジケーターを使用します. 基本的なアイデアは,より高いタイムフレームでトレンド方向を確認し,より低いタイムフレームで特定のエントリー機会を探することです.

戦略原則: この戦略は,MACD差線とシグナルラインの間の交差点を利用してトレンド方向を決定する.特に,より高い時間枠 (デフォルト60分) でMACD差線とシグナルラインを計算する.差線がシグナルラインの上を横切ると,購入信号が生成される.下を横切ると,全体的なトレンド方向を確認するために販売信号が生成される.

この戦略は,より低い時間枠 (現在の期間) でMACDを計算し,差と信号線の間にクロスオーバーが起こるときにポジションを入力します.したがって,より高い時間枠はトレンド方向を判断するために使用され,より低いものは特定のエントリーポイントを見つけるために使用されます.

この戦略は,トレンドを判断するのに役立つMACDヒストグラムの色の変化も使用しています.緑色のバーは上昇傾向を示し,赤いバーは下落傾向を示します.

利点分析

  1. 複数のタイムフレームの設計は,高いTFの傾向を確認し,低いTFのエントリを見つけ,システム性を改善します.

  2. MACDクロスオーバーを使用して入口と出口を決定し,信頼性の高い信号のために最適化されたパラメータです.

  3. ヒストグラムの色は,現在のトレンド状態を決定し,意思決定の正確さを向上させます.

  4. 動向を自動に追跡し 感情の誤りを減らす

リスク分析:

  1. 中長期の傾向を示す指標として,MACDは短期的に誤った信号を生み出し,不必要な損失をもたらす可能性があります.

  2. 複数のタイムフレーム戦略は,複数の期間を同時に考慮する必要があるため,最適化とテストが困難です.

  3. ストップ・ロスは設定されていないため,大きな損失のリスクがあります.

オプティマイゼーション方向:

  1. MACD パラメータを最適化して 最適な組み合わせを見つけます

  2. 最大損失を制限するためにストップ損失を追加します.

  3. 信号の質を改善するために他のフィルターを評価します.

  4. 最適なマッチを見つけるために 異なるタイムフレームの組み合わせをテストします

概要: この戦略はシステム的によく設計されており,中長期のトレンドを効果的に追跡するためにMACD指標の複数の強みを組み合わせています.しかし,ストップ損失メカニズムの欠如は,短期間の損失が容易に拡大することを意味し,改善する必要があります.全体として,強力なトレンドフォロー機能により,戦略は定量取引における株式ピックリングと意思決定のための高品質の枠組みを提供します.パラメータとモデルのさらなる最適化は利益の可能性を拡大し,安定性を向上させることができます.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF")
source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above",  defval="60")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)

fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, hist)

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
// hline(0, '0 Line', linestyle=solid, linewidth=2, color=white)

macd_chk=smd and outMacD ? outMacD : na
checker=smd and outSignal ? outSignal : na
if (crossover(macd_chk,checker))
    strategy.entry("BBandLE", strategy.long, comment="BBandLE")

if (crossunder(macd_chk, checker))
    strategy.entry("BBandSE", strategy.short, comment="BBandSE")


もっと