金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 103737

为什么这样统计的多、空笔数与实际不符

[复制链接]

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-5-31 15:05 | 显示全部楼层
zh3:='13434047950';
TH:=THOLDCOUNT(ZH3);
         多手:=0;        空手:=0;
         FOR I=1 TO TH do
         BEGIN
         HLABEL:= THOLDINDEXLABEL(I,ZH3);
         IF TBUYHOLDINGEX(ZH3,HLABEL,1)>0  THEN BEGIN
                    多手:=多手+ TBUYHOLDINGEX(ZH3,HLABEL,1);
         END
         IF TSELLHOLDINGEX(ZH3,HLABEL,1)>0  THEN BEGIN
                 空手:=空手+TSELLHOLDINGEX(ZH3,HLABEL,1);
         END
         
         if TBUYHOLDINGEX(ZH3,HLABEL,1)>0 and TSELLHOLDINGEX(ZH3,HLABEL,1)>0 then
         begin
                 多手:=多手- TBUYHOLDINGEX(ZH3,HLABEL,1)/2;
                 空手:=空手-TSELLHOLDINGEX(ZH3,HLABEL,1)/2;
         end
end        
a:多手;
b:空手;



吧重复多空都有的情况下,要减去0.5,因为减的时候也是重复减少所以0.5
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

69

主题

187

帖子

197

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
a103165
 楼主| 发表于 2021-5-31 20:46 | 显示全部楼层
资深技术02 发表于 2021-5-31 15:05
zh3:='13434047950';
TH:=THOLDCOUNT(ZH3);
         多手:=0;        空手:=0;

原来如此,谢谢
回复

使用道具 举报

69

主题

187

帖子

197

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
a103165
 楼主| 发表于 2021-6-1 21:13 | 显示全部楼层
还是不行啊 ,仓位变动一下就又不对了。
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-6-1 22:20 | 显示全部楼层
看到问题了,问题在上期是今老会分成两个仓位显示,这时候又会再一次造成可能性的重复
我们再想想吧
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

0

主题

2641

帖子

2641

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-6-1 23:46 | 显示全部楼层
需求:统计当前账户栏中所有品种的多方、空方持仓手数。
难点:  同品种多空分行显示,以及上期所今老仓分行显示,   造成后台监控账户栏统计时,存在同品种多次统计的情况。
解决思路:将统计过的品种代码拼接成字符串集合。当前品种再统计时,均在该集合中进行检索,若存在则不执行统计语句,否者进行统计、同时将该品种代码追加到品种代码字符串集合之中。
                 关键代码行:
                        第5行     创建一个空字符串
                        第10行   判断字符串集合中是否包含 ",品种代码"。不包含时,则执行统计语句。否者跳过。
                        第12行   在统计之前,更新字符串集合,将当前品种按照",品种代码"的方式追加到字符串集合尾部。
缺点:字符串操作效率会有所降低。
注:使用 ','拼接分割品种代码,确保在比较时,每个品种代码可以更稳定的对应。统计解决两个品种代码直接被包含的情况:OI2107(菜油)和I2107(矿石07)。

完整代码如下:
[PEL] 复制代码
zh3:='13434047950';
TH:=THOLDCOUNT(ZH3);
         多手:=0;        
         空手:=0;
         TEMP_STR:='';//保存品种代码集合
         FOR I=1 TO TH do
         BEGIN
         HLABEL:= THOLDINDEXLABEL(I,ZH3);
         //判断当前代码集合中是否已经存在,不存在则进行统计。存在则不进入统计模块
         if STRFIND( TEMP_STR, ','&HLABEL,1 )=0 then begin
               //将不在代码集合中的品种添加到代码集合中。
                 TEMP_STR:=STRCAT( TEMP_STR, ','&HLABEL );
                 IF TBUYHOLDINGEX(ZH3,HLABEL,1)>0  THEN BEGIN
                     多手:=多手+ TBUYHOLDINGEX(ZH3,HLABEL,1);
                 END
                 IF TSELLHOLDINGEX(ZH3,HLABEL,1)>0  THEN BEGIN
                     空手:=空手+TSELLHOLDINGEX(ZH3,HLABEL,1);
                 END
                 
                end
        end                
a:多手;
b:空手;

回复

使用道具 举报

69

主题

187

帖子

197

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
a103165
 楼主| 发表于 2021-9-15 01:39 | 显示全部楼层
再请教,以下代码一样存在上述问题,应该如何改写?谢谢

        HC:=THOLDCOUNT(ZH1);
        盈笔1:=0;        亏笔1:=0;        盈利额1:=0;        亏损额1:=0;
        FOR I=1 TO HC do
        BEGIN
        HLABEL:= THOLDINDEXLABEL(I,ZH1);
        IF TBUYHOLDINGEX(ZH1,HLABEL,1)>0 THEN BEGIN
                if TAVGENTERPRICEEX2(ZH1,HLABEL,0)< DYNAINFO2(7,HLABEL) then begin 盈笔1:=盈笔1+1;        盈利额1:=盈利额1+(DYNAINFO2(7,HLABEL)-TAVGENTERPRICEEX2(ZH1,HLABEL,0))*TBUYHOLDINGEX(ZH1,HLABEL,1)*DYNAINFO2(209,HLABEL); end
        END

        IF TSELLHOLDINGEX(ZH1,HLABEL,1)>0 THEN BEGIN
                if TAVGENTERPRICEEX2(ZH1,HLABEL,1)> DYNAINFO2(7,HLABEL) then begin 盈笔1:=盈笔1+1;        盈利额1:=盈利额1+(TAVGENTERPRICEEX2(ZH1,HLABEL,1)-DYNAINFO2(7,HLABEL))*TSELLHOLDINGEX(ZH1,HLABEL,1)*DYNAINFO2(209,HLABEL); end
        END
//**
        IF TBUYHOLDINGEX(ZH1,HLABEL,1)>0 THEN BEGIN
                if TAVGENTERPRICEEX2(ZH1,HLABEL,0)> DYNAINFO2(7,HLABEL) then begin 亏笔1:=亏笔1+1;        亏损额1:=亏损额1+(TAVGENTERPRICEEX2(ZH1,HLABEL,0)-DYNAINFO2(7,HLABEL))*TBUYHOLDINGEX(ZH1,HLABEL,1)*DYNAINFO2(209,HLABEL); end
        END

        IF TSELLHOLDINGEX(ZH1,HLABEL,1)>0 THEN BEGIN
                if TAVGENTERPRICEEX2(ZH1,HLABEL,1)< DYNAINFO2(7,HLABEL) then begin 亏笔1:=亏笔1+1;        亏损额1:=亏损额1+(DYNAINFO2(7,HLABEL)-TAVGENTERPRICEEX2(ZH1,HLABEL,1))*TSELLHOLDINGEX(ZH1,HLABEL,1)*DYNAINFO2(209,HLABEL); end
        END
END
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-9-15 09:15 | 显示全部楼层
你用的是上面代码吗
你代码里字符串判断啥的都没有呀
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2021-9-15 14:12 | 显示全部楼层
盈利金额这个没有办法,比如上海既有今仓和老仓情况下
根据品种返回持仓均价时候无法区分今还是老,她返回的是该品种比如多头的整个一个均价
但是今和老是发开,有可能一个盈利一个亏损,代码区返回只能返回两个综合的一个结果,所以这个没有办法实现了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

69

主题

187

帖子

197

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
a103165
 楼主| 发表于 2022-9-18 00:17 | 显示全部楼层
请问将上述循环统计修改为统计多、空持仓的平均排序名次,这样修改的代码正确吗?谢谢

zh3:='13434047950';
TH:=THOLDCOUNT(ZH3);
         多手:=0;      
         空手:=0;
         多名次:=0;      
         空名次:=0;

         TEMP_STR:='';//保存品种代码集合
         FOR I=1 TO TH do
         BEGIN
         HLABEL:= THOLDINDEXLABEL(I,ZH3);
         //判断当前代码集合中是否已经存在,不存在则进行统计。存在则不进入统计模块
         if STRFIND( TEMP_STR, ','&HLABEL,1 )=0 then begin
               //将不在代码集合中的品种添加到代码集合中。
                 TEMP_STR:=STRCAT( TEMP_STR, ','&HLABEL );
                 IF TBUYHOLDINGEX(ZH3,HLABEL,1)>0  THEN BEGIN
                     多手:=多手+ TBUYHOLDINGEX(ZH3,HLABEL,1);
                     多名次:=多名次+ TBUYHOLDINGEX(ZH3,HLABEL,1)*SELFDATALABEL('DATA1',HLABEL);
                 END
                 IF TSELLHOLDINGEX(ZH3,HLABEL,1)>0  THEN BEGIN
                     空手:=空手+TSELLHOLDINGEX(ZH3,HLABEL,1);
                     空名次:=空名次+ TSELLHOLDINGEX(ZH3,HLABEL,1)*SELFDATALABEL('DATA2',HLABEL);
                 END
                  
                end
        end               
a:多手;
b:空手;
平均名次多:多名次/多手;
平均名次空:空名次/空手;
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-9-18 08:28 | 显示全部楼层
你这个要获取自定义数据,不明白这个自定义数据里的数据是什么呢
你这个名次是想获得什么效果
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-12-22 18:13 , Processed in 0.215775 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表