欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]后台程序化问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2894人关注过本帖树形打印复制链接

主题:[求助]后台程序化问题

帅哥哟,离线,有人找我吗?
www532412596
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:58 积分:0 威望:0 精华:0 注册:2019/6/24 16:16:19
[求助]后台程序化问题  发帖心情 Post By:2019/6/26 14:47:44    Post IP:171.212.114.67[只看该作者]

执行后台程序化交易交易时,程序是对股票池里所有符合条件股票同时进行下单,那么为了限制持仓品种数量(只下单符合条件的3只股票),怎么写函数,代码控制一下呢?谢谢帮助

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/6/26 15:03:18    Post IP:180.169.30.6[只看该作者]

 参考THOLDCOUNT( )函数


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
www532412596
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:58 积分:0 威望:0 精华:0 注册:2019/6/24 16:16:19
  发帖心情 Post By:2019/6/26 15:20:07    Post IP:171.212.114.67[只看该作者]

我利用了tholdcount函数 我的代码如下
A:=HOLDING;
B:=1;
IF (THOLDCOUNT('')>=3) THEN BEGIN 
 B=0;
END
TBUY(A=0 AND B=1 ,1 , MKT);
但是我还是没有控制住下单的品种数量,程序瞬间对股票池每个股票都进行了下单操作。

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/6/26 15:43:56    Post IP:180.169.30.6[只看该作者]

 你是用后台监控了股票池的吗?我看了之前的帖子,你是不是在股票池里也设置了下单?
[此贴子已经被作者于2019/6/26 15:45:05编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
www532412596
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:58 积分:0 威望:0 精华:0 注册:2019/6/24 16:16:19
  发帖心情 Post By:2019/6/27 10:32:06    Post IP:171.212.114.67[只看该作者]

我没有在股票中设置下单。我优化了下代码如下:
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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/6/27 10:47:33    Post IP:180.169.30.6[只看该作者]

 这个的话,应该是全局变量赋值上一个时间差。
后面的改下:
EXTGBDATASET('E',D);
TBUY(A AND B AND (EXTGBDATA('E')+1)<3 ,1,MKT);
在下单时候判断,而不是先取值再判断。先取值得话这中间不能保证,前面取得值到下单时候是不是已经在其他地方被重新赋值了。


命数如织,当如磐石。
 回到顶部