5日間の移動平均金十字モメンタム戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-21 12:16:22
タグ:

概要

この戦略は,5日間と78日間のMA交差を用い,短期的な価格ブレイクを捕捉することを目的としたモメンタム・チェッシング・シグナルを生成する.

戦略の論理

  1. 3日目,78日目,195日目の中間移動を計算する.

  2. 3日間のクロスオーバー 195日間のトリガー 購入信号

  3. 3日間の 78日間の上位と 78日間の 195日間の上位を考慮すると,上昇傾向チャネルが形成され,購入も開始されます.

  4. 6ATRダイナミック・プロフィート・テイクラインを設定し 価格がラインを下回ったら売る

  5. 3日後に195日以下に戻ると 信号を売る

利点

  1. 複数のMAクロスで 偽の突破を効果的にフィルタリングする

  2. ダイナミックな利益は 鞭策を避けます

  3. バックテストでは,取引ごとに平均2時間の保持時間が示され,短期的なモメント取引に適しています.

  4. 最大減量20%程度

リスク

  1. 固定MFAパラメータは 変化する市場に適応できない.

  2. 1年間のサンプル期間が限られており,戦略の検証にはより大きなデータが必要です.

  3. リスク管理のために 利得とストップロスのパラメータを最適化する必要があります

  4. 価格格差に適応できない

  5. 高額な取引費用がかかる可能性が高い

改良

  1. 最適化のために異なるMAコンボをテストします

  2. リスク・リターンバランスのために 利得とストップ・ロスを最適化します

  3. 侵入フィルターを設定して 閉じ込められる可能性を減らす

  4. ポジションのサイズを最適化 力のピラミッド

  5. 異なる製品とより長い時間枠でテストします

  6. マンテ・カルロシミュレーションで 最大引き上げを評価する

概要

この戦略は,MAのクロスで上昇傾向を特定し,良好なバックテスト結果を持つダイナミックな利益停止ルールを設定する.しかし,限られたサンプル期間,パラム安定性は検証され,ギャップで失敗する.より大きなデータセットに対するさらなるバックテスト,誤った信号を減らすためのより多くのフィルター,最適化された利益停止パラメーター,取引コストの評価を必要とする.包括的な最適化と検証テストを通過した場合,強力な短期的なモメンタム追いかけるシステムになることができます.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// © FinTasticTrading 2021/2/14
// This is a 5 day moving average crossing long strategy, used in short term momentum trading strategy.
// Momentum trading Strategy: When S&P 500 index is at up trend (or above 60 sma), buy 10+ stocks in top 20% stock RS ranking at equal weight using this MA5X_L strategy. Change stocks when any stock exited by algorithm.  
// Back test start since 2020/7/1, each long entry for condition 1 is $30000, condition 2 is $20000, with max of 2 long positions.
// Setup: 10 minutes chart
// Buy condition 1) 3 wma cross up 180 wma (5day) 2) 3wma > 60wma > 180wma UP Trend Arrangement (UTA)
// Exit condition 1) 3 wma cross under 180 wma 2) position profit > 20% and 3 wma cross under 6 ATRs line (green)
//@version=4

strategy("MA5X_L", overlay=true, pyramiding=2,default_qty_type=strategy.cash, default_qty_value=100000)
s_len = input( 3 )
m_len = input( 78 )  // 2 day moving average
l_len = input( 195)  // equal to 5 Day moving average
xl_len = input(390)  // 10 day moving average
//Draw WMAs
s_ma = wma(close,s_len)
m_ma = wma(close,m_len)
l_ma = wma(close,l_len)
xl_ma = sma(close,xl_len)
plot(s_ma, color=color.yellow, linewidth=2)
plot(m_ma, color=color.fuchsia, linewidth=2)
plot(l_ma, color=color.blue, linewidth=2)
plot(xl_ma, color = color.gray, linewidth=2)

//ATR Stop Profit , length = 40 or 1 day
Periods = input(title="ATR Period", type=input.integer, defval=40)
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=6.0)
sl=hl2-(Multiplier*atr(Periods))
sl1 = nz(sl[1], sl)
sl := s_ma[1] > sl1 ? max(sl, sl1) : sl
plot(strategy.position_size > 0 ? sl:na, title="Stop Loss", style=plot.style_linebr, linewidth=2, color=color.green)

//Backtest since
condition100 = time>=timestamp(2020, 07, 01, 00, 00) 

//Long Entry Condition 1 : s_ma Cross UP l_ma
if crossover(s_ma, l_ma) and condition100
    strategy.entry("X Up", strategy.long, qty = 30000/close, comment="X Up")

//Long Entry Condition 2 : s_ma > m_ma > l_ma
condition31 = s_ma>m_ma and m_ma>l_ma
condition32 = condition31[1]==false and condition31 == true and condition100
strategy.entry("UTA", strategy.long, qty = 20000/close, when = condition32, comment="UTA")

//Long Exit Condition 1 :  3 wma cross under 180 wma
condition50 = crossunder(s_ma, l_ma)
strategy.close_all(when = condition50, comment="X Dn")

//Long Exit Condition 2 : position profit > 20% and 3 wma cross under 6 ATRs line (green)
strategy.close_all(when = crossunder(close,sl) and strategy.openprofit>30000*0.2, comment="Stop")


もっと