介绍
这是多期配额交易时间过滤器。 当您只想在亚洲时段、和/或伦敦时段和/或纽约时段进行交易时,它是可用的。
参数
自动 GMT 偏移量
Bool:指示是否要打开或关闭自动 GMT 偏移。 在回测期间关闭。
手动 GMT 偏移
Double:如果 AutoGMTOffset 关闭,请指明您的手动 GMT 偏移量。
您如何确定您的手动 GMT 偏移量?
通过在您的交易平台上的市场观察(您的 MetaTrader4 平台的左上角)下查看它来找到您的经纪人时间。 现在做一点数学计算,找出格林威治标准时间和您的经纪人时间之间的小时差。 那就是偏移量。 如果市场观察时间早于 GMT,则您的设置为正数。 但不要使用加号。 像往常一样写一个正数。 如果您的经纪商的时间晚于格林威治标准时间,请在数字前加一个负号。 我正在使用 Primebank,其市场观察信息显示为凌晨 2:00,而格林威治标准时间显示为下午 23:00,这意味着 Primebank 提前了 +3 小时,因此我会在手动偏移中指示 3。
使用交易时间
Bool:是否使用时间过滤器。 它默认为关闭。
贸易亚洲市场
Bool: 是否交易亚洲时段。
开始时间 1
Double:在此之前不要交易。 默认为 21:00,亚洲时段开始,如果您包括澳大利亚。 悉尼时间 21:00 开始,东京时间 23:00 GMT。
结束时间 1
Double:此时间后不要交易。 违约时间为 07:00,欧洲时段开始。 注意:东京交易时段还持续 1 小时,于 08:00 结束,因此如果您有兴趣完整交易此交易时段,则应指明从 23:00 到 08:00。
贸易欧洲市场
Bool: 是否交易欧洲时段。
开始时间2
Double:在此之前不要交易。 在格林威治标准时间 7.00(伦敦交易时段开始)违约,但德国要到 08.00 才开市。
结束时间 2
Double:此时间后不要交易。 违约时间为格林威治标准时间 12.00,纽约时段开始。 注意:欧洲时段一直持续到 16.00,因此如果您有兴趣在整个时段进行交易,您应该将默认时间设置为 7.00 到 16.00。
贸易纽约市场
Bool:是否在纽约时段进行交易。
开始时间3
Double:在此之前不要交易。 默认为 12:00,格林威治标准时间纽约时段开始,即美国东部时间 8:00。 请注意,纽约证券交易所要到美国东部时间 9:30 或格林威治标准时间 13:30 才开市,第一个半小时(美国东部时间 9:30 至 11:00,或格林威治标准时间 13:30 至 15:00)交易量很大, 大量的流动性。
结束时间 3
Double:此时间后不要交易。 违约时间为 21.00,纽约时段结束,纽约收盘。
您如何微调会话时间?
有两种方法。 一种方法是通过研究和估计。 您查看时区图表本身,寻找它们的独特特征以找到最适合您系统的时区。 例如,您可能只想在低流动性亚洲时段交易剥头皮交易,或在高流动性汇合时段(当亚洲/欧洲时段重叠时,或当欧洲/纽约时段重叠时)交易突破系统。
另一种更准确的方法是通过优化。 选择一个会话为真,其他为假,并优化该会话的开始和结束参数。 例如,如果您只想在亚洲时段交易,并且想知道使用您的系统进行交易的最佳时间,我会将 StartTime1 保持在 22.00,并将 EndTime1 从 22 优化到 7,优化报告将详细说明 小时最适合我的系统。
MT4 代码片段
将此代码粘贴到源文件顶部附近
#import “Kernel32.dll”
void GetSystemTime(int& a0[]);
将此代码粘贴到定义变量部分
extern string _6 = “— 交易时间 —”;
外部布尔 AutoGMTOffset = TRUE;
extern double ManualGMTOffset = 0;
extern bool UseTradingHours = true;
extern bool TradeAsianMarket = true;
外部双开始时间 1 = 22.00;
外部双 EndTime1 = 07.00;
extern bool TradeEuropeanMarket = true;
外部双开始时间 2 = 07.00;
外部双 EndTime2 = 12.00;
外部布尔 TradeNewYorkMarket = true;
外部双开始时间 3 = 12.00; // 美国东部时间 8:00
外部双 EndTime3 = 17.00;
int gmtoffset;
字符串 gs_548 = “”;
将此代码粘贴到 start() 函数之后
如果 (!IsTesting() && AutoGMTOffset == TRUE) gmtoffset = GMTOffset();
否则 gmtoffset = ManualGMTOffset;
string ls_52 = “你的策略正在运行。”;
string ls_60 = “你的策略是为时区 GMT 设置的” + gmtoffset;
string ls_76 = “账户余额= ” + DoubleToStr(AccountBalance(), 2);
字符串 ls_84 = ” “;
评论(“\n”,
“\n”, “ “,
“\n”, “ “,
“\n”,“”,ls_52,
“\n”,“”,ls_60,
“\n”, “”, ls_76,
// “\n”, “”, ls_