以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  15分钟周期下,策略重复开仓的问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=54947)

--  作者:ditto9
--  发布时间:2013/8/11 0:01:56
--  15分钟周期下,策略重复开仓的问题

使用固定轮询模式,采取条件成立次周期开盘开仓的方法,在15分钟K线上,策略会重复开仓,一般在K线周期开始后10分钟再次开仓。

问题可能出现在HOLDING函数上,此函数只有在K线走完后,值才会改变,即:虽然我在开盘已开仓,但K线走完之前,HOLDING的值依旧为0,以致在10分钟后,HOLDING=0&&开仓条件依旧成立,系统会再次开仓。

尝试用全局变量替代HOLDING,每次开仓平仓后改变该变量的值,不能解决问题。

同样的策略加载在其他K线周期上都没有出现过问题,可能也与15分钟K线的设置有关。

烦请客户提供一个解决的办法。


--  作者:admin
--  发布时间:2013/8/11 10:46:55
--  
limitr  marketr  holding是本周期刷新
limit    market  holding是次周期

你的问题希望有日志等等说明,否则我们很难判断您说的问题是由什么引起的

--  作者:ditto9
--  发布时间:2013/8/11 15:07:22
--  

谢谢admin,出问题的策略使用的是marketr holding,本周期刷新的话,应该可以排除holding带来的问题。

开仓语句是if holding=0&&ref(开多条件,1) then buy(1,1,marketr);固定1秒轮询,运行在15分钟K线上,会带来前面说的问题,5分钟和10分钟不会。

日志记录在办公电脑里,如果需要等上班发上来。

再次表示感谢。


--  作者:fly
--  发布时间:2013/8/12 9:20:12
--  

固定1秒轮询

用以下代码在15分钟周期上跟踪测试,未发现楼主说的问题

 

buycond:=ref(count(c>o,2)=2,1);
sellcond:=ref(count(c<o,2)=2,1);

 

if buycond  and holding=0  then
 begin
 buy(1,1,marketr);
 end
 
if holding>0 and sellcond  then sell(1,1,marketr);

 

楼主能否提供个可重现问题的简单代码


--  作者:ditto9
--  发布时间:2013/8/12 11:32:32
--  

你好,fly,是实际交易的时候会重复下单,测试的时候不会。

正好今天在实际交易中,螺纹钢有交易两次,下单日志是发到这里还是发你邮箱合适?


--  作者:lichenghu
--  发布时间:2013/8/12 11:33:37
--  
您好,可直接在此处贴日志
--  作者:ditto9
--  发布时间:2013/8/12 12:48:20
--  

以下是10点的第一次开仓,我把交易帐号删除了

2013-08-12 09:59:57.761    【图表】SRX00 运行完毕
2013-08-12 09:59:57.761    【图表】触发下单 BUY 品种 RB00
2013-08-12 09:59:57.761    【图表】模型下单 20
2013-08-12 09:59:57.761    【图表】下单系数调整后 手数:20
2013-08-12 09:59:57.761    【图表】直接下单
2013-08-12 09:59:57.777    【图表】RB00 运行完毕
2013-08-12 09:59:57.777    【图表】Y00 运行完毕
2013-08-12 09:59:57.777    【图表】IF00 运行完毕
2013-08-12 09:59:57.777    【图表】IF00 运行完毕
2013-08-12 09:59:57.777    【图表】IF00 运行完毕
2013-08-12 09:59:57.777    【图表】IF00 运行完毕
2013-08-12 09:59:57.777    【图表】IF00 运行完毕
2013-08-12 09:59:57.777    【图表】RU00 运行完毕
2013-08-12 09:59:57.777    【图表】IF00 运行完毕
2013-08-12 09:59:57.777    【图表】IF09 运行完毕
2013-08-12 09:59:57.777    【下单】RB01 价0.000000 量20 买卖0 类型1 开平0 账户 Formula 1
2013-08-12 09:59:57.777    【下单】确认报单已发送 ID=805439178 RefID = 1387
2013-08-12 09:59:57.824    【指令】收到回报指令 ID = 805439178 RefID = 1387
2013-08-12 09:59:57.855    【指令】收到回报指令 ID = 805439178 RefID = 1387
2013-08-12 09:59:57.855    【指令】收到回报指令 ID = 805439178 RefID = 1387
2013-08-12 09:59:57.870    【指令】收到成交回报指令 REFID = 1387
2013-08-12 09:59:57.886    【回报】 : rb1401 - 已报单 20 价格:3773 开 买
2013-08-12 09:59:57.902    【回报】 : rb1401 - 已成交 20 价格:3770 开 买
2013-08-12 09:59:58.214    【图表】IF00 运行完毕

 

以下是10点10分左右开的第二单

2013-08-12 10:09:59.480    【图表】SRX00 运行完毕
2013-08-12 10:09:59.480    【图表】触发下单 BUY 品种 RB00
2013-08-12 10:09:59.480    【图表】模型下单 20
2013-08-12 10:09:59.480    【图表】下单系数调整后 手数:20
2013-08-12 10:09:59.480    【图表】直接下单
2013-08-12 10:09:59.495    【图表】RB00 运行完毕
2013-08-12 10:09:59.495    【图表】Y00 运行完毕
2013-08-12 10:09:59.495    【图表】IF00 运行完毕
2013-08-12 10:09:59.495    【图表】IF00 运行完毕
2013-08-12 10:09:59.495    【图表】IF00 运行完毕
2013-08-12 10:09:59.495    【图表】IF00 运行完毕
2013-08-12 10:09:59.495    【图表】IF00 运行完毕
2013-08-12 10:09:59.495    【图表】RU00 运行完毕
2013-08-12 10:09:59.495    【图表】IF00 运行完毕
2013-08-12 10:09:59.495    【图表】IF09 运行完毕
2013-08-12 10:09:59.495    【下单】RB01 价0.000000 量20 买卖0 类型1 开平0 账户 Formula 1
2013-08-12 10:09:59.495    【下单】确认报单已发送 ID=805439181 RefID = 1390
2013-08-12 10:09:59.495    【指令】收到回报指令 ID = 805439181 RefID = 1390
2013-08-12 10:09:59.511    【回报】85881001 : rb1401 - 已报单 20 价格:3769 开 买
2013-08-12 10:09:59.527    【指令】收到回报指令 ID = 805439181 RefID = 1390
2013-08-12 10:09:59.527    【指令】收到回报指令 ID = 805439181 RefID = 1390
2013-08-12 10:09:59.542    【指令】收到成交回报指令 REFID = 1390
2013-08-12 10:09:59.574    【回报】 : rb1401 - 已成交 20 价格:3766 开 买
2013-08-12 10:10:00.902    【图表】IF00 运行完毕


--  作者:lichenghu
--  发布时间:2013/8/12 13:08:38
--  
您好,9:59:58系统会划分在10点这根K。而10.09是在10.15分这根K
--  作者:ditto9
--  发布时间:2013/8/12 13:12:35
--  

让我奇怪的是使用的是收盘后次周期开盘开仓,怎么会在9:59:58有成交呢?是时间的设定问题吗?


--  作者:lichenghu
--  发布时间:2013/8/12 13:15:59
--  
以下是引用ditto9在2013/8/11 0:01:56的发言:

使用固定轮询模式,采取条件成立次周期开盘开仓的方法,在15分钟K线上,策略会重复开仓,一般在K线周期开始后10分钟再次开仓。

您好,您采取固定轮询模式,盘中是实时成交的。

而且您成交时间为10.09,明显是固定轮询模式。您可以自己看下设置是否有问题。

[此贴子已经被作者于2013/8/12 13:16:54编辑过]