【Caius 3.6 EA MT4】EA采用多重开仓逻辑,按优先级顺序执行

| 发表于 2 小时前 | 显示全部楼层 |复制链接
Caius 3.6 EA 策略分析报告
概述
Caius 3.6 是一个基于MetaTrader 4平台的智能交易专家顾问(EA),集成了多种先进的技术分析方法和风险管理策略。该EA的主要特点包括:

多重技术指标融合:结合ADX、RSI、布林带、斐波那契回调等指标
AI趋势学习系统:使用神经网络进行市场趋势预测
订单流分析:实时分析买卖力量对比
动态风险管理:包含马丁格尔策略、固定止损、百分比止损等
趋势过滤机制:支持多种趋势确认条件
1. 基本结构分析
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. 核心策略逻辑
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);
}
3. 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. 订单流分析系统
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. 风险管理系统
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. 程序执行流程
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. 关键函数分析
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. 优势与特点
8.1 技术优势
多策略融合:传统网格 + 趋势跟踪 + AI预测
自适应算法:动态权重调整,根据市场状态优化
多重风控:固定止损 + 百分比止损 + 每日限制
智能化决策:AI学习历史数据,预测趋势
8.2 实用特点
可视化界面:实时显示账户状态和市场指标
参数可调:丰富的输入参数,支持个性化配置
稳定性保障:完善的错误处理和异常保护
84140f053b314243f83526f5b51a1fa1_20251115151024772-3.jpeg
dab541352e27d08b43ecb233a0035e9f_20251115151029634-2.jpeg
filetype

Caius 3.6.ex4

120.7 KB, 下载次数: 0, 下载积分: 活跃度 -5 售价: 3 H币  [记录]  [购买]

评分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN    参与人数:0    我的评分:未评 下载时遇到问题?
举报

评论 使用道具

精彩评论2

djwrm
D
| 发表于 半小时前 | 显示全部楼层
现在的你应该是百万富翁了吧
举报

点赞 评论 使用道具

wlzfs
D
| 发表于 18 分钟前 | 显示全部楼层
这个策略逻辑通
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册