以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  传递参数的话会发现不能正常修改。  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=94950)

--  作者:qq代人发帖
--  发布时间:2016/3/21 8:51:13
--  传递参数的话会发现不能正常修改。
 请教:金字塔的模块化编程,如果传递参数的话会发现不能正常修改。
 TR1 :=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR: MA(TR1,length),nodraw;
atr2:#atr.atr(length)#,NODRAW;//这个初始的length,修改参数后还是初始化效果。

--  作者:jinzhe
--  发布时间:2016/3/21 8:59:18
--  

自己引用自己?


--  作者:liveup
--  发布时间:2016/3/21 9:12:06
--  
不是自己引用自己,是另一个公式。我把引用和原始算法弄一起,对比一下效果。比如初始length=20,调整length的话,原始算法可以看到改变。 模块编程的效果却没有变化。
--  作者:jinzhe
--  发布时间:2016/3/21 9:13:10
--  
那么引用公式里面的length是怎么定义的?
--  作者:liveup
--  发布时间:2016/3/21 11:00:07
--  
input:length(20,1,100,1);
就是一个input的参数。我就是在编写策略的时候发现模块编程的参数传递,在公式修改参数的时候无效。故意简单用个测试的公式对比。就是简单的传递参数进去,对比就知道了。

--  作者:jinzhe
--  发布时间:2016/3/21 11:06:47
--  
还是不懂你的意思和结论,你把两个公式的代码都贴一下
--  作者:liveup
--  发布时间:2016/3/21 13:29:33
--  
测试模块编程参数传递
{幅图代码}
input:length(20,1,100,1);

TR1 :=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR: MA(TR1,length);
atr2:#atr.atr(length)#;

{代码结束}


把这段代码作为幅图检测一下
后来测试发现:1.用序列模式,这个模块是正常的传递参数。2.如果用逐K线模式,会导致参数传递部正常。
但一般的策略都是用逐K线模式,模块编程引用的部分多数是序列模式。于是就出现冲突了。

--  作者:jinzhe
--  发布时间:2016/3/21 13:38:21
--  
你不是写了两个策略了吗?上面那4句要怎么划分的?
--  作者:liveup
--  发布时间:2016/3/21 13:44:23
--  
把上面的代码,作为幅图测试一下序列模式和逐K线模式就知道了。引用的ATR系统公式是序列模式。如果上面的代码用逐K模式,就会导致传递的参数不能正常调整。
不知道算不算bug,还是因为程序构建的兼容性没考虑到这个细节。

--  作者:jinzhe
--  发布时间:2016/3/21 14:01:46
--  
本地没有发现在逐k线模式下有不正常的地方,用户截图一下自己碰到的问题