datetime EndTrading;
if(TimeDayOfWeek(TimeCurrent())==5) // если сейчас пятница, например возьмем сегодняшний день, первый тик 2014.11.07 00:00
EndTrading=StringToTime("21:30"); // подразумевается что тут должно быть время пятницы...if(TimeDayOfWeek(TimeCurrent())==5) // если настала пятницаif(TimeCurrent()>EndTrading) // и время удовлетворяет условиюPrint("Настала пятница и текущее время больше чем 21:30");
datetime EndTrading;
if(TimeDayOfWeek(TimeCurrent())==5) // если сейчас пятница, от текущего времени. Наступит когда по времени сервера будет 00:00
EndTrading=StringToTime("21:30"); // А тут в 00:00 устанавливается четверг 21:30 потому, что это время пятницы ещё далеко.
if(TimeDayOfWeek(TimeCurrent())==5) // если настала пятницаif(TimeCurrent()>EndTrading) // А тут условие если(текущее время больше чем четверг 21:30)
{
Print("EndTrading = ", TimeToString(EndTrading)); // Посмотри что будет напечатано.
}
而这段代码将正确工作
if(TimeDayOfWeek(TimeCurrent()) == 5 && TimeCurrent() >= StringToTime("21:30"))
Print("Настала пятница и текущее время больше чем 21:30");
if(TimeDayOfWeek(TimeCurrent())==5) // если сейчас пятница, от текущего времени. Наступит когда по времени сервера будет 00:00
EndTrading=StringToTime("21:30"); // А тут в 00:00 устанавливается четверг 21:30 потому, что это время пятницы ещё далеко.
我没有马上注意到这个答案。好吧,说实话,我不太明白你说的没有混淆是什么意思。
你说的 "无论什么时候,StringToTime()都会计算已过的秒数 " 是什么意思?
该函数实质上是完全取一个左旋的日期(我相信本地PC的日期是左旋的),并将经纪人的服务器的当前时间与之相比较,为什么会不重要?
从上面的截图来看,评论说你本地电脑上的时间比经纪人的时间早1小时,也就是说,格林威治标准时间的转变更大。如果少了X个小时,那就很关键了,就像我周五写的那个案例。
至于交易时间的结束。我想对于StringToTime() 函数来说,经纪人何时结束交易日或一周应该不重要。
我没有其他解释。
如果现在是莫斯科的11:40,那么从1970年1月1日到现在的时间 已经过去了XXX秒。
例如,当伦敦的时间是11:40时,秒数将与现在莫斯科的时间相同......这只是因为伦敦的1970年1月1日比现在的时间晚了很多。它不是输入的时间,而只是秒数。
试着自己写一个公式来计算自1970年1月1日00:00:00以来的秒数。
在短时间内,你可以使用这个公式。从当前月份开始通过6*24*60*60+11*60*60+59*60+你所看的时钟上的当前秒值。
当然,这种比较是基于70年以来的秒数,但这个秒数考虑到了一切--日期和时间。
我只举一个例子,这基本上是对我最近遇到的一个问题的简化。
最初我有这样一个解决方案。
现在的噱头是:代码中指定的打印将在周五弹出,但不是在21:30之后,而是在第一个钩的00:00。
因为当我的经纪人的服务器得到星期五的时候,在我的本地电脑上仍然是星期四,时移是不同的。
在测试器中,一切正常,印刷品将在周五21:30后如期发行。这不是令人困惑吗?
当然,这种比较是基于70年以来的秒数,但这个秒数考虑到了一切--日期和时间。
我只举一个例子,这基本上是对我最近遇到的一个问题的简化。
最初我有这样一个解决方案。
现在的噱头是:代码中指定的打印将在周五弹出,但不是在21:30之后,而是在第一个钩的00:00。
因为当我的经纪人的服务器得到星期五的时候,在我的本地电脑上仍然是星期四,时移是不同的。
在测试器中,一切正常,印刷品将在周五21:30后如期发行。这不是令人困惑吗?
当然,这很让人困惑。这只是你头脑中的混乱。TimeToString("21:30")将给出从21:30:00到第二天21:29:59的当前日期。我将纠正你代码中的注释。
而这段代码将正确工作
同一台笔记本电脑上有两个MT4终端:一个是小数点后4位,一个是小数点后5位。在同一时间,第一台的流量是105/0 kb,第二台是3450/0 kb。第一个是CPU密集型6%,第二个是39%。问题是什么?这甚至是一种规范吗?
冯小刚
将我电脑上的日期改为2000年。
运行了这个脚本。
并得到了这个。
因此,StringToTime()从本地计算机获取日期。
冯小刚
把我电脑上的日期改成了2000年。
运行了这个脚本。
并得到了这个。
因此,StringToTime()从本地计算机获取日期
那又怎样?让它从月球上取下来,只要你设置 "从和到 "的时间经过XXX秒,这个整数我们与所需时间的01.01.1970的秒数进行比较。
你最好检查一下这一行
你在哪里出了问题。今天是星期五。
你最好检查一下那条线
你在哪里出了问题。今天是星期五。
我检查了一下,如果本地计算机的日期比经纪人的日期低,那么打印机就在那里。
但如果本地计算机的日期比经纪人的高,就没有打印机。
即时间已过,即 "11:30"。
在第一种情况下,TimeCurrent() 与2014.11.06 11:30 相比,在第二种情况 下与2014.11.0811:30 相比。
PS更正了突出显示的
第一行很清楚,第二行的评论却不清楚。
周五已经到来,为何还远在天边?毕竟,第二行只有在星期五的时候才会执行。
我已经检查过了,如果本地电脑的日期比经纪人的日期低,那么打印机就在那里。
而如果本地计算机上的日期高于经纪人的日期,那么就没有打印机了。
即时间已过,即 "11:30"。
在第一种情况下,TimeCurrent()与2014.11.06 11:30 相比,在第二种情况 下与2014.11.0811:30 相比。
PS更正了突出显示的
我这里的本地时间 比服务器时间大1小时。
这个脚本
输出以下数值。
首先,从1970年1月1日到指定时间所经过的秒数,然后以我们习惯的形式显示时间。
在此基础上,请解释这些价值观让你感到困惑的地方?
是的,在我的第二条评论中,我想的是别的东西。
да.
你好。
有一个这样的任务。(无法将其附加到勾上)
如果一个挂单 触发了{那么...}。
在我的EA中,我使用Terminal.mqh来计算订单。
终端 // Mas_Tip[0] 打开购买
// 如果买入订单的数量增加了1
如果(Mas_Tip[0]+1)
{
功能
}
一切正常。但它在每一个下一个刻度上都会被触发。
如何将此案附在蜱虫上?然后比较前一个tick和当前tick的值。