以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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线模式下有不正常的地方,用户截图一下自己碰到的问题 |