マルチタイムフレームSMA-EMAクロスオーバー定量戦略

SMA EMA RSI HTF TP/SL Trailing Stop
作成日: 2025-06-16 14:55:14 最終変更日: 2025-06-16 14:55:14
コピー: 4 クリック数: 257
2
フォロー
319
フォロワー

マルチタイムフレームSMA-EMAクロスオーバー定量戦略 マルチタイムフレームSMA-EMAクロスオーバー定量戦略

概要

複数のタイムSMA-EMA交差量策略は,単純な移動平均 (SMA) と指数移動平均 (EMA) の交差信号を組み合わせ,複数のタイムフィルターとRSI指標による補助判断を行う技術分析策略である.この策略の核心思想は,EMA15とSMA60の交差点を入場場として捉え,信号を長期トレンドの参考としてEMA200に導入し,より高いタイムのEMA200と組み合わせて取引方向をフィルターし,最終的にRSI指標による過剰な買い買い区域の取引を回避することである.さらに,策略は,完善したストップ・ロースと尾行ストップ・メカニズム,および取引時間の制御を設計し,総合的な取引システムを形成している.

戦略原則

この戦略の核心となる原則は,以下の技術分析の構成要素に基づいています.

  1. 移動平均クロスシステム

    • 15サイクルEMAと60サイクルSMAの交差を主要信号として採用
    • EMA15のSMA60を突破して多信号を形成する
    • EMA15の下のSMA60を通過して空白信号を形成
    • 200周期EMAは長期トレンドの基準線として
  2. 複数のタイムフィルター

    • より高い時間軸 (デフォルトは60分) を導入したEMA200がトレンド判断ツールとして
    • 価格がEMA200上位にある場合にのみ,追加が許可されます.
    • 価格が高時帯EMA200以下である場合にのみ空白が許可される
    • このフィルタリングメカニズムは,取引の方向がより大きな時間帯のトレンドと一致することを保証します.
  3. RSIフィルター

    • 14サイクルRSIを使用し,過剰な買い/売却の領域にポジションを入れないこと
    • RSIが30を下回ると,空白を制限する超売り領域です.
    • RSIが70を超えると,過剰買い領域で,過剰を制限します.
    • このデザインは逆転取引を避け,入場品質を向上させるのに役立ちます.
  4. リスク管理システム

    • 柔軟な停止設定,固定点数またはパーセント方式をサポート
    • 固定ポイントの止損設定
    • 追随停止メカニズムで,既に利益が固定されている
    • 市場が閉じる前にポジションを保持しないように,取引時間をコントロールする

戦略の取引論理は”トレンドフォロー+マルチ確認”の考え方に従い,多層のフィルタリングメカニズムによって高確率の方向での取引のみを保証し,厳格なリスク管理措置によって資金の安全性を保護します.

戦略的優位性

この戦略は,コードを深く分析することで,以下の顕著な利点があります.

  1. 複数の認証メカニズム短期移動平均の交差,長期のトレンド判断とRSIフィルタリングを組み合わせて,三重確認機構を形成し,信号品質を大幅に向上させ,偽ブレイクと誤信号を減少させる.

  2. 異なる市場環境への適応パラメタリックな設計により,戦略は,異なる市場環境と取引品種に合わせて柔軟に調整できます.例えば,移動平均周期,RSI値などの調整などです.

  3. リスクのコントロール

    • 複数の停止モードをサポートします.
    • 固定ストップ保護資金
    • ストップ・ロストは利益に繋がる
    • この多層のリスク管理メカニズムは,単一の取引の最大リスクを効果的に制御します.
  4. 取引時間管理: 自動で閉じる前に平仓を指定し,夜間のリスクと閉じる波動による不確実性を回避し,特に日中のトレーダーに適しています.

  5. 高時間軸のトレンドフィルター: より高い時間軸のトレンド判断を導入することで,取引の方向が大きなトレンドと一致することを確認し,勝率を向上させる.

  6. モジュール化デザイン戦略の各コンポーネント (信号生成,フィルタリング機構,リスク管理) が明確に分離され,理解と調整が容易になり,その後最適化と拡張が容易になります.

戦略リスク

この戦略は包括的に設計されていますが, 潜在的リスクは以下の通りです.

  1. パラメータ感度策略の効果は,移動平均周期,RSIの値などのパラメータ設定に大きく依存している.異なる市場環境は,異なるパラメータの組み合わせを必要とし,パラメータの最適化が不適切である場合,過去データに過度に適合する可能性があります.

  2. 遅滞の問題移動平均は本質的に遅滞の指標であり,激しい波動または急速な逆転の市場では,遅い信号を生じ,最適な入場点を逃すか,大きな撤退を引き起こす可能性があります.

  3. 横盤市場の不振: 明確なトレンドがない横断整理市場では,移動平均の交差が頻繁に偽信号を生じ,連続的な損失を引き起こす可能性があります.

  4. 技術指標への過度な依存戦略は技術指標のみに基づいており,基本的要因や市場情勢を考慮していないため,重大ニュースやイベントが駆動する市場では不十分である可能性があります.

  5. 固定ストップリスク固定ポイントストップは,波動性の変化のある市場では柔軟性が不足し,波動性の拡大時にストップは過度に緩やかになり,波動性の収縮時にストップは過度に緊迫する可能性があります.

解決策は

  • 市場や時代を振り返って,安定したパラメータの組み合わせを見つけます.
  • 波動率の自己適応を考慮するストップ・メカニズム
  • 横軸市場における波動率の値などの追加フィルタリング条件
  • 基本的要因や市場情緒指標を組み合わせた強化戦略
  • 取引量確認メカニズムの追加を検討し,信号の質を向上させる

戦略最適化の方向性

戦略の既存の枠組みに基づいて,以下は検討すべきいくつかの最適化方向です.

  1. 変動率の自己適応メカニズム

    • ATR (Average True Range) のインジケータを導入し,ストップとストップオフのレベルを調整する
    • 高波動環境でストップ範囲を拡大し,低波動環境でストップ範囲を緊縮する
    • この自己適応の仕組みは 異なる市場条件に より良く適応できます
  2. 複数の時間軸の一致性を強化する

    • 中間時間帯の確認を追加し”,短期+中期+長期”の3つの時間枠の一致性要求を形成する
    • 取引は,複数のタイムサイクルが一致するときにのみ実行されます.
    • 偽信号のリスクをさらに低減する.
  3. 取引量確認

    • 取引量分析に追加し,信号が表示されたときに取引量を増やすように要求する
    • OBVやChaikin Money Flowのような相対取引量指標を使用できます
    • 取引量確認は,信号の質とブレイク効果を大幅に改善します.
  4. 動態参数最適化

    • パラメータの動的調整メカニズムを実装し,最近の市場パフォーマンスに基づいて移動平均周期とRSIの値を自動的に最適化します.
    • この自己適応的アプローチは,市場の状況の変化に戦略がより適応できるように役立ちます.
  5. 市場状況の分類

    • トレンド市場と振動市場を区別する市場状態認識モジュールを追加
    • 異なる市場状況で異なるシグナル生成とフィルタリングのルール
    • このようなダイナミックな調整により,様々な市場環境における戦略の適応性が向上します.
  6. 機械学習の最適化について

    • 意思決定ツリーやニューラルネットワークなどの機械学習アルゴリズムを使用して入学決定を最適化
    • 季節性,市場情緒,変動率などの要素を考慮します.
    • これは戦略の予測力と適応力を向上させるでしょう

これらの最適化方向は,戦略の欠陥を改善し,より広範な市場環境で安定したパフォーマンスを維持します.

要約する

マルチタイムSMA-EMAクロス量化戦略は,構造が整え,論理が明確である技術分析取引システムである.移動平均クロス信号,マルチタイムトレンドフィルタリング,RSIオーバーバイオーバーセール判断を組み合わせて,多層の取引意思決定フレームワークを形成する.また,戦略には,複数のストップ・ストップ・ロスの方法と取引時間の制御を含む,包括的なリスク管理機構が含まれている.

この戦略の主な優点は,その複数の確認機構と完善なリスク制御である.これは,トレンド市場で優れたパフォーマンスを発揮し,リスクを効果的に制御することを可能にする.しかしながら,この戦略には,パラメータの高感度,横軸市場への劣った適応性などの問題がある.

波動率自己適応機構を導入し,多時間一致性の要求を強化し,取引量確認を増やし,ダイナミックパラメータの最適化を実現するなど,戦略の改善には大きな余地があります.これらの最適化は,戦略が異なる市場環境により良く適応し,全体的な安定性と収益性を向上させるのに役立ちます.

全体として,これは,技術分析の基礎のあるトレーダーに適した,よく設計されたトレンドフォロー戦略です.適切なパラメータ調整と最適化により,それは,特に中長期のトレンドが明確である市場環境で,信頼性の高い取引ツールになることができます.

ストラテジーソースコード
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-15 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy(title="PhaiSinh_SMA & EMA [VNFlow]", overlay=true, slippage=1, backtest_fill_limits_assumption=1, initial_capital=100.000, default_qty_type=strategy.fixed, default_qty_value=4, commission_type=strategy.commission.cash_per_order, commission_value=2700,fill_orders_on_standard_ohlc=true, calc_on_order_fills=true, process_orders_on_close=true)

// === Chỉ báo chính ===
sma60 = ta.sma(close, 60)
ema15 = ta.ema(close, 15)
ema200 = ta.ema(close, 200)
plot(sma60, title="SMA 60", color=color.rgb(227, 10, 251), linewidth=1)
plot(ema15, title="EMA 15", color=color.rgb(246, 222, 11), linewidth=1)
plot(ema200, title="EMA 200", color=color.rgb(13, 141, 245), linewidth=1)

// === Cấu hình thời gian thoát trước khi hết phiên ===
session_close_hour = input.int(14, title="Giờ đóng phiên (24h)")
session_close_minute = input.int(30, title="Phút đóng phiên")
minutes_before_close = input.int(5, title="Số phút thoát lệnh trước đóng phiên")
exit_hour = session_close_hour
exit_minute = session_close_minute - minutes_before_close
exit_hour := exit_minute < 0 ? exit_hour - 1 : exit_hour
exit_minute := exit_minute < 0 ? exit_minute + 60 : exit_minute
cutoff_time = (hour > exit_hour) or (hour == exit_hour and minute >= exit_minute)

// === Bộ lọc RSI ===
use_rsi_filter = input.bool(true, title="Bộ lọc RSI?")
rsi_period = input.int(14, title="Chu kỳ RSI")
rsi_overbought = input.int(70)
rsi_oversold = input.int(30)
rsi_val = ta.rsi(close, rsi_period)

// === Bộ lọc EMA từ HTF ===
use_htf_filter = input.bool(true, title="Bộ lọc EMA HTF?")
htf_tf = input.timeframe("60", title="Khung thời gian EMA cao hơn")
htf_ema = request.security(syminfo.tickerid, htf_tf, ta.ema(close, 200))
ema_trend_up = close > htf_ema
ema_trend_down = close < htf_ema

// === Cài đặt TP/SL/Trailing ===
use_percent_tp = input.bool(false, title="TP theo % (nếu không: tính theo tick)")
tp_value = input.float(1.0, title="Take Profit (tick hoặc %)")
sl_value = input.float(20.0, title="Stop Loss (tick)")
trail_offset = input.int(10, title="Trailing Stop (tick)")

// === Logic tín hiệu vào/ra ===
long_entry = ta.crossover(ema15, sma60) and close >= ema15 and not cutoff_time
short_entry = ta.crossunder(ema15, sma60) and close <= ema15 and not cutoff_time
long_ok = long_entry and (not use_htf_filter or ema_trend_up) and (not use_rsi_filter or rsi_val > rsi_oversold)
short_ok = short_entry and (not use_htf_filter or ema_trend_down) and (not use_rsi_filter or rsi_val < rsi_overbought)

// === Vào lệnh ===
if long_ok
    strategy.entry("Long", strategy.long)
if short_ok
    strategy.entry("Short", strategy.short)

// === Tính TP theo giá nếu chọn % ===
long_tp_price = close * (1 + tp_value / 100)
short_tp_price = close * (1 - tp_value / 100)

// === Thoát lệnh với TP/SL/Trailing ===
if strategy.position_size > 0
    if use_percent_tp
        strategy.exit("Dừng Long %", from_entry="Long", loss=sl_value, limit=long_tp_price, trail_points=trail_offset, trail_offset=trail_offset)
    else
        strategy.exit("Dừng Long Tick", from_entry="Long", loss=sl_value, profit=tp_value, trail_points=trail_offset, trail_offset=trail_offset)

if strategy.position_size < 0
    if use_percent_tp
        strategy.exit("Dừng Short %", from_entry="Short", loss=sl_value, limit=short_tp_price, trail_points=trail_offset, trail_offset=trail_offset)
    else
        strategy.exit("Dừng short Tick", from_entry="Short", loss=sl_value, profit=tp_value, trail_points=trail_offset, trail_offset=trail_offset)

// === Đóng toàn bộ trước phiên ===
if cutoff_time
    strategy.close_all()