English
中文
日本語
ID
Vietnam
한국어
Filipino
 
   学院导航

如何在MQL4 将交易时间限制为固定时间交易图表

介绍

这是多期配额交易时间过滤器。 当您只想在亚洲时段、和/或伦敦时段和/或纽约时段进行交易时,它是可用的。


参数

自动 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_