开拓者期货期权程序化系统交易论坛

标题: 1分钟周期下CloseD()函数错误,请求答复,谢谢 [打印本页]

作者: wfkxdzc2017    时间: 2017-4-17 22:02:54     标题: 1分钟周期下CloseD()函数错误,请求答复,谢谢

1分钟周期下调用CloseD()函数得到的数值与实际存在差距,比如在橡胶连续1分钟周期下,CloseD(1)到CloseD(12)数值都是正确的CloseD(13)开始数值跟实际上就存在差距,同样运用CloseD()函数在1分钟周期下计算日线级别的5日均线和10日均线都是准确的,20日均线和60日均线就不准确了,本人经过多次测试,发现就是CloseD(13)开始数值不准确而引发的,请求解决,谢谢!
作者: wfkxdzc2017    时间: 2017-4-17 22:07:19

查询CloseD()函数源码逻辑上应该没错,真是想不通CloseD(12)准确,CloseD(13)就开始不准确了,我开始以为是回溯最大量的限制,所以就在1分钟周期下将CloseD(13)需要的BAR数计算后用Close[n]去回溯,得到数值是正确的,那么问题就出在CloseD(13)
作者: wfkxdzc2017    时间: 2017-4-17 22:36:07

省略变量和参数设定。。。
f(CurrentBar == 0 || TrueDate(0)!=TrueDate(1))
        {
                barC= 1;
        }Else
        {
                barC = barC + 1;
        }
For i = 1 To (oLength2-1)
                {
                        If( i == 1)
                        {       
                                j = 0;
                        }Else
                        {
                                j = j + barC[j];
                        }
                        If (j > barC)
                        InvalidNumeric;
                        nIn= nIn + barC[j];
                        suma=suma+Close[nIn];
                }
                Ma1=(suma+Close)/oLength2;
作者: wfkxdzc2017    时间: 2017-4-17 22:38:44

1分钟下求日线的5日均线数值和10日均线数值都是准确的  20日 和60日不准 CloseD(13)就不准了,用最土的CloseD(0)+CloseD(1)....一直加到CloseD(19)然后除20也是不准,版主大人和高手们求助
作者: 小米    时间: 2017-4-18 10:20:00

wfkxdzc2017 发表于 2017-4-17 22:38
1分钟下求日线的5日均线数值和10日均线数值都是准确的  20日 和60日不准 CloseD(13)就不准了,用最土的Cl ...

使用的是plus版本么?
plus里可回溯的周期是有限制的,如果closeD用在小周期图表上,到一定的数量后,就没法回溯取值。
于是会出现当前所表现出来的10多天后就不准确的问题了。
作者: wfkxdzc2017    时间: 2017-4-18 20:03:00

小米 发表于 2017-4-18 10:20
使用的是plus版本么?
plus里可回溯的周期是有限制的,如果closeD用在小周期图表上,到一定的数量后,就 ...

谢谢版主 我用的是plus版本!但是CloseD(13)换算成1分钟周期下应该要的BAR数,假设是n个1分钟bar,然后用Close[n]为什么是准确的? 是在1分钟周期下Close函数的回溯CloseD要长吗?  还有我想全自动化交易不用plus版本还可以用什么版本比较好呢?   或者请版主麻烦下教我在plus版本下1分钟周期下  如何可以准备的引用日线20日均线  5日和10日我没问题  谢谢
作者: wfkxdzc2017    时间: 2017-4-18 23:09:54

小米 发表于 2017-4-18 10:20
使用的是plus版本么?
plus里可回溯的周期是有限制的,如果closeD用在小周期图表上,到一定的数量后,就 ...

版主  我用了旗舰版也是这样  橡胶连续1分钟周期下求5日线和10日都准确 20日线均线显示价格是15870,实际是15960 相差百来点   怎么办呢 版主大家  求帮助
作者: 小米    时间: 2017-4-19 10:45:07

wfkxdzc2017 发表于 2017-4-18 23:09
版主  我用了旗舰版也是这样  橡胶连续1分钟周期下求5日线和10日都准确 20日线均线显示价格是15870,实际 ...


旗舰版上使用closeD()取值是没有任何问题的。。
你所说的求20日均线是指使用了averageD这个函数吗?我这边测试结果也是OK的哟。。你再检查一下是不是数据量不够啊?
[attach]35428[/attach]
作者: wfkxdzc2017    时间: 2017-4-19 20:55:21

本帖最后由 wfkxdzc2017 于 2017-4-19 21:40 编辑
小米 发表于 2017-4-19 10:45
旗舰版上使用closeD()取值是没有任何问题的。。
你所说的求20日均线是指使用了averageD这个函数吗?我这 ...


谢谢版主!我不是用averageD求的!用FOR 循环也计算过 用最土的(closeD(0)+closeD(1)+closeD(2)+..+closeD(19))/20;也计算过,在1分钟周期下不行换5分钟周期也不行,版主你计算的closeD(5)和closeD(10)确实是没问题的,包括计算5日均线和10日均线也都没问题,关键是在1分钟周期下调用日线20日均线就不准了,前天是closeD(13)开始不准,昨天是closeD(16),今天是closeD(18)开始不准 我旗舰版本和plus 都试过!版主帮我再想想办法,你可以就用最原始的方法试试一目了然谢谢!!
作者: wfkxdzc2017    时间: 2017-4-19 20:57:35

本帖最后由 wfkxdzc2017 于 2017-4-19 20:59 编辑
小米 发表于 2017-4-19 10:45
旗舰版上使用closeD()取值是没有任何问题的。。
你所说的求20日均线是指使用了averageD这个函数吗?我这 ...


讲的啰嗦了不好意思,简单讲就是在1分钟周期下调用日线周期的20日均线无法准确,包括plus和旗舰版,求解决方法!对了数据是够得,我都360天的数据,旗舰版本都几年的数据
作者: wfkxdzc2017    时间: 2017-4-19 21:35:51

本帖最后由 wfkxdzc2017 于 2017-4-19 21:39 编辑
小米 发表于 2017-4-19 10:45
旗舰版上使用closeD()取值是没有任何问题的。。
你所说的求20日均线是指使用了averageD这个函数吗?我这 ...


版主大人我刚在1分钟周期又测试了下你用的  averageD(1,20)数值是15879跟你的15877吻合 因为你是早上10点多测试的 我是晚上8点多测试的所以没问题,但是问题是你将你的averageD(1,20)和日线下average(close,20)进行对比得出都是15877,这个15877本身就是错误的数据,正确的20日均线价格应该是15969.  我用最原始的把今天开始20天来得收盘价写下来用计算机加了下再除20,今天是14385,昨天14610,一直加到19天前,总和是319395,再除20得数是15969!求帮忙  真的是有问题的!!
如何闲麻烦 你可以随便打开一个期货行情软件  看下今日14:59收盘的20日均线价格 是不是15969,可能会是15970,你的15877本身就是错误的
作者: wfkxdzc2017    时间: 2017-4-19 21:58:24

本帖最后由 wfkxdzc2017 于 2017-4-19 22:10 编辑

[attach]35446[/attach]
图1是旗舰版系统自带的AverageFC(Close,Length3)函数 求20日均线   数值也是15879  ,图2是我用的博弈大师期货行情软件显示的4月19日14:59分今日收盘的20日均线价格15970,经过我手工计算15970是正确的,不管是plus还是期间版本用的Average(1,20),AverageFC(Close,20),或者机械的(CloseD(0)+..+CloseD(19))/20等等计算的结果都是跟实际有大偏差的
作者: 小米    时间: 2017-4-24 13:18:07

wfkxdzc2017 发表于 2017-4-19 21:58
图1是旗舰版系统自带的AverageFC(Close,Length3)函数 求20日均线   数值也是15879  ,图2是我用的博弈大师 ...


可能您的判断上有一些偏差了。。
首先,旗舰版与TBplus的对换月的规则是不相同的。博易大师的换月规则与TB的是否一样,我就不太清楚了。估计也是不同吧。。
这个问题以我们19号那天的测试情况来看,20日均线是包括了3月21日至4月19日的数据。这中间恰逢旗舰版在3月24日收盘后换月。

为了向你证明旗舰版的数据没有错,函数没有错,计算没有错。姐姐专门去上海期货交易所的官网将这20天的数据一一对比查询了。。发现TB软件旗舰版上的日线数据与之一样的,没有丝毫的数据差异。
另外,我在19日那天测试截图时,并非收盘后,所以计算中所使用的最新价14335并非你晚上测试时的当日收盘价14385。
以14335做为19日的收盘价,计算出来的20日线的总和是317545,再除以20,结果就是15877.25。
在下面的截图里,显示的数据是从交易所给出的历史数据一个个查询的,且与TB旗舰版上显示的数据也是一致的。如果不放心我的查询结果,你可以自己再查一遍。
链接奉上,请查阅。http://www.shfe.com.cn/statements/dataview.html?paramid=kx

[attach]35468[/attach]
作者: wfkxdzc2017    时间: 2017-4-27 00:43:59

小米 发表于 2017-4-24 13:18
可能您的判断上有一些偏差了。。
首先,旗舰版与TBplus的对换月的规则是不相同的。博易大师的换月规则与T ...

谢谢小米版主!应该是由于换月引起的,我直接用9月测试没问题!谢谢!!

请问目前在旗舰版下可以编写自动换月吗,就是自动平仓后自动加载新的主力超级图表合约,然后自动加载策略到新的超级图表并自动化运行!
作者: 小米    时间: 2017-4-28 08:55:17

wfkxdzc2017 发表于 2017-4-27 00:43
谢谢小米版主!应该是由于换月引起的,我直接用9月测试没问题!谢谢!!

请问目前在旗舰版下可以编写自 ...

一般是使用主力或是指数合约加载公式信号,并映射到主力上进行交易。。
这种只需要在换月后重启一下软件,并使用一键 同步进行移仓就行了。

作者: cnjiang    时间: 2017-5-20 11:30:18

有时是因为数据缺失造成的,我原来编写跨周期函数,近期的正确,再久一些就不准确,检查后发现数据偶有缺失1bar或几bar,后来修改函数,增加了容错性,太不容易了




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2