マルチタイムフレーム適応型移動平均クロスオーバー戦略


作成日: 2023-10-09 14:56:37 最終変更日: 2023-10-09 14:56:37
コピー: 0 クリック数: 667
1
フォロー
1617
フォロワー

概要

この戦略は,移動均線交差原理に適応した複数の時間枠を利用したトレンド追跡戦略である.この戦略は,同時に,快線,慢線およびMACD指標を利用して取引信号判断を行い,中長線トレンドの追加利益を得ることを目的としている.

原則

この戦略は,主に2つの移動均線交差のシステムとMACD指標の組み合わせの適用に基づいています. 2つの移動均線交差システムは,短期平均EMAと長期平均EMAで構成され,それぞれ短期平均と長期平均を計算しています. 速線を横切ると,買い信号が生じ,価格が下落して転落したことを示し,多頭ポジションを確立できます. 速線を横切ると,価格が下落して転落したことを示し,売り信号が生じ,平仓を離れることができます. MACD指標は,それぞれ短期と長期EMAEMAの差値とその値の差値であるDIF線とDEA線で構成されています.

この戦略は,双移動均線のトレンド判断とMACDの動量変換信号を融合させ,中長線のトレンド利得を得ながら,偽突破を効果的にフィルターすることができる.具体的には,速線上での遅線を横切ると,MACD柱が同時に緑に変えた場合,より信頼性の高い多重信号が生成される.逆に,速線下での遅線を横切ると,MACD柱が同時に赤に変えた場合,より強い空白信号が生成される.

さらに,この戦略は,パラメータ自在化機能も導入している.パラメータ最適化過程で,速線周期,慢線周期およびMACDパラメータは,異なる時間帯の効果に応じて自動的に調整され,戦略が異なる状況下で最適なパフォーマンスを得ることを保証する.

利点

  1. 統合双均線システムとMACD指標で,複数の要因を統合して意思決定を行い,騒音や偽信号に惑わされないようにする.

  2. 適応パラメータ機能を使用し,市場変化に合わせてパラメータを動的に調整し,取引決定を自動的に最適化することができます.

  3. 中長線トレンドを把握し,波動的な市場の偽突破をフィルターし,トレンドの動きで追加利益を得る.

  4. タイムフレームの分析により,より大きなレベルのトレンドの方向性を特定できます.

  5. 策略論理は明確でシンプルで,コード構造は最適化され,理解し,変更しやすく,異なるニーズに合わせて調整されている.

リスク

  1. 双均線システムはカートン・ウィップソーのリスクがあり,震動的な状況には適用されない.傾向がより明らかな株と時間帯を選択すべきである.

  2. MACDは遅滞性があり,急激な変化のトレンドを追跡するのに適していないので,他の指標と組み合わせて使用すべきである.

  3. パラメータ最適化には十分な回測周期が必要で,過適合を避けるために厳格なリスク評価を行う.

  4. 長期にわたってポジションを保持する際には,突発的な出来事から生じるシステミックなリスクに注意し,適切なタイミングで外出を止めることが必要です.

  5. 適応パラメータ機能が過度に最適化されている可能性があり,パラメータを頻繁に調整することを避けるために充分検証する必要があります.

最適化の方向

  1. 異なる平均線の組み合わせをテストし,ノイズをフィルターし,トレンドに従う平均線パラメータを選択します.

  2. MACDの複数のパラメータを試すことができ,前もって反応する傾向転換点の組み合わせパラメータを見つけることができる.

  3. トレンド指標をフィルターとして加え,トレンドが不明なときに取引を一時停止し,whipsawを回避できます.

  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!')