以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 |
-- 作者: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”就讨论到这里,但我依然认为有问题。
|