mql4语言的特点、微妙之处以及技巧 - 页 8 123456789101112131415...36 新评论 fxsaber 2018.03.06 22:36 #71 通过使用iCustom的Expert Advisor第一次调用指标,导致指标的OnInit和OnCalculate开始。在下一次调用iCustom之前,该指标不会调用其OnCalculate。退出专家顾问时调用指标OnDeinit。 iCustom指标并不完整。而且,使用MQL4工具,不可能从手动启动的指标中接收指标缓冲 值。 Andrey Khatimlianskii 2018.03.06 23:54 #72 fxsaber: iCustom指标并不完整。什么是不完全性?事件没有得到处理? fxsaber 2018.03.07 00:04 #73 Andrey Khatimlianskii:什么是不完全性?事件没有被处理?是的。 fxsaber 2018.03.29 14:32 #74 #property strict #define HOUR 3600 #define DAY (24 * HOUR) #define WEEK 7 datetime GetBarTime( const datetime time, const bool NextBar = false, string Symb = NULL, const ENUM_TIMEFRAMES TimeFrame = PERIOD_M1 ) { if (Symb == NULL) Symb = _Symbol; return(iTime(Symb, TimeFrame, iBarShift(Symb, TimeFrame, time) - (NextBar ? 1 : 0))); } datetime GetTimeDayOfWeek( const int Shift = 0, const ENUM_DAY_OF_WEEK Day = SUNDAY ) { const datetime Res = TimeCurrent() / DAY * DAY; return(Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK) + Shift * WEEK) * DAY); } // Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset // Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю int TimeServerGMTOffset( void ) { const datetime Sunday = GetTimeDayOfWeek(); return(((int)MathRound((double)MathMin(Sunday - DAY - GetBarTime(Sunday), Sunday + DAY - GetBarTime(Sunday, true)) / HOUR) - 3) * HOUR); } // Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt // Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю datetime TimeServerGMT( void ) { return(TimeCurrent() + TimeServerGMTOffset()); } 应用 #define PRINT(A) Print(#A + " = " + (string)(A)) void OnStart() { PRINT(TimeGMT()); PRINT(TimeServerGMT()); } 这个方法很好,它不仅适用于周末、Tester和实时,也适用于第三方数据。也就是说,从MT以外的其他地方抽取的GMT引文是确定的。 fxsaber 2018.04.02 10:03 #75 关于交易、自动交易系统和交易策略测试的论坛 mql5语言的特点、微妙之处以及技巧 fxsaber, 2018.04.01 08:46 // https://www.mql5.com/ru/docs/dateandtime/timetradeserver datetime TimeTradeServer() { return(TimeGMT() - TimeServerGMTOffset()); } Vitaly Muzichenko 2018.04.02 16:45 #76 fxsaber: 如果不使用TimeCurrent(), 而是使用仪器上的最后一个tick的时间,那么计算就不会受到干扰? fxsaber 2018.04.02 17:02 #77 Vitaly Muzichenko:如果你不使用TimeCurrent(),而是 使用仪器的最后一个刻度的时间,那么计算就不会被破坏?不会的。TimeCurrent 对算法的影响非常间接。你可以把酒吧的时间,等等。 只需以任何方式计算最后一次通过(在酒吧的历史上)星期天的日期--在星期天之前和星期天之后有酒吧。你至少可以用TimeLocal来做这个。 fxsaber 2018.04.03 16:15 #78 很难不喜欢一种允许你写这种代码的语言double Lots[] = {0, 0, 0, 0, 0, 0}; for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS)) Lots[OrderType()] += OrderLots();我相信开发人员在编写语言时并没有计划到这种事情。为什么MQL4会有这么多方便的东西,这是一个谜。 Alexey Viktorov 2018.04.03 16:30 #79 fxsaber: 很难不喜欢一种能让你写出这样的代码的语言我相信开发人员在编写语言时并没有计划到这种事情。为什么MQL4会有这么多方便的东西,这是一个谜。没有什么神秘的。我在mql5中也使用了很多年,但我们必须明确地将位置类型和订单类型转换为int类型。 我只是像这样声明一个数组 double Lots[6] = {0.0}; 你也可以在一个数组中存储票种。 fxsaber 2018.04.03 16:36 #80 Alexey Viktorov:没有什么神秘的。我已经用了很多年了,在mql5中也是如此,但你必须明确地把它传给int类型。那里的含义会有很大的不同。 123456789101112131415...36 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
- 通过使用iCustom的Expert Advisor第一次调用指标,导致指标的OnInit和OnCalculate开始。
- 在下一次调用iCustom之前,该指标不会调用其OnCalculate。
- 退出专家顾问时调用指标OnDeinit。
iCustom指标并不完整。而且,使用MQL4工具,不可能从手动启动的指标中接收指标缓冲 值。iCustom指标并不完整。
什么是不完全性?事件没有得到处理?
什么是不完全性?事件没有被处理?
是的。
应用
这个方法很好,它不仅适用于周末、Tester和实时,也适用于第三方数据。也就是说,从MT以外的其他地方抽取的GMT引文是确定的。
关于交易、自动交易系统和交易策略测试的论坛
mql5语言的特点、微妙之处以及技巧
fxsaber, 2018.04.01 08:46
如果不使用TimeCurrent(), 而是使用仪器上的最后一个tick的时间,那么计算就不会受到干扰?
如果你不使用TimeCurrent(),而是 使用仪器的最后一个刻度的时间,那么计算就不会被破坏?
不会的。TimeCurrent 对算法的影响非常间接。你可以把酒吧的时间,等等。
只需以任何方式计算最后一次通过(在酒吧的历史上)星期天的日期--在星期天之前和星期天之后有酒吧。你至少可以用TimeLocal来做这个。
我相信开发人员在编写语言时并没有计划到这种事情。为什么MQL4会有这么多方便的东西,这是一个谜。
很难不喜欢一种能让你写出这样的代码的语言
我相信开发人员在编写语言时并没有计划到这种事情。为什么MQL4会有这么多方便的东西,这是一个谜。
没有什么神秘的。我在mql5中也使用了很多年,但我们必须明确地将位置类型和订单类型转换为int类型。
我只是像这样声明一个数组
你也可以在一个数组中存储票种。没有什么神秘的。我已经用了很多年了,在mql5中也是如此,但你必须明确地把它传给int类型。
那里的含义会有很大的不同。