日中二重移動平均取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-27 16時36分31秒
タグ:

img

概要

これは,二重移動平均をベースとした簡単な日中取引戦略である.異なる期間を持つ2つの単純な移動平均を使用し,移動平均が交差するときに長または短ポジションを取ります.シグナルが変化するときに二重量を使用してポジションが逆転します.すべてのオープンポジションは,日中セッションが終了するときに二乗されます.

戦略の論理

この戦略は10日間の単純な移動平均と40日間の単純な移動平均を使用する. 短い期間の移動平均が長い期間の1を超えるとロングになり,逆クロスオーバーが発生するとショートになります. シグナルが変化すると,ポジションはダブル量を使用して閉鎖され,逆ポジションが開始されます. 取引は,定義された日中セッション中に移動平均信号に従ってのみ行われます. 残りのオープンポジションはセッション終了時に二乗されます.

この戦略は,主に短期間移動平均値の価格変化をより速く把握する能力を利用する.ショートSMAが長いSMAを超えると,短期間の価格上昇傾向を示し,それ故にロングはこれを把握することができる.逆向きは短期間の下落傾向を示します.ダブル量逆向きエントリは利益の可能性を拡大します.

利点

  1. シンプルで明快な戦略論理 分かりやすく実行できます
  2. 二重MAクロスオーバーを用いて短期的な価格動向を効果的に把握する.
  3. 昼間のセッションに制限することで,一夜間のリスクを回避します.
  4. 二重量リバース取引を使って 利益の可能性を拡大します

リスク分析

  1. 短期戦略として騒音取引の誤りに 傾向があります
  2. 損失を倍増させるかもしれません
  3. 長期間の収益性の高いトレンドを見逃すリスクがあります

リスク軽減

  1. 誤った信号を減らすために MA パラメータを最適化します
  2. フィルターを他の指標で追加します
  3. 量パラメータを最適化する
  4. 日中のセッションの期間を緩めてください

増進 の 機会

  1. MAパラメータを最適化して より多くの組み合わせをテストします

  2. 偽信号を減らすためにMACDの確認のようなフィルターを追加します

  3. パラメータ調整によって逆入力量倍数を最適化します

  4. テストは,日中のセッション期間を延長して,より良い収益を得ます.

結論

この戦略は,MAクロスオーバー信号から形成された短期的トレンドをキャッチし,二重量リバース取引を使用して利益を拡大し,日中セッションでの取引のみで一夜間のリスクを制限する.パラメータのさらなる最適化とフィルターを追加することで戦略のパフォーマンスを改善することができます.全体として,日中取引に適した効果的な戦略です.


/*backtest
start: 2024-02-19 00:00:00
end: 2024-02-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Pritesh-StocksDeveloper

//@version=4
strategy("Moving Average - Intraday", shorttitle = "MA - Intraday", 
     overlay=true, calc_on_every_tick = true)

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Short & Long moving avg. period
var int i_shortPeriod = input(title = "Short MA Period", type = input.integer, 
     defval = 10, minval = 2, maxval = 20, confirm=true)
var int i_longPeriod = input(title = "Long MA Period", type = input.integer, 
     defval = 40, minval = 3, maxval = 120, confirm=true)

// A function to check whether the bar is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0

// Calculate moving averages
shortAvg = sma(close, i_shortPeriod)
longAvg = sma(close, i_longPeriod)

// Plot moving averages
plot(series = shortAvg, color = color.red, title = "Short MA", 
     linewidth = 2)
plot(series = longAvg, color = color.blue, title = "Long MA", 
     linewidth = 2)

// Long/short condition
longCondition = crossover(shortAvg, longAvg)
shortCondition = crossunder(shortAvg, longAvg)

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

// Long position
strategy.entry(id = "Long", long = strategy.long, 
     when = longCondition and intradaySession)

// Short position
strategy.entry(id = "Short", long = strategy.short, 
     when = shortCondition and intradaySession)

// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

もっと