以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 逐K线问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=10504) |
-- 作者:matador_liu -- 发布时间:2012/3/10 23:01:29 -- 逐K线问题 首先声明,知道各位关于这个问题回答地都想吐了,所以我几乎查阅了所有能搜到的相关帖子,也看了多遍文档,但还是不太明白,想让各位确认一下 。 对于下面这一段运行在逐K线模式下的示例代码,现我描述一下其运行过程,各位看看我理解是否有偏差: runmode : 0; xx:0; fc:=close; fo:=open; if fc>fo then xx:=1 else xx:=0; 1、现我打开一份合约的一分钟K线图,初始有100根K线,这时这段代码会执行100次,即每根K线执行一次; 2、一分钟后,有K线101根,这时这段代码执行101次,每根K线执行一次;(我知道一分种内可能会执行多次,现假设它一分种解析一次) 请教各位,逐K线模式,是以上我描述的情景吗? 如果不是,那照此情景,它是如何运行的? 如果我描述的正确,那么除去刚打开时执行100次初始化外,后面每走一根K线其实是没啥必要扫描前面已执行过的K线的,有什么场景需要再这样呢?我 看到文档说“加减仓、资金管理需要”,但我实在想不到为什么会需要,能不能举个例子? 多谢!俺曾是计算机专业,所以不怕有专业术语,我能听的懂,所以多讲些原理性的东西能加深我的理解:) 另,还提过一个问题,有答案了没? |
-- 作者:王锋 -- 发布时间:2012/3/11 8:35:24 -- 目前你的描述基本正确,金字塔采用这种做法主要是因为用户在正常的实盘过程中,会有很多比如引用其他周期其他品种的数据,跨品种引用其他公式,从数据库调用更新后数据等等复杂操作,只使用最后一个数据,根本无法保证运算的安全性。 基于很多用户的要求,以后会考虑增加选项来解决此问题,但是用户必须是要事先知道只刷新最后一个K线所带来的危险性 |
-- 作者:matador_liu -- 发布时间:2012/3/12 0:56:08 -- 1、 “如果只执行最后一周期,则当跨周期、跨品种引用时,比如跨长周期引用时,则会出现错误,因为跨长周期相当于引用了未来数据,这时需要每个周期上再重新算一遍。” ——我的以上理解是否正确? 2、“打开K线图初始化后,如果按“down”键缩小视图比例看更多K线时,需要重新计算”——这种需要重新计算我能理解:) 3、还有别的情况需要重新计算吗?如果只是以上两种情况,我想我有办法在K线模式下只计算最后一根K线而不出错。 |
-- 作者:董小球 -- 发布时间:2012/3/12 10:57:48 -- 1、不一定会出现错误,但是确实可能会引用未来的数据,如果你引用的是开盘价,那可能就没有未来数据了。 2、对,因为K线数目由增加了,所以程序等于重新加载了一遍指标。 3、我觉得这么解释下楼主可能能更好的理解: 如果你写了一个指标,里面有很多语句,然后还有一个循环10次的循环语句 如果当前画面上有100根K线参与计算,那么: 在序列模式下:程序执行了10次循环,循环语句其实只在最后一根K线上执行,前面K线上只对序列变量做执行了,序列变量就是CLOSE ,OPEN这这样的变量,其实就是个数组! 在逐K线模式下:程序执行了100×10次循环,在每一根K线上都非常非常完整的执行一边公式。
|
-- 作者:matador_liu -- 发布时间:2012/3/12 11:56:01 -- 循环我懂了,请问下面语句: cc := CLOSE; 以上语句,对于序列模式与K线模式是不是都是一样的,即每次刷新都在所有K线上执行一遍?只有波及到判断语句与循环语句时两种模式才不一样? |
-- 作者:董小球 -- 发布时间:2012/3/12 13:27:24 -- 对 差不多可以这么理解 因为CLOSE是序列变量 每个K线上都对应一个数值的,所以只在最后一个K线上运行一遍 就出来划线了。
|