我用图表自动化,标准版,想在每次下单时自动发邮,但不行,邮箱设置了,以下是代码,请高手看看,
平空:SELLSHORT(PKKD,1,MARKET),ignorecheckprice,ORDERQUEUE; //平空信号
开多:BUY(PKKD AND HOLDING=0,1,MARKET),ignorecheckprice,ORDERQUEUE; //开多信号
平多:SELL(PDKK,1,MARKET),ignorecheckprice,ORDERQUEUE; //平多信号
开空:BUYSHORT(PDKK AND HOLDING=0,1,MARKET),ignorecheckprice,ORDERQUEUE; //开空信号
cond:=PKKD or PDKK;
if ISLASTBAR AND barpos>EXTGBDATA('t') and cond then
BEGIN
SENDMAIL(PKKD,'504049021@qq.com','IF06','平空开多');
SENDMAIL(PDKK,'504049021@qq.com','IF06','平多开空');
EXTGBDATASET('t',BARPOS);
END
cond:=PKKD or PDKK;
if ISLASTBAR AND barpos>EXTGBDATA('t') and cond then
BEGIN
SENDMAIL(PKKD,'504049021@qq.com','IF06','平空开多');
SENDMAIL(PDKK,'504049021@qq.com','IF06','平多开空');
EXTGBDATASET('t',BARPOS);
END
这里的BEGIN ... END发送邮件中你加上DEBUGFILE调试日志看看邮件发送的代码是否执行过
中间加了个DEGBUGFILE,这次在K线中间未结束时有信号也发了一次邮,而我要的是K 线走完时有下单信号才发邮。请高手帮忙。
平空:SELLSHORT(PKKD,1,MARKET),ignorecheckprice,ORDERQUEUE; //平空信号
开多:BUY(PKKD AND HOLDING=0,1,MARKET),ignorecheckprice,ORDERQUEUE; //开多信号
平多:SELL(PDKK,1,MARKET),ignorecheckprice,ORDERQUEUE; //平多信号
开空:BUYSHORT(PDKK AND HOLDING=0,1,MARKET),ignorecheckprice,ORDERQUEUE; //开空信号
cond:=PKKD OR PDKK;
if ISLASTBAR AND barpos>EXTGBDATA('t') and cond then
BEGIN
SENDMAIL(PKKD,'504049021@qq.com','IF06','平空开多');
SENDMAIL(PDKK,'504049021@qq.com','IF06','平多开空');
DEBUGFILE('D:\TEST.TXT','发邮',1);
EXTGBDATASET('t',BARPOS);
END
那么sendmail要加一个时间判断条件,判断当前时间是不是在k线最后几秒
比如以1分钟为例:
t1:dynainfo(207);
ttt:t1%100;
这个TTT就是表示当前的秒数,需要k线走完之后才判断,可以用ttt>55 and ttt<=59来判断
走完k线是走完k线才发单,不是走完k线再运行程序,所以要加上时间判断条件
[此贴子已经被作者于2013-6-5 14:26:25编辑过]
以下是引用jinzhe在2013-6-5 14:07:50的发言:
那么sendmail要加一个时间判断条件,判断当前时间是不是在k线最后几秒
比如以1分钟为例:
t1:dynainfo(207);
ttt:t1%100;
这个TTT就是表示当前的秒数,需要k线走完之后才判断,可以用ttt>55 and ttt<=59来判断
如果K线走完后一秒新K线就来了,不就不在这个范围里了吗,而新K线什么时候来,谁知道,有的一秒内,有的十几秒才来也有,如果范围扩得很大,会把新K线里符合下单条件的信号都发邮了。头大,请各位高手帮忙!