繁体   English   中英

MQL4中的日期时间算法

[英]A datetime arithmetic in MQL4

我想定义一个datetime类型变量,它是datetime类型变量之间的简单算术运算的结果。

我定义了:

datetime duration = ( TimeCurrent() - OrderOpenTime() );
datetime   TmStop = StringToTime( "1970.01.01 16:00" );

但是当我在其他算术运算中或通常这样的代码中调用它时

ExitBuy_H1 = ( duration > TmClose && ...

或这个

text[3]= "Duration: " + TimeToStr( duration, TIME_MINUTES );

它不起作用。

TmStop可以正常工作。

有人知道为什么吗?

datetime是一个简单的整数,从1970.01.01 00:00经过的秒数。 示例中的duration也以秒为单位,即使它是datetime格式,当您需要以分钟为单位时,也要除以60。示例中的TmClose表示16*60*60 seconds ,您当然可以将该整数与任何其他int进行比较,但这可能是什么原因? 如果持仓超过16小时,则duration> TmClose为true。 如果要将秒(持续时间)的差异转换为时间,则时间将从1970.01.01 00:00 +持续时间秒转换。

无论如何,尚不清楚您进行此计算的目的是什么? 如果要确保将特定位置保持多于x小时,则可以简单地通过bool holdMoreThanXHours = TimeCurrent()-OrderOpenTime()>x*PeriodSeconds(PERIOD_H1) ,并且如果有几张票,不要忘记重新选择每张票公开

事实A)完全按原样运行的代码完全可行。

//+------------------------------------------------------------------+
//|                                           Test_StackOverflow.mq4 |
//+------------------------------------------------------------------+
#property strict

void OnStart() {
     datetime duration = ( TimeCurrent() - OrderOpenTime() );
     string        txt = "Duration: " + TimeToStr( duration, TIME_MINUTES );
     }
//+------------------------------------------------------------------+

0 error(s), 0 warning(s), compile time: 2000 msec 1 1


事实B)缺少完整的代码MCVE上下文。

StackOverflow要求用户发布问题的完整MCVE表示。 原始帖子未满足此要求。

尽管datetimeint数据类型可以互换,但问题似乎并没有隐藏在值表示的固有“对偶性”中,而必须存在于其他地方。

主要嫌疑人为何? 是:

  • 变量定义被另一个同名变量掩盖
  • 超出了变量的定义范围(询问超出其范围的变量)
  • db.Pool操作之前没有 OrderSelect()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM