以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp)
-- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4)
---- [求助]委托未成交时间 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=78339)
|
-- 作者:渴望知识
-- 发布时间:2015/5/7 9:11:16
-- [求助]委托未成交时间
管理好,请教一下。
我在程序里编写了委托未成交的时间代码,但是发现好像总不执行,请问一下是不是我写的有问题呢?
kdbbwcj1:=kdbbtj and TISPRVREMAIN(4) and tsubmit(4)>300 and c<=(tENTERPRICe-3*a);//空单保本未成交 kdbbwcj2:=kdbbtj and TISPRVREMAIN(4) and c>=(tENTERPRICe-3*a) and c<tenterprice;
if kdbbwcj1 or kdbbwcj2 then begin tcancel(1,4); tsellshort(1,0,mkt); end
我发现未成交里委托的方向是买入。
我账户里现有空单,并且已经触发了平仓信号。那我就想计算这个挂平空单后到现在未成交的时间,我选择这个tsubmit(4)是否是对的呢?还是要选择tsubmit(1)呢?
如果按照委托里显示的,那就成买入了,这个请帮忙解释一下。
此主题相关图片如下:qq截图20150507090316.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2015-5/2015579111577143.png)
|
-- 作者:jinzhe
-- 发布时间:2015/5/7 9:20:27
--
平空未成交是tsubmit(4)
|
-- 作者:渴望知识
-- 发布时间:2015/5/7 9:23:01
--
另外再请教一下,这个TISPRBREMAIN和TISREMAIN是有什么区别吗?
因为我使用的是单策略多品种的,在后台程序运行里,我在代码编写上用的是:
if strcmp(dqpz,\'JD00\')=0 and sjlx=2 then begin zs:=10;zy:=45;zzdc:=2;
end
if strcmp(dqpz,\'AX00\')=0 and sjlx=2 then begin zs:=6;zy:=40;zzdc:=2;
end
这样编写应该使用哪种判断未成交 的命令?是上一笔还是全部的那种?是否会对我各个品种的持仓及未成交判断带来影响?
|
-- 作者:jinzhe
-- 发布时间:2015/5/7 9:24:00
--
我本地测试数值是有效的,把你的测试代码贴出来
这个单子是手工下的还是程序下的?
|
-- 作者:jinzhe
-- 发布时间:2015/5/7 9:25:46
--
区别是一个仅仅判断上一笔交易是否成交,一个是判断账户里面所有仍然有未成交单
函数判断只针对当前公式交易的合约进行判断
|
-- 作者:渴望知识
-- 发布时间:2015/5/7 10:19:09
--
谢谢你的回答,我想用TISPRBREMAIN应该是没有什么问题的。
现在还有一个问题,请看附图。
我代码中KDBBWCJ1的条件在现在实盘中已经是满足的了。
我想要立即撤销挂单,同时市场价平仓。
但是我观察,好像这个挂单总是挂在5580那(B4)。
我想询问一下,如果条件满足的情况下,程序会先去执行我上面的那个B4(因为那条代码条件也满足了),还是先执行我BEGIN里的TSELLSHORT的那个条件呢?
此主题相关图片如下:qq截图20150507101434.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2015-5/2015571019569104.png)
|
-- 作者:jinzhe
-- 发布时间:2015/5/7 10:37:45
--
代码执行顺序是从上往下的,如果两个条件都符合,那么会执行写在前面的
|
-- 作者:渴望知识
-- 发布时间:2015/5/7 10:49:29
--
但是如果按照逻辑思维向下的话,那应该是执行我BEGIN里面的语句吧。
如果就是执行上面的,那如何来改正呢?
if c<=(tENTERPRICe-2*a) and ll>=(tENTERPRICe-m*a) and c>=b4 and tenterbars>1 && dqzhcc<0 then tsellshort(1,0,lmt,b4) ; //空单保本 kdbbtj:=(( B1<=LL and LL<(tENTERPRICe-m*a) && c>=b4 and abb and tenterbars>1) OR ( c<=(tENTERPRICe-2*a) and ll>=(tENTERPRICe-m*a) and c>=b4 and tenterbars>1 )) && dqzhcc<0 ; //空单保本条件
kdbbwcj1:=kdbbtj and TISPRVREMAIN(4) and tsubmit(4)>300 and c<=(tENTERPRICe-3*a);//空单保本未成交(下单设置里撤单的设置要改成继续挂单) kdbbwcj2:=kdbbtj and TISPRVREMAIN(4) and c>=(tENTERPRICe-3*a) and c<tenterprice;
if kdbbwcj1 or kdbbwcj2 then begin tcancel(1,4); tsellshort(1,0,mkt); end
就是说,这个BEGIN里的平多操作我希望是条件成立了就立即执行的。
|
-- 作者:jinzhe
-- 发布时间:2015/5/7 10:56:06
--
代码顺序从上到下来执行的,但是你说的好像和我表达的意思相反了
|
-- 作者:渴望知识
-- 发布时间:2015/5/7 10:56:20
--
真是怪了啊,我预警里都已经出现更改的价格了,但是挂单里总还是那个价格,为什么呢?
此主题相关图片如下:qq截图20150507105547.png
![dvubb 图片点击可在新窗口打开查看](UploadFile/2015-5/20155710561731271.png)
|