以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]还是那捆扰多日的,有持仓后还会继续开仓的问题;  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=53255)

--  作者:mlm102030
--  发布时间:2013/6/21 11:24:20
--  [求助]还是那捆扰多日的,有持仓后还会继续开仓的问题;

实盘日志:(为了防止开过多手数,用资金限制住了)

2013-06-21 09:45:35.593    【回报】***** : 已登录
2013-06-21 09:48:57.843    【后台】 启动后台程式化交易
2013-06-21 09:48:57.921    【后台】RB10 TBuy 已成功触发下单操作 价格:3463.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:48:57.921    【后台】下单已发送
2013-06-21 09:48:57.921    【后台】RB10 TSell 已成功触发下单操作 价格:1.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:48:57.921    【后台】实际账户持仓 0
2013-06-21 09:48:57.921    【后台】RB10 运行结束
2013-06-21 09:48:57.937    【下单】RB10 价3463.000000 量1 买卖0 类型0 开平0 账户****** Formula 1
2013-06-21 09:48:57.937    【下单】确认报单已发送 ID=-1338170679 RefID = 75
2013-06-21 09:48:57.968    【指令】收到回报指令 ID = -1338170679 RefID = 75
2013-06-21 09:48:57.984    【指令】收到回报指令 ID = -1338170679 RefID = 75
2013-06-21 09:48:57.984    【回报】******: rb1310 - 已报单 1 价格:3463 开 买
2013-06-21 09:48:58.015    【指令】收到回报指令 ID = -1338170679 RefID = 75
2013-06-21 09:48:58.015    【指令】收到成交回报指令 REFID = 75
2013-06-21 09:48:58.015    【回报】******: rb1310 - 已成交 1 价格:3463 开 买
2013-06-21 09:48:58.734    【后台】RB10 TSell 已成功触发下单操作 价格:3464.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:48:58.734    【后台】实际账户持仓 1
2013-06-21 09:48:58.734    【后台】下单已发送
2013-06-21 09:48:58.734    【后台】RB10 运行结束
2013-06-21 09:48:58.734    【下单】RB10 价3464.000000 量1 买卖1 类型0 开平2 账户****** Formula 1
2013-06-21 09:48:58.734    【下单】确认报单已发送 ID=-1338170678 RefID = 76
2013-06-21 09:48:59.296    【指令】收到回报指令 ID = -1338170678 RefID = 76
2013-06-21 09:48:59.296    【回报】11801026 : rb1310 - 已报单 1 价格:3464 平 卖
2013-06-21 09:48:59.296    【指令】收到回报指令 ID = -1338170678 RefID = 76  (到这里平仓的单子已经下了,并且有回报了,但是还没有成交哦,怎么下面还有开仓的动作呢?)
2013-06-21 09:48:59.718    【后台】RB10 TBuy 已成功触发下单操作 价格:3463.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:48:59.718    【后台】下单已发送
2013-06-21 09:48:59.718    【后台】RB10 TSell 已成功触发下单操作 价格:3464.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:48:59.718    【后台】实际账户持仓 0
2013-06-21 09:48:59.718    【后台】RB10 运行结束
2013-06-21 09:48:59.718    【下单】RB10 价3463.000000 量1 买卖0 类型0 开平0 账户****** Formula 1
2013-06-21 09:48:59.718    【下单】确认报单已发送 ID=-1338170677 RefID = 77
2013-06-21 09:49:00.421    【回报】****** : rb1310 - 综合交易平台:资金不足(用资金限制了实盘的开仓,但这不是个办法啊!)
2013-06-21 09:49:00.750    【后台】RB10 TBuy 已成功触发下单操作 价格:3463.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:49:00.750    【后台】下单已发送
2013-06-21 09:49:00.750    【后台】RB10 TSell 已成功触发下单操作 价格:3464.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:49:00.750    【后台】实际账户持仓 0
2013-06-21 09:49:00.750    【后台】RB10 运行结束
2013-06-21 09:49:00.750    【下单】RB10 价3463.000000 量1 买卖0 类型0 开平0 账户****** Formula 1
2013-06-21 09:49:00.750    【下单】确认报单已发送 ID=-1338170676 RefID = 78
2013-06-21 09:49:01.781    【后台】RB10 TSell 已成功触发下单操作 价格:3464.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:49:01.781    【后台】实际账户持仓 0
2013-06-21 09:49:01.781    【后台】RB10 运行结束
2013-06-21 09:49:02.062    【回报】******: rb1310 - 综合交易平台:资金不足(用资金限制了实盘的开仓,但这不是个办法啊!)
2013-06-21 09:49:02.812    【后台】RB10 TCANCELEX 出现信号 类型:2 帐号:
2013-06-21 09:49:02.812    【后台】RB10 TSell 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:RB10
2013-06-21 09:49:02.812    【后台】实际账户持仓 0
2013-06-21 09:49:02.812    【后台】RB10 运行结束
2013-06-21 09:49:02.968    【指令】收到回报指令 ID = -1338170678 RefID = 76
2013-06-21 09:49:02.984    【指令】收到回报指令 ID = -1338170678 RefID = 76
2013-06-21 09:49:03.000    【回报】****** : rb1310 - 已撤单 量:1
2013-06-21 09:49:03.750    【后台】RB10 TSell 已成功触发下单操作 价格:3464.000000 数量:1 类型:0 账户: 品种:RB10
2013-06-21 09:49:03.750    【后台】实际账户持仓 1
2013-06-21 09:49:03.750    【后台】下单已发送
2013-06-21 09:49:03.750    【后台】RB10 运行结束

后面还有一堆日志,最终在我帐户的交易记录中这个仓位是2013-06-21 09:49:31.187才成交的;  

 

 

交易系统:

//条件判断

 MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);

//监控未成交单
WCJ:=TREMAINQTY( 1,\'\',\'\');

//开仓和平仓
IF 条件 THEN BEGIN
TBUY(CONDBUY AND TBUYHOLDINGEX( \'\',\'\',0 )=0 AND WCJ<1,1,LMT,CLOSE,0,\'\',\'\');
TSELL(1,1,LMT,TAVGENTERPRICEEX2(\'\',\'\',0)+1,0,\'\',\'\');
END

//撤未成交平多单并市价平
WCJSJTBUY:=TSUBMIT(2);
IF WCJSJTBUY>3 THEN BEGIN(如果3秒内没有成交就要撤单,市价平的,可是直到09:49:31.187才市价平)
TCANCELEX(1,2,\'\',\'\');
TSELL(1,1,MKT,0,0,\'\',\'\');
END

 

 

 



--  作者:jinzhe
--  发布时间:2013/6/21 11:26:08
--  
看前面是“回报” 标示的,上面的回报里面,平仓只有报单,还没有成交
--  作者:mlm102030
--  发布时间:2013/6/21 11:33:08
--  

是呀,因为平仓还没有成交,那么再次开仓的报单不应该有啊;

系统写得不对?

怎么解决这个问题呢?

谢谢!


--  作者:王锋
--  发布时间:2013/6/21 11:48:01
--  求大神帮忙编一个交易系统

从你提交的后台的策略上来看,你只提供了系统记录的日志,但是有个重要的日志你没有记录,就是你应该在策略前期实验阶段将自己内部的日志加上去。比如

 

WCJ:=TREMAINQTY( 1,\'\',\'\');

//开仓和平仓
IF 条件 THEN BEGIN
TBUY(CONDBUY AND TBUYHOLDINGEX( \'\',\'\',0 )=0 AND WCJ<1,1,LMT,CLOSE,0,\'\',\'\');
TSELL(1,1,LMT,TAVGENTERPRICEEX2(\'\',\'\',0)+1,0,\'\',\'\');
END

 

条件 这个变量是至关重要的一个变量,你应该使用DEBUGFILE函数,将产生 条件 这几个相关变量通过日志文件自行记录下来,这样遇到情况,进一步结合系统日志和你自己记录的日志来分析问题。

由于你给出的代码公式不全,不知道你的 条件 这个怎么产生的,假设是由 条件1和条件2生成,那么你应该在你的公式中加入如下调试代码

 

WCJ:=TREMAINQTY( 1,\'\',\'\');

//开仓和平仓

条件1:=***;

条件2:=****;

条件:=条件1 and 条件2;

 

DEBUGFILE(\'D:\\TESTFILE.TXT\',\'条件1=%0.f\',条件1);

DEBUGFILE(\'D:\\TESTFILE.TXT\',\'条件2=%0.f\',条件2);
DEBUGFILE(\'D:\\TESTFILE.TXT\',\'条件=%0.f\',条件);

IF 条件 THEN BEGIN
TBUY(CONDBUY AND TBUYHOLDINGEX( \'\',\'\',0 )=0 AND WCJ<1,1,LMT,CLOSE,0,\'\',\'\');
TSELL(1,1,LMT,TAVGENTERPRICEEX2(\'\',\'\',0)+1,0,\'\',\'\');
END

 

加上上面3行调试语句的目的在于,你可以通过记录盘中的变量变化,找出异常的不符合你条件的变量,顺藤摸瓜找出具体原因。

 

如果你对上述调试没有看懂,建议你参考

 

DEBUGFILE----使用日志方式完善您的策略

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=49428


--  作者:mlm102030
--  发布时间:2013/6/21 12:04:09
--  

谢谢王老师!我再看看;