トレンド緩和MACD戦略


作成日: 2023-10-30 17:08:16 最終変更日: 2023-10-30 17:08:16
コピー: 1 クリック数: 641
1
フォロー
1617
フォロワー

トレンド緩和MACD戦略

概要

この戦略は,株価のトレンドを排除することで,MACD指標の形状をより明確に観察することができる.DEMA快線とDEMA慢線を計算して,MACD直線と信号線を得て,それらの交差を判断して取引信号を生成する.この戦略は,月,日付の条件フィルタリングと止損平仓ロジックを組み合わせて,より完全な戦略システムを形成する.

戦略原則

まず,価格のEMAを計算し,価格のトレンドを消去し,トレンドを消去した後の価格EMAを得る.それから,EMAをベースに,それぞれ速線DEMA,遅線DEMA,およびMACD直線を計算する.その中で,速線DEMAの計算方法は,まず速線のEMA1を計算し,次にEMA1のEMA2を計算し,次にDEMA=(2を計算する.*EMA1-EMA2) ≪慢線DEMAと信号線の計算は同理。 MACD直線 ((快線DEMA - 慢線DEMA) と信号線を得て,MACD直線上を信号線穿過すると買取信号が生じ,MACD直線下を信号線穿過すると売り出信号が生じ。 最後に,月・日付条件を組み合わせて信号をフィルターし,ストップロズロジックを設定する。

この戦略の核心的な論理は:

  1. 価格のトレンドを削除し,MACDの形状をより明確に見ることができます.

  2. DEMAの速線,遅線を計算して,MACDの直線と信号線が得られる.

  3. MACD直線とシグナルラインの交差は取引シグナルを生成する

  4. 加入日月条件をフィルターします

  5. ストップダストロジックを設定する

優位分析

この戦略の主な利点は

  1. 価格トレンドを削除し,MACDの交差点をより明確に見ることができ,トレンドに誤導されないようにする.

  2. DEMAアルゴリズムを使用してMACD指標を計算し,いくつかのノイズをフィルターして信号をより明確にする.

  3. 日付と月を組み合わせてフィルタリングすることで,不必要な取引を減らすことができます.

  4. ストップダストロジックを設定し,早期にストップダストを行い,リスクを制御する.

  5. 交差点から信号が作られれば,誤った取引が少なくなる.

  6. 全体として,この戦略は,トレンド除去,DEMA計算,条件フィルタリングと組み合わせて,より明確で信頼できる取引信号を生成します.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. トレンドを消した後に,MACD交差信号が増加する可能性があるため,実体での検証が必要である.

  2. DEMAアルゴリズムは部分的なノイズをフィルターしたものの,指標計算では偽信号が多く出ている可能性がある.

  3. 日付と月によってフィルタリング条件が厳しくなり,取引の機会を逃しているかもしれません.

  4. ストップポジションの設定は合理的かどうかを考慮する必要がある. 余分に緩やかになるリスクが増加し, 余分に厳格になるストップが頻繁になる.

  5. この戦略は主にMACD指標に依存しており,市場がMACD指標を使用するのに適していない場合,その効果は影響を受ける可能性があります.

  6. 策略パラメータの最適化には十分な余地があり,反測とリールディスクによるさらなるテストが必要である.

対策として

  1. 偽信号を避けるために,他の指標の確認を追加します.

  2. 日付フィルター条件を最適化して,適切な緩みを適用する.

  3. 詳細なテストと最適化 ストップ・ローズ・ポイント

  4. 逆転取引を避けるためにトレンド判断のメカニズムに加入する.

  5. 全面的な回測と最適化パラメータにより安定性が向上する.

最適化の方向

この戦略は以下の点で最適化できます.

  1. 異なる価格平均をテストし,より適切な代替EMAのラインタイプを探します.

  2. 異なるパラメータの組み合わせを試し,MACDの快線長,慢線長,信号線長を最適化します.

  3. 補助判断指標である量能指標を増加させ,偽信号を回避する.

  4. 合理的な移動ストップまたは固定ストップを設定して,ストップ戦略を最適化します.

  5. 日付,月間フィルタリング条件を最適化して,より柔軟なものにします.

  6. 逆操作を避けるためにトレンド判断を追加します.

  7. 戦略の安定性を高めるため,全般的なパラメータ最適化を行います.

  8. 戦略の長期的効果を検証するために,より長い時間周期で反省します.

  9. リアルタイムで検証し,リアルタイムに合わせて戦略のパラメータをさらに変更します.

要約する

全体的に見ると,この戦略は,トレンドを排除する考え方を採用し,DEMA形式のMACD指標を計算し,日付フィルターと組み合わせて取引信号を生成する戦略的考え方を採用し,シンプルだが,実行可能な戦略的考え方を採用している.その最大の優点は,MACDの形状を明確に見ることができ,価格トレンドの影響による判断を避けるというものである.しかし,この戦略には,パラメータ最適化とリスク管理手段の付加が必要とする一定のリスクも存在する.この戦略は,実用的に適用できる.この戦略には,大きな最適化余地があり,十分に検証され,最適化されれば,安定した信頼性の高いショートライン戦略になることができる.

ストラテジーソースコード
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "Trendless MACD  Strategy",shorttitle="MACD-T Strategy",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.01,initial_capital=100000)



maperiod=input(9)
ema=ema(close,maperiod)


fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = ema(ema,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = ema(ema,fastmacd)
macdfastline2 = ema(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine1 = ema(MACDLine, signalmacd)
SignalLine2 = ema(SignalLine1, signalmacd)
SignalLine = ((2 * SignalLine1) - SignalLine2 )


MACDSignal = MACDLine-SignalLine


colorbar= MACDSignal>0?green:red

plot(MACDSignal,color=colorbar,style=columns,title='Histogram',histbase=0)
p1 = plot(MACDLine,color=blue,title='MACDLine')
p2=plot(SignalLine,color=red,title="SignalLine")
fill(p1,p2,color=blue)


longCond =  crossover(MACDLine,SignalLine) 

shortCond =  crossunder(MACDLine,SignalLine) 




monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)

yearfrom= input(2018)
yearuntil=input(2021)

if (  longCond   ) 
    strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND",  comment="LONG")
    
else
    strategy.cancel(id="LONG")
    



if ( shortCond  ) 

    strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND", comment="SHORT")
else
    strategy.cancel(id="SHORT")