-- 作者: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
|
-- 作者:王锋
-- 发布时间: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
|