QUANTITATIVE TRADING SYSTEM v3.0

TRIPLEMOMENTUM
高频交易系统

多策略并行 · 自适应动量捕捉 · 三重信号共振过滤
专为高波动市场设计的量化交易解决方案

⚠ 极高风险警告

月化300%目标属于极端激进策略,真实交易中爆仓概率极高。本系统仅供研究学习,务必在模拟盘充分回测验证。高杠杆交易可能导致全部本金损失,请根据自身风险承受能力审慎决策。过往回测表现不代表未来收益。

3
并行策略数
M1-M5
交易周期
50+
日均交易次数
1:500
杠杆比率
01 / Strategy Overview
策略名称与核心理念
TripleMomentum™ 采用三重策略并行架构,通过动量突破、均值回归、订单流分析三大引擎协同运作,在高波动市场中捕捉微观价格运动。

策略 A — 闪电突破 (Lightning Breakout)

基于布林带收缩后的波动率爆发捕捉,结合成交量确认的M1周期突破策略。

  • 核心指标:BB(20,2) + ATR(14) + Vol Ratio
  • 触发条件:BB带宽 < 历史20周期最低值
  • 方向确认:收盘突破BB上/下轨 + 成交量 > 1.5倍MA
  • 持仓周期:3-15根K线(M1)
🔄

策略 B — 弹性回归 (Elastic Reversion)

基于RSI极值偏离与VWAP锚定的M5均值回归策略,在超买超卖区域进行逆向交易。

  • 核心指标:RSI(7) + VWAP + Stoch(5,3,3)
  • 触发条件:RSI < 15 或 RSI > 85
  • 方向确认:Stoch金叉/死叉 + 价格偏离VWAP > 2σ
  • 持仓周期:5-25根K线(M5)
📊

策略 C — 量价共振 (Volume-Price Sync)

基于多时间框架EMA排列与OBV背离检测的趋势跟踪策略。

  • 核心指标:EMA(5/13/34) + OBV + MACD(6,13,4)
  • 触发条件:三线顺排 + OBV突破趋势线
  • 方向确认:MACD柱状线二次翻红/翻绿
  • 持仓周期:10-50根K线(M1)
02 / Trading Logic
完整交易逻辑
每笔交易必须经过信号生成 → 多维过滤 → 仓位计算 → 执行入场 → 动态管理 → 条件出场的完整流程。

策略 A:闪电突破 — 完整逻辑

周期M1
BB周期20
BB偏差2.0σ
ATR周期14
成交量MA20
带宽阈值历史20期最小

做多入场条件(同时满足):

做空入场条件(同时满足):

出场规则:

策略 B:弹性回归 — 完整逻辑

周期M5
RSI周期7
RSI做多阈值< 15
RSI做空阈值> 85
Stochastic5,3,3
VWAP偏离> 2σ

做多入场条件(同时满足):

做空入场条件(同时满足):

出场规则:

策略 C:量价共振 — 完整逻辑

周期M1
快速EMA5
中速EMA13
慢速EMA34
MACD6,13,4
OBV均线MA(20)

做多入场条件(同时满足):

做空入场条件(同时满足):

出场规则:

03 / Risk Management
完整风险控制体系
五层风控架构:单笔风控 → 策略风控 → 组合风控 → 日度风控 → 系统熔断,确保风险在可控范围内。
风控层级 规则 参数 触发动作 优先级
L1 单笔风控 单笔最大亏损占账户净值比例 ≤ 2% 强制止损平仓 最高
L1 单笔风控 单笔最大持仓时间 策略A:15M1 / B:25M5 / C:50M1 时间止损强平 最高
L2 策略风控 单策略同时最大持仓数 ≤ 3 笔 禁止新开仓 最高
L2 策略风控 单策略连续亏损次数上限 5 次 暂停该策略30分钟
L3 组合风控 全策略总持仓保证金占比 ≤ 净值的60% 禁止所有新开仓
L3 组合风控 同方向总仓位上限 ≤ 总仓位的70% 反向单优先入场
L4 日度风控 当日最大回撤 ≤ 净值的10% 当日全部停止交易 最高
L4 日度风控 当日最大交易次数 ≤ 80 次 当日停止交易
L5 系统熔断 周度最大回撤 ≤ 净值的25% 系统熔断48小时 最高
L5 系统熔断 价差(Spread)异常检测 > 正常值的3倍 暂停交易至价差恢复
L5 系统熔断 滑点异常检测 连续3笔滑点>5点 暂停交易15分钟
🛡

仓位计算公式

Lots = (Equity × RiskPct) / (SL_Points × TickValue × TickSize)

  • Equity = 账户当前净值
  • RiskPct = 单笔风险比例(2%)
  • SL_Points = 止损点数(ATR计算)
  • TickValue = 每点价值
  • 动态调整:净值增长则手数增长,回撤则缩手数
📐

反马丁格尔加仓规则

盈利加仓、亏损减仓,与传统马丁格尔相反。

  • 首笔:基础手数 × 1.0
  • 连续盈利2笔:手数 × 1.3
  • 连续盈利4笔:手数 × 1.6
  • 单笔亏损后:回到基础手数 × 1.0
  • 连续亏损2笔:手数 × 0.7
  • 绝对上限:基础手数 × 2.0
04 / Execution Flow
策略执行流程
📡
Tick数据接收
实时价格流
🔍
K线聚合
M1/M5 构建
📊
指标计算
BB/RSI/EMA/MACD
信号生成
三策略并行扫描
🛡
风控过滤
五层风控检查
🎯
仓位计算
Kelly + ATR 定量
🚀
订单执行
Market Order
📈
持仓管理
追踪止损/部分平仓
05 / Backtest Simulation
模拟权益曲线
以下为策略理想化回测模拟(含滑点和手续费),实际交易中受流动性、滑点、网络延迟等影响,结果可能大幅偏离。
06 / Expert Advisor Code
MT4 / MT5 EA 完整代码
MQL4 — TripleMomentum_EA.mq4
//+------------------------------------------------------------------+
//| TripleMomentum_EA.mq4                                            |
//| 三倍动量高频交易系统 - MT4版                                       |
//| 策略:闪电突破 + 弹性回归 + 量价共振                                |
//+------------------------------------------------------------------+
#property copyright "TripleMomentum Quant Lab"
#property version   "3.00"
#property strict

//=== 全局参数 ===
extern string  Sep1            = "===== 通用参数 =====";
extern double  RiskPercent     = 2.0;     // 单笔风险%
extern int     MaxDailyTrades  = 80;      // 日最大交易次数
extern double  MaxDailyDD      = 10.0;    // 日最大回撤%
extern double  MaxWeeklyDD     = 25.0;    // 周最大回撤%
extern int     MaxSameDir      = 70;      // 同向仓位上限%
extern int     MaxSpreadPts    = 30;      // 最大允许点差
extern int     MagicBase       = 300000;  // Magic基数

extern string  Sep2            = "===== 策略A 闪电突破 =====";
extern bool    EnableStratA    = true;
extern int     A_BBPeriod      = 20;
extern double  A_BBDeviation   = 2.0;
extern int     A_ATRPeriod     = 14;
extern double  A_VolMulti      = 1.5;
extern double  A_SL_ATR        = 1.5;     // 止损ATR倍数
extern double  A_TP_ATR        = 3.0;     // 止盈ATR倍数
extern double  A_TrailATR      = 1.0;     // 追踪止损ATR倍数
extern int     A_MaxBars       = 15;      // 最大持仓K线数
extern int     A_MaxPositions  = 3;

extern string  Sep3            = "===== 策略B 弹性回归 =====";
extern bool    EnableStratB    = true;
extern int     B_RSIPeriod     = 7;
extern double  B_RSILow        = 15.0;
extern double  B_RSIHigh       = 85.0;
extern int     B_StochK        = 5;
extern int     B_StochD        = 3;
extern int     B_StochSlow     = 3;
extern double  B_SL_ATR        = 2.0;
extern int     B_MaxBars       = 25;
extern int     B_MaxPositions  = 3;

extern string  Sep4            = "===== 策略C 量价共振 =====";
extern bool    EnableStratC    = true;
extern int     C_EMAFast       = 5;
extern int     C_EMAMid        = 13;
extern int     C_EMASlow       = 34;
extern int     C_MACDFast      = 6;
extern int     C_MACDSlow      = 13;
extern int     C_MACDSignal    = 4;
extern double  C_SL_ATR        = 0.5;
extern int     C_MaxBars       = 50;
extern int     C_MaxPositions  = 3;

//=== 全局变量 ===
int    g_todayTrades   = 0;
double g_dayStartEquity = 0;
double g_weekStartEquity = 0;
int    g_consecutiveWins = 0;
int    g_consecutiveLoss = 0;
int    g_lastTradeDay = 0;
bool   g_dayHalted = false;
bool   g_weekHalted = false;

//+------------------------------------------------------------------+
//| 初始化                                                            |
//+------------------------------------------------------------------+
int OnInit()
{
   g_dayStartEquity = AccountEquity();
   g_weekStartEquity = AccountEquity();
   g_lastTradeDay = DayOfYear();
   Print("[TripleMomentum] 系统初始化完成 | 净值: ", AccountEquity());
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| 每Tick核心逻辑                                                    |
//+------------------------------------------------------------------+
void OnTick()
{
   // 日期重置
   if(DayOfYear() != g_lastTradeDay)
   {
      g_todayTrades = 0;
      g_dayStartEquity = AccountEquity();
      g_dayHalted = false;
      g_lastTradeDay = DayOfYear();
      if(DayOfWeek() == 1)
      {
         g_weekStartEquity = AccountEquity();
         g_weekHalted = false;
      }
   }

   // 系统级风控检查
   if(g_dayHalted || g_weekHalted) return;
   if(!CheckRiskLimits()) return;
   if(MarketInfo(Symbol(), MODE_SPREAD) > MaxSpreadPts) return;

   // 管理已有持仓(追踪止损 + 时间止损)
   ManageOpenPositions();

   // 只在新K线开始时检测信号
   static datetime lastBar = 0;
   if(Time[0] == lastBar) return;
   lastBar = Time[0];

   // 三策略并行扫描
   if(EnableStratA) CheckStrategyA();
   if(EnableStratB) CheckStrategyB();
   if(EnableStratC) CheckStrategyC();
}

//+------------------------------------------------------------------+
//| 风控检查                                                          |
//+------------------------------------------------------------------+
bool CheckRiskLimits()
{
   // 日度回撤检查
   double dayDD = (g_dayStartEquity - AccountEquity()) / g_dayStartEquity * 100;
   if(dayDD >= MaxDailyDD)
   {
      g_dayHalted = true;
      Print("[风控] 日回撤达限 ", DoubleToStr(dayDD,2), "% — 当日停止交易");
      return false;
   }
   // 周度回撤检查
   double weekDD = (g_weekStartEquity - AccountEquity()) / g_weekStartEquity * 100;
   if(weekDD >= MaxWeeklyDD)
   {
      g_weekHalted = true;
      Print("[风控] 周回撤达限 ", DoubleToStr(weekDD,2), "% — 本周停止交易");
      return false;
   }
   // 日交易次数
   if(g_todayTrades >= MaxDailyTrades) return false;
   return true;
}

//+------------------------------------------------------------------+
//| 仓位计算(基于风险百分比 + 反马丁格尔)                             |
//+------------------------------------------------------------------+
double CalcLots(double slPoints)
{
   if(slPoints <= 0) return MarketInfo(Symbol(), MODE_MINLOT);

   double tickVal  = MarketInfo(Symbol(), MODE_TICKVALUE);
   double tickSize = MarketInfo(Symbol(), MODE_TICKSIZE);
   double equity   = AccountEquity();
   double riskAmt  = equity * RiskPercent / 100.0;

   // 反马丁格尔系数
   double multi = 1.0;
   if(g_consecutiveWins >= 4)       multi = 1.6;
   else if(g_consecutiveWins >= 2) multi = 1.3;
   else if(g_consecutiveLoss >= 2) multi = 0.7;

   multi = MathMin(multi, 2.0);

   double lots = (riskAmt * multi) / (slPoints / tickSize * tickVal);
   lots = NormalizeDouble(lots, 2);
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));
      //仅展示部分
    
MQL5 — TripleMomentum_EA.mq5
//+------------------------------------------------------------------+
//| TripleMomentum_EA.mq5                                            |
//| 三倍动量高频交易系统 - MT5版                                       |
//+------------------------------------------------------------------+
#property copyright "TripleMomentum Quant Lab"
#property version   "3.00"

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Indicators\Indicators.mqh>

//=== 输入参数 ===
input group "===== 通用参数 ====="
input double InpRiskPct       = 2.0;     // 单笔风险%
input int    InpMaxDailyTrades = 80;     // 日最大交易次数
input double InpMaxDailyDD    = 10.0;    // 日最大回撤%
input double InpMaxWeeklyDD   = 25.0;    // 周最大回撤%
input int    InpMaxSpread     = 30;      // 最大允许点差
input ulong  InpMagicBase     = 300000;  // Magic基数

   //仅展示部分