等级: 免费版
- 注册:
- 2022-1-15
- 曾用名:
|
之前有个客户问了是否可以引用加密指标中的指标,回答是可以的.但是我在ver7.02中测试的结果是只能将加密截止日期设置到2038/1/18之前.
用了二种测试方式,一种是被引用的指标是技术指标,一种是被引用的指标是一个交易策略.二种方式都存在同样的问题.
//新建技术指标Formula5Z代码如下(逐k模式):
VARIABLE:vhold=0;
mas:=ma(c,20);
maL:=ma(c,60);
if holding=0 and cross(mas,maL) then
begin
vhold:=1;
END
if holding>0 and cross(maL,maS) then
begin
vhold:=0;
END
iLcond:vhold>0,NODRAW;
////////////////////////////////////
//新建策略Formula2代码如下(逐k模式):
mas:=ma(c,20);
maL:=ma(c,60);
if holding=0 and cross(mas,maL) then
begin
buy(1,10,marketr);
END
if holding>0 and cross(maL,maS) then
begin
sell(1,0,marketr);
END
iLcond:holding>1,NODRAW;
新建交易策略mytest中引用的代码如下(逐k模式):
a1:STKINDI('','Formula2.iLcond',0,6,-1),NODRAW;
a2:STKINDI('','Formula5Z.iLcond',0,6,-1),NODRAW;
结论是:
1. 若被引用指标不加密,或加密的截止日期设置到2038/1/18(含)之前,STKINDI输出正常, 若被引用指标加密的截止日期设置到2038/1/18之后,STKINDI输出##.
2. 完全加密输出正常.
另外还发现一个非常隐蔽的使用问题, 比如如果我的策略Formula2打算使用在日线周期上,因此我设置了一个禁用周期,将其他周期都禁止掉,然后策略mytest是5分钟周期上使用,但其中引用了策略Formula2,我知道Formula2只能用于日线,因此是跨周期在日线上引用Formula2,比如 a1:STKINDI('','Formula2.iLcond',0,6,-1),NODRAW; 但是仍然不能正确输出a1.我是过了很久的今天才发现这个非常隐蔽的使用问题. 权当做我的一个备忘,同时也告诉以后的用户.
补充内容 (2024-10-27 22:16):
因为加密截止日期很多时候是随意设置一个未来日期的,因此经常可能设置到一个很远的将来,比如2099年,因此这个2038/1/18的bug还是希望改一下 |
|