資源の読み込みに... 荷物...

アダプティブマルチタイムフレーム移動平均クロスオーバー戦略

作者: リン・ハーンチャオチャン,日付: 2023年10月9日 14:56:37
タグ:

概要

この戦略は,トレンドを追跡するために,複数のタイムフレームにおける適応型移動平均クロスオーバーの原則を利用する.これは,中長期トレンドから追加の利益を得ることを目的として,取引信号判断のための高速線,スローラインおよびMACD指標を組み合わせます.

原則

この戦略は主に二重移動平均クロスオーバーシステムとMACD指標の組み合わせに基づいています. 二重移動平均クロスオーバーシステムは,それぞれ短期EMAと長期EMAを計算する高速EMAと遅いEMAで構成されています. 急速線がスローラインを越えると買い信号が生成され,市場のトレンドが下落から上昇に変化したことを示し,ロングポジションが構築できます. 急速線がスローラインを下回ると売れ信号が生成され,市場トレンドが上昇から減少に変化したことを示し,その時点でポジションが閉鎖できます. MACD指標は,短期EMAと長期EMAの違いであるDIF線とDEAMAC線,および差の移動平均から構成されています. HIST線,すなわちDIF線とDIF線は,短モメントの違いを表しています. ADDは赤いヒストグラムであり,緑色は短信号を表します.

この戦略は,二重移動平均値とMACDのモメンタム変化信号のトレンド判断を組み合わせます.中長期トレンドから利益を得ながら,誤ったブレイクアウトを効果的にフィルタリングすることができます.特に,高速線がスローラインを越えると,MACDヒストグラムが同時に緑色に変わると,より信頼性の高いロング信号が生成されます.逆に,高速線がスローラインを下回ると,MACDヒストグラムが同時に赤色に変わると,より強いショート信号が生成されます.

さらに,戦略には適応パラメータ機能も組み込まれています.パラメータ最適化中に,戦略が異なる市場条件下で比較的より良いパフォーマンスを達成できるように,高速ライン,スローライン,MACDパラメータの期間が異なる時間帯のパフォーマンスに基づいて自動的に調整されます.

利点

  1. 意思決定のための二重移動平均システムとMACD指標を組み合わせ,ノイズからの誤った信号によって誤導されるのを避ける.

  2. 適応性パラメータ機能が適用されるので,戦略は市場変化に適応し,取引決定を自動的に最適化するためにパラメータを動的に調整することができます.

  3. 中期から長期間のトレンドを比較的うまく把握し,範囲限定市場からの偽のブレイクをフィルタリングし,トレンド市場から追加利益を得ます.

  4. 長期間の分析を行い,より大きな傾向の方向性を特定します.

  5. シンプルで明快な論理,最適化されたコード構造, 異なるニーズを満たすために理解し,変更しやすい.

リスク

  1. 二重移動平均系は,範囲限定市場には適していないため,明らかに傾向のある株や時間帯に使用されるべきです.

  2. MACDは遅延効果があり,急速に変化する傾向を追跡するのに適していません.他の指標と組み合わせなければなりません.

  3. パラメータ最適化には,過剰なフィットメントを避けるために十分なバックテスト期間と厳格なリスク評価が必要です.

  4. ロングポジションを保持する際に突然の出来事によるシステムリスクに注意し,必要に応じて時間内にストップ・ロスをします.

  5. アダプティブパラメータ機能の過剰最適化リスク,パラメータの頻繁な調整を避けるのに十分な検証が必要です.

改善 の 方向

  1. 騒音をフィルタリングし,トレンドに適合するパラメータを見つけるために,異なる高速と遅い移動平均の組み合わせをテストします.

  2. トレンド変化点を最も早く反映する組み合わせを見つけるために,異なるMACDパラメータセットを試してください.

  3. トレンドが不透明なときに取引を一時停止します.

  4. ストップ・ロスのメカニズムを導入します. ストップ・ロスの移動や待機中のオーダーなど. 単一の取引損失を制御するために.

  5. 機械学習アルゴリズムで 適応パラメータルルを 訓練して 安定性を向上させるのです

  6. 関連商品のポートフォリオを形成し 市場システムリスクを多様化します

結論

この戦略は二重移動平均クロスオーバーとMACDモメント指標を組み合わせ,トレンドフォローとリズム制御の有機的統合を達成する.適応性パラメータの導入により,市場変化に円滑に適応するための戦略はより堅牢である.単一指標戦略と比較して,この戦略は,中長期トレンドから比較的広範な取引利益を得ることができるより強い意思決定効果を形成する.次のステップには,パラメータ最適化,リスク管理などが含まれ,戦略をさらに強化する.全体として,戦略は,徹底的な研究と適用に値する信頼性の高いトレンドフォロー取引システムを形成する.


/*backtest
start: 2023-09-08 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// To enable alerts: Change 'Strategy' to read 'Study' below  and you also need to comment out lines 43 and 47 - Strategy code

// strategy(title="Riz Coloured MACD", shorttitle="Riz MACD" , initial_capital=5000, default_qty_value=3  )
//study(title="Riz Coloured MACD", shorttitle="Riz MACD")

source = close
fastLength = input(21, minval=1), slowLength=input(55,minval=1)
signalLength=input(9,minval=1)
MACDCandlesCheckedBack=input(6,minval=1)
MACDTolerance=input(4,minval=1)

fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
macd = fastMA - slowMA
signal = ema(macd, signalLength)
hist = macd - signal

// ====== BASIC COLOURING - IF HISTOGRAM IS HIGHER THAN PREVIOUS 2 CANDLES THEN WE ARE TICKING UP and VISA VERSA ============//

isTickingUp = hist > hist[1] and hist > hist[2] //and hist > hist[3]
isTickingDown = hist < hist[1] and hist < hist[2] // and hist < hist[3]


// ======= MACD STRATEGY CODE ========== //

// Check if MACD is ticking in the right direction to take a trade - adding 1 at the end means it starts at -1 so not to include the current candle
MACDHistHighestHigh= highest(hist, MACDCandlesCheckedBack)[1]
MACDHistLowestLow = lowest(hist, MACDCandlesCheckedBack)[1]

MACDConfirmsLong() => (hist - MACDHistLowestLow) > MACDTolerance
MACDConfirmsShort() => (MACDHistHighestHigh - hist) > MACDTolerance


plot(macd,  title="MACD", color=blue, linewidth=3)
plot(signal,  title="SIGNAL", color=orange, linewidth=3)

// === SIMPLE COLOURING BASED ON LAST 2 CANDLES - EASY TO REFERENCE IN DAY TO DAY MACD USE ====//

plot(hist, title="HIST", color=isTickingDown ? fuchsia : isTickingUp ? lime : green, linewidth=3, style=histogram)

// ==== ALTERNATIVE COLOURING FOR PLOT BASED ON STRATEGY SETTINGS INSTEAD

//plot(hist, title="HIST", color=MACDConfirmsLong() ? lime : MACDConfirmsShort() ? fuchsia : green, linewidth=3, style=histogram)


// === STRATEGY - ENTER POSITIONS - COMMENT OUT TO ENABLE ALERTS === //

strategy.entry(id = "Long", long = true, when = MACDConfirmsLong()) // use function to decide when to go long

strategy.entry(id = "Short", long = false, when = MACDConfirmsShort())

// === CREATE ALERT CONDITIONS === // 

alertup = MACDConfirmsLong()
alertdown = MACDConfirmsShort()

alertcondition(alertup, title='MACD Long', message='Riz MACD says go LONG!')
alertcondition(alertdown, title='MACD Short', message='Riz MACD says go SHORT!')


もっと