以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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线上运行一遍 就出来划线了。