移動平均のクロスオーバートレンド戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-12 10:56:57
タグ:

img

概要

この取引戦略は,トレンドトラッキングのための単純な移動平均値と移動平均値クロスオーバーシステムに基づいています. 異なる期間の高速および遅い移動平均値のクロスオーバーを,ロングまたはショートに行くシグナルとして使用します. 速いMAが下から遅いMAを超えると,ロング;速いMAが上から遅いMAを下に越えると,ショートします. この戦略は明らかなトレンドを持つ製品にうまく機能します.

戦略の論理

この戦略は60日間の簡単な移動平均値と200日間の緩やかな移動平均値を使用する.高速MAは短期的なトレンドを反映した価格変化により速く反応し,遅いMAはよりゆっくりと反応し,中長期的トレンドを示します.

低期MMAが低期MMAを下から越えると,短期価格が上昇し,バックスマーケットに入ると信号になります.低期MMAが高期MMAを下から越えると,短期価格が下がり,熊市場に入ると信号になります.

この戦略は,MAクロスオーバーを使用してトレンド方向を決定する. 短期間の価格がより速く上昇すると,ショートMAはロングMAを押し上げ,下から横断する.これは上向きが浮上し,ロングポジションを取るべきであることを意味します.逆に,短期間の価格がより速く下がると,ショートMAはロングMAを引き下げ,上から横断し,ダウントレンドを意味し,ショートポジションを取るべきです.

戦略は,迅速かつ遅いMAクロスオーバーを用いて価格動向の転換点を把握することで,それに応じてロング/ショートポジションを調整することができる.これは戦略のトレンド決定とトレード信号生成の主要な論理である.

利点分析

  • MAクロスオーバーを使用して,短期的な市場騒音によって誤解を招くのを避ける主要な傾向を決定します.
  • 短期的,中長期的,より安定し信頼性の高い時間枠を考慮します.
  • 単純で効果的なトレンド追跡を導入します.例えば,上昇傾向ではロング,下落傾向ではショートです.
  • 移動平均値は広く適用され,分かりやすく,パラメータは柔軟です.
  • リスク管理パラメータは制御されたリスクのために調整可能である.

リスク分析

  • この戦略は 明確な価格動向に基づいています 激しい市場変動の際に 失敗することがあります
  • Whipsawsは,市場変動中に多くの誤った信号を生成し,ポジションの頻繁な開閉を引き起こします.
  • 移動平均値には遅れがあり 価格のターニングポイントが欠けている可能性があります
  • ストップ・ロスの設定が正しくない場合,利回りが狭すぎたり,利回りが広すぎたりすると,利益のポジションを早速退出したり,終了させたりすることがあります.
  • 合理的なパラメータは,異なる製品の特性に合わせて最適化する必要があります.

この戦略を最適化し,安定性を向上させるには,製品波動率に基づくMA期間調整,より複雑な指標を用いたストップ・ロス/テイク・プロフィートの改善,ボリューム・フィルターの追加などの方法が役立ちます.

オプティマイゼーションの方向性

この戦略は,次の側面においてさらに最適化することができる.

  1. 変動頻度が異なる製品に適応するために,迅速かつ遅い MA 期間を最適化します.最適を見つけるためにより多くの組み合わせをテストすることができます.

  2. 誤った信号を減らすために 音量ピークなどのフィルターを追加して 入力条件を改善します

  3. ストップ・ロスの改善や 収益性の向上のために トレイリング・ストップや ダイナミック・テイク・プロフィートの改善

  4. コミッションなどの取引コストを考慮し,より現実的なバックテストのためにコスト評価モジュールを追加します.

  5. 異なる製品に合わせた最適なパラメータの組み合わせを見つけるために デザインパラメータ宇宙

  6. 地元パターン識別を追加し,トレンドターニングポイントを決定し,エントリーと出口のタイミングを改善します.

戦略を体系的に最適化することで 収益性や安定性が大きく向上し 引き上げが減少できます

概要

トレーディング戦略は,典型的なトレンドフォロー戦略であるMAクロスオーバーを使用してトレンドシフトを決定する.この戦略は,長/短信号を生成するために,高速および遅いMA間のクロスオーバーを使用し,両者の組み合わせを通じてトレンド方向を特定する.この戦略は,安定して信頼性があり,トレンドを把握し,理解し,実装するのが簡単です.最適化されると,ほとんどの製品に適応し,基本的な定量的な取引戦略を形成することができます.他の技術指標と組み合わせ,ストップ損失/利益を得る戦略を最適化などにより,収益性と勝利率のさらなる改善を達成することができます.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 10m
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/
// © thebearfib
//
//@version=5
//

strategy("x-over 150d_200d_sma - Free", overlay = true)

repaint = input.bool(defval = false, title = "[RePaint] Uncheck to see real time results") //when you deselect it - it shows what would have happened in real time while trading the system
srcmc   = request.security(syminfo.tickerid, 'D', open, lookahead= repaint ? barmerge.lookahead_on : barmerge.lookahead_off, gaps=barmerge.gaps_off)

fast_length         = input(title="Fast Length", defval=60)
slow_length         = input(title="Slow Length", defval=275)

_fast               = ta.sma(srcmc,  fast_length)
_slow               = ta.sma(srcmc,  slow_length)

plot(_fast, 
  title="Fast SMA", 
  color=color.red,
  linewidth = 1) 

plot(_slow, 
  title="Slow SMA", 
  color=color.white,
  linewidth = 3)
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Calculating  —————————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//
longProfitPerc      = input.float(title="Long Take Profit (%)", minval=0.01, step=1.0, defval=42) * .01
longStopPerc        = input.float(title="Long Stop (%)",        minval=0.01, step=1.0, defval=13)  * .01
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Stop Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longExitPrice  = strategy.opentrades > 0 ? strategy.position_avg_price * (1 + longProfitPerc) : srcmc *  (1 + longProfitPerc)
longStopPrice = strategy.opentrades  > 0 ? strategy.position_avg_price * (1 - longStopPerc)   : srcmc *  (1 - longStopPerc)
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// ————————————————————————————————— Long Conditions   ————————————————————————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
longCondition   = srcmc > _slow and  ta.crossover(_fast, _slow)
closeCondition  =  ta.crossover(srcmc, _slow)  

if (longCondition)
    strategy.entry("Entry (long)", strategy.long, comment="→ 𝗟𝗴 𝗘𝗻𝘁𝗿𝘆")

if (closeCondition)
    strategy.close("Entry (long)", comment=" 𝗟𝗴 𝗘𝘅𝗶𝘁 ←")

if (strategy.position_size > 0)
    strategy.exit(id="XL", limit=longExitPrice, stop = longStopPrice, comment_profit = "Take Profit", comment_loss = "Stop Loss")
//
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
// —————————————————————————————————  Never the End Just the beginning    —————————————————————————————————————————————————
// ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
//

もっと