查看逐行和逐根的源代码
←
逐行和逐根
跳转到:
导航
,
搜索
根据下列原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
=逐行和逐根= 所谓“逐行模式”和“逐根模式”,就是支持序列的指标引擎在背后帮用户进行循环工作时的两种不同的工作模式。 考察macd指标中的两行语句: DIFF : EMA(CLOSE,S) - EMA(CLOSE,P); DEA : EMA(DIFF,M); 在逐行模式和逐根模式中,它们有着不同的循环方式。 ==逐行模式== 假设当前有N根K线。 计算过程: 计算diff的第1个元素,计算diff的第2个元素,............计算diff的第N个元素。 计算dea的第1个元素,计算dea的第2个元素,..........计算dea的第N个元素。 当新行情到来 计算diff的第1个元素,计算diff的第2个元素,.....计算diff的第N个元素,计算diff的第N+1个元素。 计算dea的第1个元素,计算dea的第2个元素,.....计算dea的第N个元素,计算dea的第N+1个元素。 ==逐根模式== 计算过程: 计算diff的第1个元素, 计算dea的第1个元素, 计算diff的第2个元素, 计算dea的第2个元素, ............计算diff的第N个元素。 ..........计算dea的第N个元素。 当新行情到来 ............计算diff的第N+1个元素。 ..........计算dea的第N+1个元素。 ==逐行和逐根的区别== 根据上面的解释,我们可以看到其中的区别: 行模式下,每次新行情的到来,指标引擎都要把需要计算的序列从头到尾全部计算一遍。 逐根模式下,每次新行情到来,指标引擎只计算最新一根的值。 逐根和逐行的更多差异 差异一:计算结果 逐行和逐根可能产生不一样的计算结果。 逐行模式,每次计算都对序列中所有元素重新计算,所以,有些情况下,某些以前计算过的值可能被修改。 也就是调用了俗称所谓“未来函数”一族函数的时候。 在这种情况下,不但调用未来函数的该行语句的序列结果会发生改变,后续语句如果用到被影响的变量,那么它们之前的值也都可能因此发生改变。 而对于逐根模式,每次计算都只计算最新一根,所以即使调用了未来函数,那么它也只改变到该函数直接影响的序列,而很可能不会将改变带给下面的计算。 差异二:计算速度 一般来说,逐行计算在K线图第一次打开时,速度要略快于逐根模式。 因为,对于很多指标,一次整行算完的话,作一些算法上的优化会比较方便。 但是,在新行情到来时,逐根计算就非常有优势了;此模式下,只计算最后一根的数值。 在测评模式下,逐根模式的速度优势可以完全的体现出来。 测评相当于一次性渐次灌入成千上万的行情。逐行的话,要对整行重复计算成千上万次,而逐根模式只需要对单根计算这么多次。 整体时间消耗的差别是几十倍上千倍的。 ==逐行和逐根的适用范围== 一般技术指标比较适用逐行模式。尤其是用到一些传统的未来函数时。例如,backset,zig,refx等。 交易策略指标比较适合逐根模式 ==逐根模式注意事项== 1.凡是未来函数均不能用于逐根模式 未来函数包括zig,paek,refx,backset, 2.所有的序列计算不要包含在if then 语句内。由于每个元素只能计算一次,如果某个序列刚好依赖之前的计算结果,而之前的元素又因为if 条件不满足没有被计算,那么计算结果可能有误。 例如: 不建议这样写 if( marketpostion = 0 ) then aa:= ma( c, 5); 建议的写法是: ma5 := ma( c, 5); if( marketpostion = 0 ) then aa := ma5; ==仅适用于逐根的函数== 1.Text_开头的文本系列函数 2.TL_开头的画线系列函数 3.所有跟交易相关的函数(交易函数、交易绩效函数、交易账户函数、交易状态函数、组合测评函数) 4.应用程序接口函数(AddMenu、OpenChartView) 5.Plot、PlotLine
返回到
逐行和逐根
。
个人工具
内存:18915KB
18.226.214.1
该IP地址的讨论
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
金魔方论坛
下载金魔方
帮助
工具箱
链入页面
链出更改
特殊页面