以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [求助]后台程序化问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=170663) |
-- 作者:www532412596 -- 发布时间:2019/6/26 14:47:44 -- [求助]后台程序化问题 执行后台程序化交易交易时,程序是对股票池里所有符合条件股票同时进行下单,那么为了限制持仓品种数量(只下单符合条件的3只股票),怎么写函数,代码控制一下呢?谢谢帮助 |
-- 作者:FireScript -- 发布时间:2019/6/26 15:03:18 -- 参考THOLDCOUNT( )函数 |
-- 作者:www532412596 -- 发布时间:2019/6/26 15:20:07 -- 我利用了tholdcount函数 我的代码如下 A:=HOLDING; B:=1; IF (THOLDCOUNT(\'\')>=3) THEN BEGIN B=0; END TBUY(A=0 AND B=1 ,1 , MKT); 但是我还是没有控制住下单的品种数量,程序瞬间对股票池每个股票都进行了下单操作。
|
-- 作者:FireScript -- 发布时间:2019/6/26 15:43:56 -- 你是用后台监控了股票池的吗?我看了之前的帖子,你是不是在股票池里也设置了下单? [此贴子已经被作者于2019/6/26 15:45:05编辑过]
|
-- 作者:www532412596 -- 发布时间:2019/6/27 10:32:06 -- 我没有在股票中设置下单。我优化了下代码如下: CC:=HOLDING; A:=IF(CC=0,1,0); B:=1; D:=THOLDCOUNT(\'\'); IF (D>=3) THEN BEGIN B=0; END
EXTGBDATASET(\'E\',D); E:=EXTGBDATA(\'E\')+1; F:=IF(E<=3,1,0); TBUY(A AND B AND F ,1,MKT); 增加E为全局变量,控制下单数,但是结果下单数变少了,但是还是超过了3,成交了7单。
|
-- 作者:FireScript -- 发布时间:2019/6/27 10:47:33 -- 这个的话,应该是全局变量赋值上一个时间差。 后面的改下: EXTGBDATASET(\'E\',D); TBUY(A AND B AND (EXTGBDATA(\'E\')+1)<3 ,1,MKT); 在下单时候判断,而不是先取值再判断。先取值得话这中间不能保证,前面取得值到下单时候是不是已经在其他地方被重新赋值了。
|