1评论

1收藏

分享4款国外对冲EA 带源码,谁能汉化给我一份,谢谢

avatar 流云飞雪 | 30 人阅读 | 1 人评论 | 2025-11-11

image.png

分享4款国外对冲EA 带源码,谁能汉化给我一份,谢谢
""
还没有人打赏,支持一下

评论|共 1 个

cttzcl

发表于 2 小时前 | 显示全部楼层

//-------------------------------------------------------------
// Indo Run EA 1.5
// 中文注释版
//-------------------------------------------------------------
// 作者: expat1967 ;) Cheers
// 版权: expat&&Indo Investasi Members
// 论坛链接: expat&&Indo Investasi Forum

#include <stdlib.mqh>   // 标准库:提供基础函数(字符串、数组等)
#include <WinUser32.mqh> // Windows API库:支持网络请求等系统功能

// =============================================================
// 导出变量(EA参数面板可配置)
// =============================================================
extern string Menu = "Indo Run 基础设置";
extern string EAName = "";            // 订单备注(建议留空,避免影响策略)
extern bool IndoRunLabelOn = true;   // 图表信息标签开关(true=显示,false=隐藏)
extern string MagicNumber = "随机魔术号会覆盖手动设置的魔术号";
extern int Magic = 128738;            // 魔术号码(订单识别码,区分不同EA/策略)
extern bool UseRandomMagic = false;   // 随机魔术号开关(true=启用,false=禁用)
extern int RandomMagicLower = 100000; // 随机魔术号最小值
extern int RandomMagicUpper = 200000; // 随机魔术号最大值
extern string DayFilter = "交易日期过滤(无持仓时生效)";
extern bool Monday = true;            // 周一允许交易(无持仓时,false=禁止)
extern bool Tuesday = true;           // 周二允许交易(无持仓时,false=禁止;有持仓则忽略过滤)
extern bool Wednesday = true;         // 周三允许交易
extern bool Thursday = true;          // 周四允许交易
extern bool Friday = true;            // 周五允许交易
extern bool Saturday = true;          // 周六允许交易
extern bool Sunday = true;            // 周日允许交易
extern bool TradeMonthEnd = true;     // 月末允许交易(true=允许)
extern int MonthEndOffset = 3;        // 月末过滤偏移量(31 - Offset = 过滤起始日)
extern bool TradeFirstDayOffMonth = true; // 月初允许交易(true=允许)
extern int DayOffset = 0;             // 月初过滤偏移量(0=1号过滤,1=2号过滤...)
extern double GMTOffset = 0;          // GMT时区偏移(适配经纪商时区)
extern bool TradeNFP = true;          // 非农数据日允许交易(true=允许)
extern bool TradeMondayAfterNFP = true; // 非农后周一允许交易(需开启TradeNFP)
extern bool TradeADP = true;          // ADP数据日允许交易(true=允许)
extern string HourFilter = "交易时间过滤(24小时模式除外)";
extern bool Trading24h = true;        // 24小时交易开关(true=禁用时间过滤)
extern int HoursFrom = 10;            // 交易开始时间(GMT,仅24h关闭时生效)
extern int HoursTo = 6;               // 交易结束时间(GMT,仅24h关闭时生效)
extern string Session_Filter = "仅24小时模式可用:需同时启用两个时段过滤!";
extern string Session_Filter1 = "伦敦时段过滤(GMT)";
extern bool SessionFilter1 = false;   // 伦敦时段过滤开关(需配合SessionFilter2使用)
extern double SF1Hour_On = 5;         // 伦敦时段开始小时(GMT)
extern double SF1MinuteOn = 45;       // 伦敦时段开始分钟
extern double SF1Hour_Off = 9;        // 伦敦时段结束小时(GMT)
extern double SF1MinuteOff = 0;       // 伦敦时段结束分钟
extern string Session_Filter2 = "纽约时段过滤(GMT)";
extern bool SessionFilter2 = false;   // 纽约时段过滤开关(需配合SessionFilter1使用)
extern double SF2Hour_On = 11;        // 纽约时段开始小时(GMT)
extern double SF2MinuteOn = 45;       // 纽约时段开始分钟
extern double SF2Hour_Off = 17;       // 纽约时段结束小时(GMT)
extern double SF2MinuteOff = 30;      // 纽约时段结束分钟
extern string Info9 = "新闻过滤设置";
extern bool AvoidNews = true;         // 新闻过滤开关(true=避开重大新闻)
extern bool High_Impact = true;       // 高影响新闻过滤(true=避开)
extern int MinsUntilNextHighNews = 90;// 高影响新闻前禁止交易时长(分钟)
extern int MinsSincePrevHighNews = 90;// 高影响新闻后禁止交易时长(分钟)
extern bool Medium_Impact = true;     // 中影响新闻过滤(true=避开)
extern int MinsUntilNextMediumNews = 90;// 中影响新闻前禁止交易时长(分钟)
extern int MinsSincePrevMediumNews = 90;// 中影响新闻后禁止交易时长(分钟)
extern bool Low_Impact = false;       // 低影响新闻过滤(true=避开)
extern int MinsUntilNextLowNews = 60; // 低影响新闻前禁止交易时长(分钟)
extern int MinsSincePrevLowNews = 60; // 低影响新闻后禁止交易时长(分钟)
extern string Info10 = "新闻货币过滤(仅过滤选中货币的新闻)";
extern bool USD = true;               // 过滤美元相关新闻
extern bool EUR = false;              // 过滤欧元相关新闻
extern bool GBP = true;               // 过滤英镑相关新闻
extern bool JPY = false;              // 过滤日元相关新闻
extern bool AUD = false;              // 过滤澳元相关新闻
extern bool CAD = false;              // 过滤加元相关新闻
extern bool CHF = false;              // 过滤瑞郎相关新闻
extern bool NZD = false;              // 过滤新西兰元相关新闻
extern int TSD_CalendarID = 4;        // TSD新闻日历ID(参考TSD官网)
extern string TSD_Calendar_URL = "http://calendar.forex-tsd.com/calendar.php?csv=1&date="; // TSD新闻CSV数据接口
extern string Info5 = "核心订单设置";
extern string PAO = "盈利目标会随手数自动调整(基于0.1手=15美元基准)";
extern double ProfitAllOrder = 15;    // 累计盈利目标(0.1手基准,单位:美元)
extern bool FixedProfitAO = false;    // 固定盈利目标开关(true=固定值;马丁格尔模式必须设为true)
extern bool ADVProfitMode = false;    // 高级盈利模式(true=启用,随开仓数量降低盈利目标)
extern bool ATRProfitMode = false;    // ATR盈利模式(true=启用,ATR过滤时按ATR点数止盈)
extern double ATRProfit = 4;          // ATR止盈点数(不随手数自动调整)
extern bool ADVATRProfit = false;     // 高级ATR止盈(true=启用,按盈利目标/ADVATRProfitx计算)
extern double ADVATRProfitx = 3;      // ATR止盈除数(盈利目标 ÷ 此值 = 最终ATR止盈点数)
extern bool DynamicProfit = false;    // 动态盈利跟踪(true=启用,达到目标后跟踪盈利)
extern double DynamicProfitStep = 1;  // 动态盈利步长(单位:美元,盈利回落此值则平仓)
extern bool Trailing = false;         // 追踪止损开关(true=启用,需配合止损参数)
extern int OrderTreshold = 20;        // 追踪止损启动条件(开仓数量达到此值生效)
extern bool Breakeven = false;        // 保本止损开关(true=启用,需开启Trailing)
extern double BE = 0;                 // 保本止损盈利阈值(单位:美元,达到后启动保本)
extern bool OrderTrailing = false;    // 订单回落追踪(true=启用,保本后盈利回落时降低目标)
extern double TrailingStop = 15;      // 回落追踪阈值(单位:美元,每笔订单回落此值则调整目标)
int OpenOrdersLimit = 0;              // 最大开仓限制(0=无限制)
extern bool DeletePOMode = true;      // 挂单删除模式(漏洞:设为false时,卖出开仓订单不统计)
extern bool ReverseOrder = false;     // 反向对冲开关(true=启用,达到阈值后反向开仓)
extern int OpenOrderTreshold = 10;    // 反向对冲阈值(开仓数量达到此值触发反向)
extern double ReverseOrderLotDiv = 2; // 反向手数除数(原手数 ÷ 此值 = 反向手数)
extern bool ReversalContBasket = true; // 反向后继续原篮子(true=继续,false=停止原篮子)
extern int SingleOrderSL = 0;         // 单笔订单止损(单位:点数,0=无止损)
extern int SingleOrderTP = 0;         // 单笔订单止盈(单位:点数,0=无止损)
extern bool ADVOffsetMode = false;    // 高级偏移模式(false=挂单按当前价;true=按上一笔订单价)
extern bool ATRStepOn = false;        // ATR步长模式(true=挂单偏移量关联ATR点数)
extern bool ATRPipsToStep = false;    // ATR点数转步长(true=直接用ATR点数作为挂单偏移量)
extern int PriceOffset = -16;         // 基础挂单偏移(单位:点数,负数=低于当前价挂多/高于当前价挂空)
extern bool StepFactorOn = false;     // 步长因子模式(true=随开仓数量增加偏移量)
extern int StepFactor = 10;           // 步长因子(偏移量 = 基础偏移 × (开仓数 ÷ 此值 + 1))
extern int PriceOffset1 = 0;          // 低ATR区间偏移增量(ATR≤13时生效,单位:点数)
extern int PriceOffset2 = -1;         // 中ATR区间偏移增量(13<ATR≤21时生效,单位:点数)
extern int PriceOffset3 = -2;         // 高ATR区间偏移增量(ATR>21时生效,单位:点数)
extern double Lot = 0.1;              // 基础手数(0.1手为基准,固定盈利目标模式需匹配)
extern int Slippage = 4;              // 允许滑点(单位:点数,订单执行时允许的最大价格偏差)
extern string AutomaticLots1 = "基于账户余额的自动手数设置";
extern string AutomaticLots2 = "自动手数模式下,盈利目标会自动调整";
extern bool AutoLotSize = false;      // 自动手数开关(true=启用,按账户余额计算手数)
extern double Risk = 2;               // 风险因子(自动手数计算系数)
extern double MinLots = 0.01;         // 最小手数(自动手数模式下的最小执行手数)
extern bool KLotSize = false;         // 10K阶梯手数(true=账户每增加10K,手数翻倍)
extern bool DoubleLots = false;       // 亚洲时段加倍手数(true=启用,亚洲时段手数×2)
extern bool Martingale = false;       // 马丁格尔模式(true=启用,亏损后增加手数;需设FixedProfitAO=true)
extern double LotFactor = 1.4;        // 马丁格尔手数系数(上一笔手数 × 此值 = 下一笔手数)
extern double MartingaleMaxLot = 0.5; // 马丁格尔最大手数(达到此值后停止增加)
extern bool DoubleBasket = false;     // 双篮子模式(true=启用,两个独立交易篮子并行)
extern bool TripleBasket = false;     // 三篮子模式(true=启用,三个独立交易篮子并行)
extern string Timed_Stop = "定时平仓设置(每日固定时间关闭所有订单)";
extern bool TimedStop = false;        // 定时平仓开关(true=启用)
extern int StopHour = 14;             // 定时平仓小时(GMT时区)
extern int StopMinute = 0;            // 定时平仓分钟
extern string ATR_Filter = "ATR过滤设置(过滤波动过大/过小行情)";
extern bool ATROn = true;             // ATR过滤开关(true=启用)
extern bool FilterMod = false;        // 过滤模式(false=标准模式;true=高级模式)
extern int ATR_Period1 = 7;           // ATR计算周期1(基础周期)
extern int ATR_Period2 = 7;           // ATR计算周期2(偏移3根K线)
extern int ATR_Period3 = 7;           // ATR计算周期3(偏移5根K线)
extern double ATRShift1 = 0.0;        // ATR1偏移(0=当前K线)
extern double ATRShift2 = 3.0;        // ATR2偏移(3=前3根K线)
extern double ATRShift3 = 5.0;        // ATR3偏移(5=前5根K线)
extern double ATRUpLimit1 = 13.0;     // 低ATR上限(≤13=低波动)
extern double ATRDnLimit1 = 7.0;      // 低ATR下限(≥7=低波动)
extern double ATRUpLimit2 = 21.0;     // 中ATR上限(≤21=中波动)
extern double ATRDnLimit2 = 16.0;     // 中ATR下限(≥16=中波动)
extern double ATRUpLimit3 = 26.0;     // 高ATR上限(≤26=高波动)
extern double ATRDnLimit3 = 24.0;     // 高ATR下限(≥24=高波动)
extern string Info15 = "CCI过滤设置(顺势过滤)";
extern bool CCIFilterOn = false;      // CCI过滤开关(true=启用)
extern double CCIPeriod1 = 14;        // CCI周期1(当前值计算周期)
extern double CCIPeriod2 = 14;        // CCI周期2(偏移值计算周期)
extern double CCIShift1 = 0;          // CCI1偏移(0=当前K线)
extern double CCIShift2 = 5;          // CCI2偏移(5=前5根K线)
extern double CCICurrentUp = 65;      // CCI当前值上限(超过则过滤)
extern double CCICurrentDown = -65;   // CCI当前值下限(低于则过滤)
extern double CCIPreviousUp = 75;     // CCI偏移值上限(超过则过滤)
extern double CCIPreviousDown = -75;  // CCI偏移值下限(低于则过滤)
extern string Info16 = "Momentum过滤设置(动量过滤)";
extern bool MomentumFilterOn = false; // Momentum过滤开关(true=启用)
extern double MomentumPeriod1 = 3;    // Momentum周期1(当前值计算周期)
extern double MomentumPeriod2 = 3;    // Momentum周期2(偏移值计算周期)
extern double MomentumShift1 = 0;     // Momentum1偏移(0=当前K线)
extern double MomentumShift2 = 3;     // Momentum2偏移(3=前3根K线)
extern double MomentumCurrentUp = 100.1; // Momentum当前值上限(超过则过滤)
extern double MomentumCurrentDown = 99.9; // Momentum当前值下限(低于则过滤)
extern double MomentumPreviousUp = 100.2; // Momentum偏移值上限(超过则过滤)
extern double MomentumPreviousDown = 99.8; // Momentum偏移值下限(低于则过滤)
extern string Info17 = "RSI过滤设置(超买超卖过滤)";
extern bool RSIFilterOn = false;      // RSI过滤开关(true=启用)
extern double RSIPeriod1 = 3;         // RSI周期1(当前值计算周期)
extern double RSIPeriod2 = 3;         // RSI周期2(偏移值计算周期)
extern double RSIShift1 = 0;          // RSI1偏移(0=当前K线)
extern double RSIShift2 = 3;          // RSI2偏移(3=前3根K线)
extern double RSICurrentUp = 51;      // RSI当前值上限(超过则过滤)
extern double RSICurrentDown = 49;    // RSI当前值下限(低于则过滤)
extern double RSIPreviousUp = 53;     // RSI偏移值上限(超过则过滤)
extern double RSIPreviousDown = 47;   // RSI偏移值下限(低于则过滤)
extern string Info18 = "MA过滤设置(均线过滤)";
extern bool MAFilterOn = false;       // MA过滤开关(true=启用)
extern double MAPeriod1 = 3;          // MA周期1(当前值计算周期)
extern double MAPeriod2 = 3;          // MA周期2(偏移值计算周期)
extern double MAIShift1 = 0;          // MA1内部偏移
extern double MAIShift2 = 0;          // MA2内部偏移
extern double MAMethod = 0;           // MA计算方法(0=简单均线,1=指数均线等)
extern double MAShift1 = 0;           // MA1偏移(0=当前K线)
extern double MAShift2 = 3;           // MA2偏移(3=前3根K线)
extern double MACurrentUp = 0.00025;  // MA当前值上限(超过则过滤,单位:价格)
extern double MACurrentDown = 0.00025; // MA当前值下限(低于则过滤,单位:价格)
extern double MAPreviousUp = 0.0005;  // MA偏移值上限(超过则过滤,单位:价格)
extern double MAPreviousDown = 0.0005; // MA偏移值下限(低于则过滤,单位:价格)
extern string Info19 = "Envelopes过滤设置(包络线过滤)";
extern bool EnvelopesFilterOn = false; // Envelopes过滤开关(true=启用)
extern int EnvelopesTimeFrame = 0;    // Envelopes时间周期(0=当前图表周期)
extern int EnvelopesMAPeriod1 = 14;   // Envelopes上轨MA周期
extern int EnvelopesMAPeriod2 = 14;   // Envelopes下轨MA周期
extern int EnvelopesMAMethod = 0;     // Envelopes MA计算方法(0=简单均线)
extern int EnvelopesMAShift1 = 0;     // Envelopes上轨MA偏移
extern int EnvelopesMAShift2 = 0;     // Envelopes下轨MA偏移
extern int EnvelopesAppliedPrice = 0; // Envelopes应用价格(0=收盘价,1=开盘价等)
extern double EnvelopesDeviation = 0.1; // Envelopes偏差(上轨=MA×(1+偏差),下轨=MA×(1-偏差))
extern int EnvelopesShift1 = 0;       // Envelopes上轨偏移(0=当前K线)
extern int EnvelopesShift2 = 0;       // Envelopes下轨偏移(0=当前K线)
extern string Info20 = "特殊功能与应急设置";
extern bool DeletePOATR = true;       // ATR过滤时删除挂单(true=删除,避免无效挂单)
extern bool DeleteOrderATR = false;   // ATR过滤时关闭开仓(false=禁用,当前策略不建议开启)
extern string Stop_Out = "累计盈亏止损(达到阈值关闭所有订单)";
extern bool LossStopOutOn = false;    // 累计止损开关(true=启用)
extern int LossStopOut = -5000;       // 累计止损阈值(单位:美元,负数=亏损上限)
extern string CAT = "紧急平仓开关(true=立即关闭所有订单)";
extern bool CloseAllTrades = false;   // 紧急平仓(true=触发,平仓后自动设为false)

// =============================================================
// 局部变量(仅EA内部使用,不可外部配置)
// =============================================================
double PipValue = 1;                  // 点值系数(适配5位小数经纪商,1=4位,10=5位)
bool Terminated = false;              // EA终止标记(true=已终止)
string LF = "\n";                     // 换行符(图表信息显示用)
int NDigits = 4;                      // 价格小数位数(默认4位,适配经纪商)
int ObjCount = 0;                     // 图表对象计数器(创建对象时避免重名)
bool FirstTime33 = false;             // 首次开空标记(避免重复删除挂单)
bool FirstTime35 = false;             // 首次开多标记(避免重复删除挂单)
int Today6 = -1;                      // 定时平仓日期标记(避免每日多次触发)
int Count32 = 0;                      // 信息刷新计数器(控制图表信息更新频率)
double dblProfit = 0;                 // 累计盈利(当前Magic号码下所有订单)
string ATR = "";                      // ATR过滤状态文本(图表显示用)
string Trading = "";                  // 交易状态文本(图表显示用:Trading/Not Trading)
int OrderCounter = 0;                 // 订单计数器(包含挂单和开仓订单)
bool Overide = false;                 // 过滤覆盖标记(有持仓时覆盖日期/时间过滤)
int Hour1 = 1;                        // 随机魔术号更新小时标记(每小时检查一次)
int Minute1 = 2;                      // 随机魔术号更新分钟标记
string MagicChange = "Waiting...";    // 魔术号变更状态文本(图表显示用)
string RMStatus = "Waiting...";       // 随机魔术号状态文本(图表显示用)
bool Buffer = true;                   // 魔术号读取缓冲标记(初始化时仅读取一次)
double ProfitAllOrders = 0;           // 实际盈利目标(自动手数/高级模式下计算后的值)
double TrailingStops = 0;             // 实际追踪止损阈值(自动手数模式下计算后的值)
string SessionFilter = "Waiting...";  // 时段过滤状态文本(图表显示用)
double ATRPips;                       // 当前ATR点数(计算后的值)
double ATRPrePips1;                   // 偏移3根K线的ATR点数
double ATRPrePips2;                   // 偏移5根K线的ATR点数
string Zone1;                         // 低ATR区间状态(图表显示用:Open/Closed)
string Zone2;                         // 中ATR区间状态(图表显示用:Open/Closed)
string Zone3;                         // 高ATR区间状态(图表显示用:Open/Closed)
string Zone4;                         // 中-低ATR交叉区间状态(图表显示用)
string Zone5;                         // 低-中ATR交叉区间状态(图表显示用)
string AutoLot;                       // 手数模式文本(图表显示用:Auto/Manual/Martingale)
string FilterMods;                    // ATR过滤模式文本(图表显示用:Standard/Modified)
bool AsianSession = false;            // 亚洲时段标记(true=当前为亚洲时段)
double Lots;                          // 实际执行手数(基础手数+各种模式调整后的值)
string Double_Lot;                    // 加倍手数状态文本(图表显示用:Active/Sleeping)
double TotalTradeLots;                // 累计开仓手数(当前Magic号码下所有开仓订单)
double BuyLots;                       // 多单实际手数(马丁格尔/加倍模式调整后)
double SellLots;                      // 空单实际手数(马丁格尔/加倍模式调整后)
bool NewsFilter;                      // 新闻过滤标记(true=当前有新闻需过滤)
string Filter;                        // 整体过滤状态文本(图表显示用:Not Filtering/Filtering)
string NewsF;                         // 新闻过滤状态文本(图表显示用)
string CCIStatus;                     // CCI过滤状态文本(图表显示用)
string MomentumStatus;                // Momentum过滤状态文本(图表显示用)
string RSIStatus;                     // RSI过滤状态文本(图表显示用)
string MAStatus;                      // MA过滤状态文本(图表显示用)
string EnvelopeStatus;                // Envelopes过滤状态文本(图表显示用)
bool ATRProfitTrigger = false;        // ATR止盈触发标记(true=达到ATR止盈条件)
double MagicBuffer;                   // 魔术号缓冲(切换篮子时保存原始魔术号)
double DDBuffer = 0;                  // 动态盈利缓冲(跟踪盈利时使用)
string Basket = "1";                  // 当前交易篮子编号(1/2/3,多篮子模式用)
double TrailingProfit[4];             // 动态盈利跟踪值(4个篮子分别存储)
int BasketTrailing = 1;               // 动态盈利跟踪篮子编号
bool BuyBasket;                       // 多篮子标记(true=当前为多单篮子)
bool SellBasket;                      // 空篮子标记(true=当前为空单篮子)
datetime NewsTimes[1000];             // 新闻时间数组(存储过滤后的新闻时间)
int NewsRatings[1000];                // 新闻影响等级数组(1=低,2=中,3=高)
int NewsTotal;                        // 有效新闻数量(过滤后的新闻总数)
bool EnableFileErrorLogging = false;  // 错误日志开关(true=启用文件日志)
int logHandle = -1;                   // 日志文件句柄(-1=未打开)

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则