モメンタムブレイクアウト移動平均戦略


作成日: 2023-09-19 16:33:13 最終変更日: 2023-09-19 16:33:13
コピー: 2 クリック数: 628
1
フォロー
1617
フォロワー

概要

この戦略は,移動平均と動量指標の組み合わせに基づいており,トレンド追跡戦略の1つである.それは,特定の周期内の移動平均を計算することによって,市場のトレンド方向を判断する.価格が移動平均を破るとき,トレンドが転じると考えられ,取引することができる.同時に,それは,特定の周期内の継続的な上昇または下降の日数を確認信号として導入し,偽の突破の欺瞞を避ける.

戦略原則

この戦略は主に2つの指標に基づいています.

  1. シンプル・ムービング・アベアンス ((SMA):一定の周期内の閉盘価格平均を計算し,大まかなトレンド方向を判断する.

  2. 継続的な上昇/下降日数: 統計値が継続的に上昇または下降状態にある日数で,トレンドの転換の確認信号として.

具体的には,戦略はまず520日の長さのSMAを計算し,概ねトレンドの方向を表します.価格が上昇してSMAを破れば,上昇する日の数を統計し始めます.価格が下がってSMAを破れば,減少する日の数を統計し始めます.上昇または減少する日の数が27日に達すると,対応する方向の取引を行います.

例えば,価格が上昇してSMAを突破して27日間上昇すると,多取引が行われ,価格が下がってSMAを突破して27日間減少すると,空売り取引が行われる.

優位分析

この戦略は,移動平均と動態指標を組み合わせて,短期市場の騒音に邪魔されることなく,トレンドを効果的に追跡できます.

  1. 長周期SMAを使って大トレンドを判断し,短期的な波動のノイズを効果的に除することができる.

  2. 継続的な上昇/下降の日数の確認信号を増やすことで,短期間の偽の突破に騙されないようにし,不必要な取引を減らすことができます.

  3. トレンドの方向と強さを最大限に捉えるために,トレンドの転換時にのみ取引する.

  4. 規則は明快で実行しやすい,複雑なパラメータの最適化を必要とせず,一般の投資家に適しています.

リスク分析

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

  1. 長期にわたる牛市では,早期参入の機会を逃す可能性があります.

  2. 金融危機の状況では,偽のブレイクが頻繁に発生し,不正取引が多く発生します.

  3. SMAパラメータの設定が不適切である場合,戦略がトレンドの変化に遅い反応を引き起こす可能性があります.

  4. perfusion パラメータが設定されていない場合,取引シグナルが頻繁すぎたり,稀すぎたりする可能性があります.

最適化の方向

この戦略をさらに改善するには,以下の方法があります.

  1. 複数のタイムサイクルのSMAを追加し,複数のサイクルの検証を行い,単一のサイクルの制約を回避する.

  2. MACDなどの他のトレンド指標を追加して,総合的な判断を行い,正確性を向上させる.

  3. パルフュージョンパラメータを最適化し,平衡点を見つけます. 取引信号が頻繁すぎたり,稀すぎることを避けます.

  4. 単一損失を抑えるためのストップ・ロスの策略を増やす.

  5. 組み合わせた量能指標で,量能から逸脱するリスクを回避する.

要約する

この戦略は,全体として,シンプルで実用的なトレンド追跡戦略である.長周期SMAで大トレンドを判断し,トレンド転換のシグナルをパーフュージョンで確認することで,トレンドを効果的に追跡し,騒音に騙されないようにすることができる.ある程度の最適化により,信頼できるトレンド戦略になることができる.しかし,特定の市場状況における限界を注意する必要がある.全体として,この戦略は,取引経験のある投資家に適しており,コンポーネント戦略の一部として使用される.

ストラテジーソースコード
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-18 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


strategy(title="Mbit Moving Average",overlay=true)

length = input(520)
confirmBars = input(27)
price = close
ma = ta.sma(price, length)

bcond = price > ma

bcount = bcond ? nz(bcount[1]) + 1 : 0

scond = price < ma

scount = scond ? nz(scount[1]) + 1 : 0

long =  scount == confirmBars

short = bcount == confirmBars


//Strategy

strategy.entry("long", strategy.long, when=long)

strategy.entry("short",strategy.short, when=short)