マルチタイムライン MACD インジケーター クロスオーバー取引戦略


作成日: 2024-02-19 11:03:54 最終変更日: 2024-02-19 11:03:54
コピー: 0 クリック数: 697
1
フォロー
1617
フォロワー

マルチタイムライン MACD インジケーター クロスオーバー取引戦略

概要

マルチタイム軸MACD指数クロス取引戦略は,トレンド追跡戦略である.それは,異なるパラメータセットのMACD指数を計算して,価格がその指数を破るときに取引シグナルを生成し,株式,インデックス,外貨などの金融製品の自動取引を実現する.

戦略原則

この戦略は3つの移動平均を同時に計算します. ウェイトアップ移動平均WMAと2つのインデックス移動平均EMAです. これらの3つの移動平均のパラメータ設定はそれぞれ25日,50日,および100日です. これにより,移動平均は異なる価格走行周期をカバーできます.

移動平均を計算した後,戦略は価格が移動平均の1つを突破するか破るかどうかを監視する.価格が3つの移動平均を同時に突破するか破るならば,取引シグナルが生成される.

例えば,価格が3つの移動平均線を同時に上回るときは,買入シグナルを生じ,価格が3つの移動平均線を同時に下回るときは,売り出シグナルを生じます.価格と移動平均線の関係を監視することで,価格の動きの転換点を判断できます.

複数の時間軸の指標を交差判断することで,偽の信号をフィルターして,取引信号をより信頼性のあるものにすることができます.

優位分析

  • マルチタイムアシストの価格動向分析により,偽信号をフィルターする
  • パラメータは,異なる周期の状況に適応しやすく最適化できます
  • 株,指数,外貨など,複数の品種で,広く適用

リスク分析

  • 大周期指標の判断が遅れているため,ショートラインのチャンスを逃す可能性がある.
  • 突破失敗は 損失の危険性がある
  • PARAMETERS 後期に少量調整して,止損止めを最適化

最適化の方向

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

  1. 移動平均の周期パラメータを最適化して,より多くの行情周期に対応する
  2. RSIなどの他の技術指標のフィルターを追加し,超買いと超売りを判断します.
  3. 止損メカニズムを追加し,ATR指標を参考にして止損距離を設定する
  4. 期貨などの他の品種に拡張可能,最適化パラメータ

要約する

多時間軸MACD指標クロス取引戦略は,全体的な考え方が明確で,移動平均の多周期で価格トレンドを判断し,価格が顕著に転じるときに取引シグナルを生成する.戦略の最適化スペースは広く,異なる品種と市場サイクルに合わせてパラメータを調整することができ,それによって良い取引効果が得られる.この戦略は,トレンド型株,インデックス,外貨のプログラム取引に適している.

ストラテジーソースコード
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TC - MACDoscillator v2", overlay=true)
// ___________      .__                   _________               .__  __         .__   
// \__    ___/____  |  |    ____   ____   \_   ___ \_____  ______ |__|/  |______  |  |  
//   |    |  \__  \ |  |   / ___\ /  _ \  /    \  \/\__  \ \____ \|  \   __\__  \ |  |  
//   |    |   / __ \|  |__/ /_/  >  <_> ) \     \____/ __ \|  |_> >  ||  |  / __ \|  |__
//   |____|  (____  /____/\___  / \____/   \______  (____  /   __/|__||__| (____  /____/
//                \/     /_____/                  \/     \/|__|                 \/      
//
// MACDoscillator Strategy v2
// Josh Breitfeld 2016
//

/// INPUTS START ///

//tradeSize = input(title="Shares Per Trade",  defval=2500, step=1)
WMALength = input(title="WMA Length",  defval=25, step=1)
EMA1Length = input(title="EMA1 Length",  defval=50, step=1)
EMA2Length = input(title="EMA2 Length",  defval=100, step=1)
//security = input(title="Alternate Security", type=string, defval="SPX500")
//inverse = input(title="Inverse Signals", type=bool, defval=true)

/// INPUTS END ///

/// ALGORITHM START ///

/// Define calculations
WMA = wma(close,WMALength)
EMA1 = ema(close,EMA1Length)
EMA2 = ema(close,EMA2Length)

/// Grab values from alternate security
dWMA = WMA
dEMA1 = EMA1
dEMA2 = EMA2

aClose = close

/// Crossover signal system

/// Long crosses
lc1 = aClose > dWMA ? true : false
lc2 = aClose > dEMA1 ? true : false
lc3 = aClose > dEMA2 ? true: false

/// Short crosses
sc1 = aClose < dWMA ? true : false
sc2 = aClose < dEMA1 ? true : false
sc3 = aClose < dEMA2 ? true : false

//plot(lc1,color=green)
//plot(lc2,color=green)
//plot(lc3,color=green)
//plot(sc1,color=red)
//plot(sc2,color=red)
//plot(sc3,color=red)


/// ALGO ORDER CONDITIONS START ///

pBuyToOpen = (lc1 and lc2 and lc3 ? true : false)
pSellToOpen = (sc1 and sc2 and sc3 ?  true : false)
pSellToClose = (lc1 ? true : false) and not pBuyToOpen
pBuyToClose = (sc1 ? true : false) and not pSellToOpen

//plot(pBuyToOpen,color=lime)
//plot(pBuyToClose,color=lime)
//plot(pSellToOpen,color=red)
//plot(pSellToClose,color=red)
/// INVERT SIGNALS

//buyToOpen = inverse ? -pBuyToOpen : pBuyToOpen
//sellToOpen = inverse ? -pBuyToOpen : pSellToOpen
//sellToClose = inverse ? -pSellToClose : pSellToClose
//buyToClose = inverse ? -pBuyToClose : pBuyToClose

/// ALGO ORDER CONDITIONS END ///

/// ALGORITHM END ///

/// DEFINE PLOTS ///

plot(dWMA,"WMA",lime,1,line)
plot(dEMA1,"EMA1",blue,2,line)
plot(dEMA2,"EMA2",red,3,line)
//plot(aClose,"Close",orange,4,line)

/// PLOTS END ///

/// ORDER BLOCK ///

    //strategy.entry("My Long Entry Id", strategy.long)

/// OPENING ORDERS START ///
if(pBuyToOpen) 
    strategy.entry("BTO", strategy.long, comment="BTO")
if(pSellToOpen) 
    strategy.entry("STO", strategy.short, comment="STO")

/// OPENING ORDERS END ///

/// CLOSING ORDERS START ///
strategy.close("BTO", pBuyToClose)
strategy.close("STO", pSellToClose)
/// CLOSING ORDERS END ///

/// END ORDER BLOCK ///

// Josh Breitfeld - Talgo Capital 2016
/// STRATEGY END ///