以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]是什么原因导致不正确  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=173376)

--  作者:qwer123
--  发布时间:2019/12/3 15:24:35
--  [求助]是什么原因导致不正确
P2:=IF(ISLASTBAR,DYNAINFO(207),TIME);
P3:=TIME0-TIMETOT0(P2);
P4:=15;

IF P3<=53 AND P3>50 AND TACCOUNT(53) THEN
BEGIN
//*********************
R1:=STKINDIEX(\'RB00\',\'TYRB03TB.持仓\',0,21,6,800);
R2:=STKINDIEX(\'RB00\',\'TYRB03TB.持仓\',0,21,7,800);
R3:=STKINDIEX(\'RB00\',\'TYRB03TB.持仓\',0,21,8,800);
R4:=STKINDIEX(\'RB00\',\'TYRB03TB.持仓\',0,21,9,800);
R5:=STKINDIEX(\'RB00\',\'TYRB03TB.持仓\',0,18,0,800);
//**************
AA1:=IF(R1>0,R1,0);
AA2:=IF(R2>0,R2,0);
AA3:=IF(R3>0,R3,0);
AA4:=IF(R4>0,R4,0);
AA5:=IF(R4>0,R5,0);
AA:=AA1+AA2+AA3+AA4+AA5,LINETHICK0;
//******************
BB1:=IF(R1<0,R1,0);
BB2:=IF(R2<0,R2,0);
BB3:=IF(R3<0,R3,0);
BB4:=IF(R4<0,R4,0);
BB5:=IF(R4<0,R5,0);
BB:=ABS(BB1+BB2+BB3+BB4+BB5),LINETHICK0;
//*******************
CC1:=TBUYHOLDING(1),LINETHICK0;
CC2:=TSELLHOLDING(1),LINETHICK0;
//*******************
DEBUGOUT(\'理论持仓多%.0F\',AA);
DEBUGOUT(\'实际持仓多%.0F\',CC1);
DEBUGOUT(\'理论持仓空%.0F\',BB);
DEBUGOUT(\'实际持仓空%.0F\',CC2);
END

这个程序运行在1分钟K线上,K线用800根,后台。

输出的AA,BB经常为“0”,有时候又是对的,不知道什么地方有问题。
TYRB03TB,是一个成熟的图表交易程序,没有信号闪的问题。如果全是10分钟周期没有发现问题。

--  作者:banzhuan
--  发布时间:2019/12/3 15:51:45
--  
当前周期是1分钟,引用的却是6,7,8,9分钟周期的数据,这种小周期引用大周期存在闪烁的可能性,或者试试分别把R1-R5输出看下呢,是否有持仓。 10分钟周期这样大引小的不会出现信号闪烁了
--  作者:qwer123
--  发布时间:2019/12/3 16:15:44
--  
我用10分钟周期的也不对,如果把6,7,8,9分钟都改成10分钟,好像没有问题,这个要再确认一下。

如何得各个程序的持仓?

--  作者:qwer123
--  发布时间:2019/12/3 16:19:14
--  
AAA

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


--  作者:banzhuan
--  发布时间:2019/12/3 16:27:35
--  
R1:=STKINDIEX(\'RB00\',\'TYRB03TB.持仓\',0,21,6,800);
策略名称为TYRB03TB的持仓是输出的 holding 吗? 如果是的话,那输出的就是该策略6分钟周期的虚拟持仓情况,另外本地数据是否都完整呢?

--  作者:qwer123
--  发布时间:2019/12/3 18:07:44
--  
是holding,数据全,我再找找什么原因吧。
--  作者:qwer123
--  发布时间:2019/12/3 22:22:53
--  
测试了一个晚上,用不同周期,不同的数据长度。。。。
可以肯定在我前面的程序中是无法得到正确的虚拟持仓值的。这是一个很基本的东西,请你们好好排查一下。

--  作者:banzhuan
--  发布时间:2019/12/4 9:03:17
--  
稍等,工作人员本地核实下,稍后给您答复
--  作者:gxx978
--  发布时间:2019/12/4 9:47:23
--  

1、使用不同的数据量,是对虚拟持仓的数量有影响的。

2、本地测试后,在数据补充完整的情况下,stkindiex是固定K线数量的,如果你引用了指定了800根,那等于是在图表上固定了800根K线数据,你可以在图表上使用指定K线数量,后台输出的值对照相应的图表上虚拟持仓的值的。这个固定数量,新来一根K线,会剔除最前面的一根K线的,虚拟持仓是有可能发生变化的。

3、另外后台使用的K线数量对输出也是有影响的,stk函数引用是根据时间对齐来引用的,例如在5分钟周期上引用1分钟,若我指定引用800根,而我在后台上只使用了100根数据,则实际引用的1分钟K线是500根,而不是指定的800根数据量了。


--  作者:qwer123
--  发布时间:2019/12/4 10:24:38
--  
1.用了800根K线在最后一个K线上虚拟仓位是不会发生变化的。
2.后台我用10分钟周期使用800根K线一样无法取得正确的虚拟持仓的。
3.再次测试了一下,如果前面的6.7.8.9分钟全部改为10分钟,那么后台用10分钟就可以得到正确的虚拟持仓。

我已经用其他的方法解决来了我的问题,关于“STKINDI”就讨论到这里,但我依然认为有问题。