DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA := EMA(DIFF,9);
macd:=stkindi('','macd.macd1',0,6);//日macd值
J:=stkindi('','kdj.j',0,6);
if CROSS(diff,dea) and CURRENTTIME>144500 and tbuyholding(1)=0 and TTOTALDAYTRADE<1 then BEGIN
tbuy(1,10000/close,mkt);
SENDMAIL(1,'13913992413@139.COM; 13773473555@139.COM',STKLABEL & STKNAME & NUMTOSTR(CLOSE,2)& '《买》_【普1_macd金叉】','');
end
if (J>118 or c>tenterprice*1.045 or c<tenterprice*0.93 or tenterbars>=20 ) and tbuyholding(0)>0 then BEGIN
tsell(1,0,mkt);
SENDMAIL(1 ,'13913992413@139.COM; 13773473555@139.COM',STKLABEL & STKNAME & NUMTOSTR(CLOSE,2)&'《卖》_【普1_macd金叉】','');
end
此策略14:45有3条成交纪录,未发邮件;其它策略均有1条成交纪录,都发邮件了。
debugif 输出个值记录下,理论上是发出去的,但是金字塔的smtp方式。。。 总归是会丢的,而且我到现在都没搞明白是金字塔的smtp丢的还是smtp服务器丢的。
不会加debugif,请帮忙加一下。
会不会与同一时间有三个记录有关,其他一条记录的都发了,我也查了策略应该不会错。
我前面用软件勾选的发邮件功能,同一时间触发的多个记录是通过一个邮件发出的。 为了想不打开邮件就能看到代码和价格,才在策略中使用sendmail语句的,能不能既用sendmail语句,又勾选邮件?不知道这样会是什么情况?

此主题相关图片如下:捕获.gif

DEBUGFILE('C:\AAW.TXT','holding:%.0f',holding);
debugif模式这么用的,不过你这其实用不用也无所谓了,既然价格执行了说明程序确实有运作,只是sendmail问题了。
但是金字塔的sendmail是有问题的,确实会丢邮件,然而这个丢的到底是sendmail丢还是smtp丢说不清楚啊。
就是因为会丢所以我最后放弃sendmail ,其实发邮件还可以自己写个py用来读取邮件统计。
可sendmail总归就是有各种~金字塔也没继续优化打算。
理论上sendmail函数就是一个smtp发送器,smtp发送模式是有标准的,自己做一般主要处理时排队发送和缓存。我估计金字塔可能压根没做smtp排队发送以及缓存。
这可能导致邮件丢失问题~但哦。。。也许是smtp丢了毕竟现在靠谱smtp也就是web端了,直接用25端发送听说有个短时间内发送限制。
要不你自己架设个smtp服务实验下,这个架设是很简单的,不过好像没安全签名目前国内各大邮箱会拒收。