Caius 3.6 EA MT4
Caius 3.6 EA 策略分析报告
概述
Caius 3.6 是一个基于MetaTrader 4平台的智能交易专家顾问(EA),集成了多种先进的技术分析方法和风险管理策略。该EA的主要特点包括:
多重技术指标融合:结合ADX、RSI、布林带、斐波那契回调等指标
AI趋势学习系统:使用神经网络进行市场趋势预测
订单流分析:实时分析买卖力量对比
动态风险管理:包含马丁格尔策略、固定止损、百分比止损等
趋势过滤机制:支持多种趋势确认条件
- 基本结构分析
1.1 输入参数配置
// 通用设置
input double 风险比 = 0.001; // 风险比(每100美元账户资金的交易手数)
input double 加倍点数 = 0.001; // 加倍点数(已弃用)
input int 距离 = 20.0; // 基础开仓距离(点数)
input double 基础加仓距离 = 10.0; // 基础加仓距离
input double 马丁倍率 = 1.3; // 马丁格尔倍率
input int inFixed_SL = 100000; // 固定止损金额(美元)
input double inPercentage_SL = 100; // 百分比止损
安全机制:
仅允许指定账户使用
内置时间限制,过期后自动停止 - 核心策略逻辑
2.1 开仓条件分析
EA采用多重开仓逻辑,按优先级顺序执行:
2.1.1 基础开仓逻辑(传统网格策略)
// 多头开仓条件
if (Cek_Loss_daily() == false && // 每日亏损检查
iOpen(NULL,0,0) < iClose(NULL,0,0) && // K线为阳线
Bid >= PricBuyLine && // 价格突破买入线
LastType() != OP_BUY && // 最后订单不是多单
Count(-1) == 0) { // 无持仓订单
// 执行开仓
}
2.1.2 趋势方向开仓(高级策略)
当启用启用趋势方向开仓时,优先执行趋势分析:
bool OpenTradeByTrend() {
// 1. 更新指标状态
UpdateIndicatorStatus();
// 2. 计算综合趋势得分
double trend_score = 0;
// ADX趋势强度 (权重0.35)
// RSI超买超卖状态 (权重0.25)
// 布林带状态 (权重0.25)
// 均线交叉状态 (权重0.15)
// 斐波那契回调判断 (权重0.2)
// 3. 根据得分决定开仓方向
if (trend_score > 0.5) {
// 开多仓
} else if (trend_score < -0.5) {
// 开空仓
}
}
2.1.3 订单流增强开仓
当启用启用订单流分析时,进一步优化开仓方向:
if(启用订单流分析) {
if(orderFlow.buyPower > orderFlow.sellPower) {
// 买入信号强,开多单
} else {
// 卖出信号强,开空单
}
}
2.2 技术指标体系
2.2.1 ADX指标(平均趋向指数)
周期:ADX周期 = 12(默认)
阈值:ADX阈值 = 25(默认)
作用:判断市场趋势强度,ADX > 25表示有趋势
2.2.2 RSI指标(相对强弱指数)
周期:RSI_Period = 14(默认)
超买阈值:RSI_Overbought = 70
超卖阈值:RSI_Oversold = 30
作用:识别超买超卖状态
2.2.3 布林带指标
周期:BB_Period = 20
标准差倍数:BB_Deviation = 2.0
作用:判断价格相对位置和波动性
2.2.4 ATR指标(平均真实波幅)
周期:ATR周期 = 7
作用:动态调整加仓距离
2.2.5 斐波那契回调
作用:判断价格在斐波那契水平上的位置
关键水平:38.2%、50%、61.8%
2.3 动态加仓系统
2.3.1 传统马丁格尔策略
Lot = Lot pow(马丁倍率, orderCount); // 每次亏损后按倍率增加手数
2.3.2 递增倍数加仓
input bool EnableIncrementalMartingale = false; // 启用递增倍数加仓
input double InitialMultiplier = 1.0; // 初始倍数
input double IncrementStep = 0.1; // 递增步长
input double MaxMultiplier = 1.5; // 最大倍数
input int BaseLotsCount = 3; // 基础手数单数
2.3.3 动态距离调整
double GetDynamicDistance() {
if (!启用动态加仓距离) return 基础加仓距离;
double atrValue = iATR(NULL, 0, ATR周期, 1);
double adxValue = GetADXValue();
// 动态调整波动敏感系数
double dynamicCoefficient = 波动系数 (1 + MathMin(adxValue, 50) / 100);
double 动态距离 = 基础加仓距离 + (atrValue / _Point dynamicCoefficient);
return MathMax(动态距离, 基础加仓距离 0.5);
}
- AI趋势学习系统
3.1 系统架构
struct AITrendLearner {
double weights[][]; // 神经网络权重
double biases[][]; // 神经网络偏置
int layers; // 网络层数
int neuronsPerLayer; // 每层神经元数
};
3.2 学习参数配置
input bool 启用AI趋势学习 = true; // 启用AI趋势学习
input int 学习周期 = 1000; // 历史数据学习周期
input int 预测周期 = 20; // 未来预测周期
input double 学习率 = 0.01; // 学习率
input int 神经网络层数 = 3; // 神经网络隐藏层
input int 每层神经元 = 10; // 每层神经元数量
3.3 特征提取
void ExtractFeatures(int shift, double &features[]) {
// 价格数据特征
features[0] = iClose(Symbol(), 0, shift);
features[1] = iHigh(Symbol(), 0, shift) - iLow(Symbol(), 0, shift);
// 技术指标特征
features[2] = iADX(Symbol(), 0, ADX周期, PRICE_CLOSE, MODE_MAIN, shift);
features[3] = iRSI(Symbol(), 0, RSI_Period, PRICE_CLOSE, shift);
// 布林带特征
features[4] = iBands(Symbol(), 0, BB_Period, BB_Deviation, 0, PRICE_CLOSE, MODE_UPPER, shift);
features[5] = iBands(Symbol(), 0, BB_Period, BB_Deviation, 0, PRICE_CLOSE, MODE_LOWER, shift);
// 移动平均特征
features[6] = iMA(Symbol(), 0, 趋势均线周期, 0, MODE_SMA, PRICE_CLOSE, shift);
}
3.4 预测逻辑
double PredictTrend(double &features[]) {
// 前向传播
double layerOutput[];
ArrayCopy(layerOutput, features);
for(int i = 0; i < layers; i++) {
layerOutput = ForwardPass(layerOutput, i);
}
// 返回预测结果(0-1之间)
return layerOutput[0];
} - 订单流分析系统
4.1 数据结构
struct OrderFlowData {
double buyPower; // 买入力量
double sellPower; // 卖出力量
string flowReason; // 分析原因
};
4.2 权重配置
input bool 启用订单流分析 = true; // 启用订单流分析
input double 订单流权重 = 0.6; // 订单流分析权重
input double 技术指标权重 = 0.4; // 技术指标权重
4.3 动态权重调整
struct DynamicWeights {
double trend_weight; // 趋势权重
double flow_weight; // 订单流权重
double ai_weight; // AI权重
};
DynamicWeights GetDynamicWeights() {
// 根据市场波动率动态调整权重
double volatility = iATR(Symbol(), 0, 14, 0) / iClose(Symbol(), 0, 0);
if(volatility > 0.02) { // 高波动期
return {0.3, 0.5, 0.2}; // 增加订单流权重
} else { // 低波动期
return {0.4, 0.3, 0.3}; // 平衡权重
}
} - 风险管理系统
5.1 多重止损机制
5.1.1 固定金额止损
if(Calculate <= -inFixed_SL) {
// 关闭所有订单
}
5.1.2 百分比止损
double Percentage = NormalizeDouble((inPercentage_SL/100) * Balance, 2);
if(Calculate <= -Percentage) {
// 关闭所有订单
}
5.1.3 每日亏损限制
bool Cek_Loss_daily() {
double dailyLoss = -ProfitDey(-1);
return (dailyLoss >= DailyProfitLimit);
}
5.2 最大浮亏监控
// 实时更新各种周期的最大浮亏
MaxDrawdownDay = MathMax(MaxDrawdownDay, currentDrawdown);
MaxDrawdownYesterday = MathMax(MaxDrawdownYesterday, currentDrawdown);
MaxDrawdownWeek = MathMax(MaxDrawdownWeek, currentDrawdown);
MaxDrawdownMonth = MathMax(MaxDrawdownMonth, currentDrawdown);
5.3 交易时间限制
input int TimeStart = 0; // 开始时间(小时)
input int TimeEnd = 23; // 停止时间(小时) - 程序执行流程
6.1 初始化阶段(OnInit)
许可证验证
检查账户ID是否匹配
检查EA是否过期
参数初始化
设置图表显示属性
初始化全局变量
计算点值和小数位数
指标初始化
创建价格参考线
初始化斐波那契水平
初始化AI学习系统
训练历史数据
6.2 主循环阶段(OnTick)
graph TD
A[开始OnTick] --> B[许可证和时间检查]
B --> C[每日收益限制检查]
C --> D[计算动态风险参数]
D --> E[更新指标状态]
E --> F{是否有持仓?}
F -->|无| G[开仓逻辑]
F -->|有| H[平仓逻辑]
G --> I[CloseAll检查]
H --> I
I --> J[更新信息面板]
J --> K[结束]
6.2.1 开仓逻辑详细流程
基础条件检查
每日亏损限制
K线状态(阴阳线)
价格位置(突破参考线)
订单状态(避免重复开仓)
高级策略判断
趋势方向开仓(优先级最高)
订单流分析优化
AI预测确认
动态手数计算
基础风险计算
马丁格尔倍数调整
递增倍数应用
6.2.2 平仓逻辑
被动平仓:达到止损条件时自动平仓
主动平仓:无固定止盈,依靠动态止损
6.3 指标更新流程
每10个tick执行一次:
更新所有技术指标值
计算趋势状态
更新订单流数据
刷新信息面板显示
- 关键函数分析
7.1 OpenTradeByTrend() – 趋势开仓函数
功能:根据多重指标计算趋势得分,决定开仓方向
算法流程:
更新所有指标状态
计算ADX趋势强度得分(权重35%)
计算RSI超买超卖得分(权重25%)
计算布林带位置得分(权重25%)
计算均线交叉得分(权重15%)
计算斐波那契位置得分(权重20%)
综合评分决定开仓
7.2 ShouldOpenPosition() – 综合开仓判断
功能:整合趋势、订单流、AI预测的综合判断
评分机制:
趋势得分:ADX强度评估
订单流得分:买卖力量对比
AI得分:神经网络预测结果
最终得分 > 0.3 时允许开仓
7.3 GetDynamicDistance() – 动态距离计算
功能:根据市场波动率动态调整加仓距离
计算公式:
动态距离 = 基础加仓距离 + (ATR值 × 波动系数 × ADX调整)
7.4 CloseAll() – 风险平仓函数
功能:监控账户亏损,执行强制平仓
平仓条件:
固定金额亏损 ≥ inFixed_SL
百分比亏损 ≥ inPercentage_SL
- 优势与特点
8.1 技术优势
多策略融合:传统网格 + 趋势跟踪 + AI预测
自适应算法:动态权重调整,根据市场状态优化
多重风控:固定止损 + 百分比止损 + 每日限制
智能化决策:AI学习历史数据,预测趋势
8.2 实用特点
可视化界面:实时显示账户状态和市场指标
参数可调:丰富的输入参数,支持个性化配置
稳定性保障:完善的错误处理和异常保护 - 潜在风险与建议
9.1 风险点分析
马丁格尔风险:连续亏损时手数倍增,可能导致重大亏损
AI过拟合:神经网络可能对历史数据过拟合
市场变化:策略参数可能需要定期调整
9.2 使用建议
小额测试:建议先用小额资金测试策略表现
参数优化:根据不同品种和市场环境调整参数
风险控制:严格控制单次交易和每日总风险
监控重要:定期检查策略表现,及时调整


