发现sendmail函数在图表程序化,逐k线模式下,想开多,开空,平空,平空都发送邮件提醒,但如果不加allowrepeat的话,如果出现平空开多的现象时,只会发送平空的邮件,开多的邮件就不发送了,请问这有什么办法解决么?
你是如何用条件控制sendmail 执行的呢。只有同一行代码才会一个周期只执行一次,如果你写的2句sendmail不会出现说只执行其中一个的情况。
我的sendmail是分句写的的,但是只有第一个发邮件会执行,部分代码如下:
if pk then begin
SELLSHORT(1,1,MARKET);
SENDMAIL(1,'XXXX@sina.com','程序化交易--平空单','平空单');
end
if KD and bj=0 then begin
buy(1,1,MARKET);
SENDMAIL(1,'shenao9066@sina.com','程序化交易--多单入场','程序化交易--多单入场');
bj:=n2;
end
单子也都按规则成交了,但邮件只有“程序化交易--平空单”,这是为什么呢?
我本地测试 了。写2个语句是确定能发送的。
是否有其他buy语句在执行下单,而不是邮件代码这里的buy下单的?可以在日志中看下下单记录,具体是哪一行代码操作的下单。
或者你在邮箱垃圾箱里看下,是否有被拦截到垃圾箱里去了。
请我们网站下载5.2版本看一下,应该是解决了你说的这个问题吧
我刚又看了下日志,确实开平仓都是发邮件前的语句执行的。
2019-12-23 14:44:01.013 【图表】框架:Technic 触发下单 SELL 品种 399905 下单K线 2019.12.23 14:44:00 公式:5分钟M 窗格ID:Main 代码行:34
2019-12-23 14:44:01.029 【图表】框架:Technic 触发下单 BUYSHORT 品种 399905 下单K线 2019.12.23 14:44:00 公式:5分钟M 窗格ID:Main 代码行:50
我又做了个简单的测试,在程序的开头写了无条件的两行
SENDMAIL(1,'xxx@sina.com','测试1','测试1');
SENDMAIL(1,'xxx@sina.com','测试2','测试2');
只有测试1的邮件收到了。感觉是在一个k线周期里,这个只会发一次,请再看看是我哪写的不对么?这个发邮件有哪的日志可以看么?
公式说明里也有一段“该函数在相同周期只会播放一次,如果需要在相同周期重复播放,请使用ALLOWREPEAT控制符”,可是加了ALLOWREPEAT条件一成立就会一直发
这个问题是升级就能解决么?如果不能就不折腾覆盖了。。。