以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  [求助]为何总发三个邮件?  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=155586)

--  作者:m888m
--  发布时间:2017/6/30 11:08:11
--  [求助]为何总发三个邮件?

以下代码总发三个邮件,不知为何?

//浮动盈亏整点通知
实时分钟:=FRACPART(INTPART(CURRENTTIME/100)/100)*100;
IF 实时分钟=59 THEN
SENDMAIL(1,\'m888m@139.com\',\'盈亏情况\',NUMTOSTR(TACCOUNT(4),0)+\'元\');


--  作者:qq代人发帖
--  发布时间:2017/6/30 11:24:34
--  

有单独测试发送邮件的代码吗?先排除下这段代码是否有问题。 此外你那个执行条件我输出看了下,只是当前的分钟数,应该没问题。但是在59这一分钟内,这个条件可能会被多次检测到的。你看下你运行的模式是不是多次检测到这个条件成立的信号了。

 

 

[此贴子已经被作者于2017/6/30 11:32:20编辑过]

--  作者:m888m
--  发布时间:2017/6/30 11:33:24
--  
单独测试过,有时一次发两个,试过用加全局变量限制也一样。如没发现先不管它了,影响不大,谢!
--  作者:塔尖
--  发布时间:2017/6/30 12:27:41
--  

原因:符合条件的1分钟里,多次检测条件成立而重复发件。
        2-3次,说明20秒左右,检测一个循环。

 

解决方案:增加一个 秒判断条件。以使成立且仅成立一次(可以调整秒的范围)。


实时分钟:=FRACPART(INTPART(CURRENTTIME/100)/100)*100;
实时秒:=FRACPART(CURRENTTIME/100)*100;

 

IF 实时分钟=59 AND   BETWEEN(实时秒,1 ,10 ) THEN
SENDMAIL(1,\'m888m@139.com\',\'盈亏情况\',NUMTOSTR(TACCOUNT(4),0)+\'元\');

 

供参考。


--  作者:王锋
--  发布时间:2017/6/30 13:07:43
--  

正常情况每个周期只会发一次的,如果多次执行也不会重复发送的。

您检查一下是否你的这个公式被不同的地方多次加载或者跨周期引用到了


--  作者:m888m
--  发布时间:2017/6/30 15:01:15
--  

用4楼的方法可以,谢!