以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 后台程序化一些问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=95931) |
-- 作者:a383623133 -- 发布时间:2016/4/7 14:22:13 -- 后台程序化一些问题 后台程序化运行时平仓的同时不会开仓,代码如下:急 jx:MA(C,30); a:=(time>010000 and time<=045500 ) or (time>130000 and time<=152500) or (time>173000 and time<=185500); KK:=cross(jx,c) and a; //开空条件 PK:=cross(c,jx) ; //平空条件 KD:=cross(c,jx) and a; //开多条件 PD:=cross(jx,c) ; //平多条件 平空:tSELLSHORT(PK,0,lmt,close); //平空信号 开多:tBUY(KD AND tbuyHOLDING(0)=0 and tsellHOLDING(0)=0,10,lmt,close); //开多信号 平多:tSELL(PD,0,lmt,close); //平多信号 开空:tBUYSHORT(KK AND tsellHOLDING(0)=0 and tbuyHOLDING(0)=0,10,lmt,close); //开空信号 平多2:tSELL(tOPENPROFIT<-1000,0,mkt); 平空2:tSELLSHORT(tOPENPROFIT<-1000,0,mkt); if (time>045800 and time<=050000) or (time>152800 and time<=160000) or (time>185800 and time<=190000) then begin tsell(1,0,mkt); tsellshort(1,0,mkt); end |
-- 作者:jinzhe -- 发布时间:2016/4/7 14:27:06 -- 因为有持仓判断的,所以用顺序下单试试看
平空:tSELLSHORT(PK,0,lmt,close),orderqueue; //平空信号
开多:tBUY(KD AND tbuyHOLDING(0)=0 and tsellHOLDING(0)=0,10,lmt,close),orderqueue; //开多信号
平多:tSELL(PD,0,lmt,close),orderqueue; //平多信号
开空:tBUYSHORT(KK AND tsellHOLDING(0)=0 and tbuyHOLDING(0)=0,10,lmt,close),orderqueue; //开空信号
平多2:tSELL(tOPENPROFIT<-1000,0,mkt),orderqueue;
平空2:tSELLSHORT(tOPENPROFIT<-1000,0,mkt),orderqueue;
if (time>045800 and time<=050000) or (time>152800 and time<=160000) or (time>185800 and time<=190000) then begin
tsell(1,0,mkt),orderqueue;
tsellshort(1,0,mkt),orderqueue;
end
|
-- 作者:a383623133 -- 发布时间:2016/4/7 14:31:13 -- 顺序下单是不是先平仓成交了才发开仓委托?还是平仓跟开仓同时发出? |
-- 作者:jinzhe -- 发布时间:2016/4/7 14:40:48 -- 先成交之后,再发后面的单子,避免没成交导致持仓判断出错,再加一个sleep1秒,这样有充足时间去接收成交回报了 这个公式绝对不能用逐k线模式,一定要用序列模式
平空:tSELLSHORT(PK,0,lmt,close),orderqueue; //平空信号
sleep(1000);
开多:tBUY(KD AND tbuyHOLDING(0)=0 and tsellHOLDING(0)=0,10,lmt,close),orderqueue; //开多信号
sleep(1000); 平多:tSELL(PD,0,lmt,close),orderqueue; //平多信号
sleep(1000); 开空:tBUYSHORT(KK AND tsellHOLDING(0)=0 and tbuyHOLDING(0)=0,10,lmt,close),orderqueue; //开空信号
平多2:tSELL(tOPENPROFIT<-1000,0,mkt),orderqueue;
平空2:tSELLSHORT(tOPENPROFIT<-1000,0,mkt),orderqueue;
if (time>045800 and time<=050000) or (time>152800 and time<=160000) or (time>185800 and time<=190000) then begin
tsell(1,0,mkt),orderqueue;
tsellshort(1,0,mkt),orderqueue;
end
|