
複数のタイムSMA-EMA交差量策略は,単純な移動平均 (SMA) と指数移動平均 (EMA) の交差信号を組み合わせ,複数のタイムフィルターとRSI指標による補助判断を行う技術分析策略である.この策略の核心思想は,EMA15とSMA60の交差点を入場場として捉え,信号を長期トレンドの参考としてEMA200に導入し,より高いタイムのEMA200と組み合わせて取引方向をフィルターし,最終的にRSI指標による過剰な買い買い区域の取引を回避することである.さらに,策略は,完善したストップ・ロースと尾行ストップ・メカニズム,および取引時間の制御を設計し,総合的な取引システムを形成している.
この戦略の核心となる原則は,以下の技術分析の構成要素に基づいています.
移動平均クロスシステム:
複数のタイムフィルター:
RSIフィルター:
リスク管理システム:
戦略の取引論理は”トレンドフォロー+マルチ確認”の考え方に従い,多層のフィルタリングメカニズムによって高確率の方向での取引のみを保証し,厳格なリスク管理措置によって資金の安全性を保護します.
この戦略は,コードを深く分析することで,以下の顕著な利点があります.
複数の認証メカニズム短期移動平均の交差,長期のトレンド判断とRSIフィルタリングを組み合わせて,三重確認機構を形成し,信号品質を大幅に向上させ,偽ブレイクと誤信号を減少させる.
異なる市場環境への適応パラメタリックな設計により,戦略は,異なる市場環境と取引品種に合わせて柔軟に調整できます.例えば,移動平均周期,RSI値などの調整などです.
リスクのコントロール:
取引時間管理: 自動で閉じる前に平仓を指定し,夜間のリスクと閉じる波動による不確実性を回避し,特に日中のトレーダーに適しています.
高時間軸のトレンドフィルター: より高い時間軸のトレンド判断を導入することで,取引の方向が大きなトレンドと一致することを確認し,勝率を向上させる.
モジュール化デザイン戦略の各コンポーネント (信号生成,フィルタリング機構,リスク管理) が明確に分離され,理解と調整が容易になり,その後最適化と拡張が容易になります.
この戦略は包括的に設計されていますが, 潜在的リスクは以下の通りです.
パラメータ感度策略の効果は,移動平均周期,RSIの値などのパラメータ設定に大きく依存している.異なる市場環境は,異なるパラメータの組み合わせを必要とし,パラメータの最適化が不適切である場合,過去データに過度に適合する可能性があります.
遅滞の問題移動平均は本質的に遅滞の指標であり,激しい波動または急速な逆転の市場では,遅い信号を生じ,最適な入場点を逃すか,大きな撤退を引き起こす可能性があります.
横盤市場の不振: 明確なトレンドがない横断整理市場では,移動平均の交差が頻繁に偽信号を生じ,連続的な損失を引き起こす可能性があります.
技術指標への過度な依存戦略は技術指標のみに基づいており,基本的要因や市場情勢を考慮していないため,重大ニュースやイベントが駆動する市場では不十分である可能性があります.
固定ストップリスク固定ポイントストップは,波動性の変化のある市場では柔軟性が不足し,波動性の拡大時にストップは過度に緩やかになり,波動性の収縮時にストップは過度に緊迫する可能性があります.
解決策は
戦略の既存の枠組みに基づいて,以下は検討すべきいくつかの最適化方向です.
変動率の自己適応メカニズム:
複数の時間軸の一致性を強化する:
取引量確認:
動態参数最適化:
市場状況の分類:
機械学習の最適化について:
これらの最適化方向は,戦略の欠陥を改善し,より広範な市場環境で安定したパフォーマンスを維持します.
マルチタイム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()