[英]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)
,并且如果有几张票,不要忘记重新选择每张票公开
//+------------------------------------------------------------------+
//| 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
MCVE
上下文。 StackOverflow要求用户发布问题的完整MCVE表示。 原始帖子未满足此要求。
尽管datetime
和int
数据类型可以互换,但问题似乎并没有隐藏在值表示的固有“对偶性”中,而必须存在于其他地方。
主要嫌疑人为何? 是:
OrderSelect()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.