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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 删不了要删的股票!

   

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


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

主题:删不了要删的股票!

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


加好友 发短信
等级:新手上路 帖子:77 积分:0 威望:0 精华:0 注册:2017/10/15 22:53:33
删不了要删的股票!  发帖心情 Post By:2018/4/16 13:14:25    Post IP:171.117.138.166[只看该作者]

WARNING_DISABLE:4;
//该模型运行于后台程序化模式
///////////////////////////////////////
IF CURRENTTIME<092900 AND CURRENTTIME>092800 THEN BEGIN
FOR I = 1 TO STKCOUNT('交易板块') DO
BEGIN
HLABEL:=STKFROMBLK('交易板块',I);
A:=DELETEFROMBLOCK(HLABEL,'交易板块');
END
END
//////////////
IF CURRENTTIME<093000 AND CURRENTTIME>092800 THEN BEGIN
FOR I = 1 TO THOLDCOUNT('') DO
BEGIN
HLABEL:= THOLDINDEXLABEL(I,'');
B:=ADDTOBLOCK(HLABEL,'交易板块');
END
END
//////////////
IF ((CURRENTTIME<113000 AND CURRENTTIME>093000) OR (CURRENTTIME<150000 AND CURRENTTIME>130000)) THEN BEGIN
FOR I = 1 TO THOLDCOUNT('') DO
BEGIN
HLABEL:= THOLDINDEXLABEL(I,'');
B:=ADDTOBLOCK(HLABEL,'交易板块');
END
END
//////////////

///////////////////////////
IF (CURRENTTIME<=223000 AND CURRENTTIME>093000)  AND (THOLDCOUNT('')>=1)  THEN BEGIN
FOR I = 1 TO THOLDCOUNT('') DO
BEGIN
HLABEL:= THOLDINDEXLABEL(I,'');
B1:=CALLSTOCK(HLABEL,vtCLOSE,6,-1);
B2:=CALLSTOCK(HLABEL,vtCLOSE,6,0);
B3:=CALLSTOCK(HLABEL,vtCLOSE,6,-2);
B4:=CALLSTOCK(HLABEL,vtCLOSE,6,-1);
IF (B2-B1)/B1>0.095 OR (B4-B3)/B3>0.095 THEN CONTINUE;
IF TBUYHOLDINGEX('',HLABEL,0 )>0 THEN BEGIN
TSELL(1,TBUYHOLDINGEX( '',HLABEL,0),MKT);
Z:=CURRENTTIME;
T:=DELETEFROMBLOCK(HLABEL,'交易板块');
END
END
END
//////////////
该段代码是不是有错误?为何交易板块中的股票会有删不了的股票?

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


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2018/4/16 13:34:46    Post IP:180.169.30.6[只看该作者]

DELETEFROMBLOCK函数删除后,动态显示牌不会自动刷新,属于显示问题,但是实际已经删除了,这个问题在即将发布的4.7版本中会修复。


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

 
图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


dt:EXTGBDATA('dt');
if dt<>date then //判断今日是否运行过该程序,运行过则不进行添加品种到版块的操作
begin
EXTGBDATASET('dt',date);
EXTGBDATASET('isRun',0);
end

s:EXTGBDATA('isRun');
//加品种到版块
if s=0 then
begin
for i=1 to THOLDCOUNT('') DO
begin
code:=THOLDINDEXLABEL(i,'');//品种代码
num:=TBUYHOLDINGEX('', code,2);//取得今持仓数量
if num>0 then
begin
T:=ADDTOBLOCK(code,'测试');
end
end
EXTGBDATASET('isRun',1);
end


//测试品种删除操作
FOR I = 1 TO THOLDCOUNT('') DO
BEGIN
HLABEL:= THOLDINDEXLABEL(I,'');
IF TBUYHOLDINGEX('',HLABEL,0 )>0 and HLABEL='NMHO05' THEN BEGIN 
TSELL(1,TBUYHOLDINGEX( '',HLABEL,0),MKT);
q:=DELETEFROMBLOCK(HLABEL,'测试');
DEBUGOUT(NUMTOSTR(q,1),0);
END
END

上面代码:实现每日添加品种到版块的代码只执行一次,无论何时启动程序化都一样。
你原始代码存在的一个问题是:不断把品种加到版块去了,导致最终结果可能是品种无法删除,其实可能是二次添加造成的。所以其实没必要写多个时间段的添加品种到版块的代码。

上面代码测试的时候 正常删除。你把你原先多个时间段加品种的代码替换成我例子里实现方式再测试下。


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


加好友 发短信
等级:新手上路 帖子:77 积分:0 威望:0 精华:0 注册:2017/10/15 22:53:33
  发帖心情 Post By:2018/4/24 10:16:02    Post IP:171.118.192.58[只看该作者]

谢谢

 回到顶部