『外汇堂』·专业外汇论坛

标题: 求直盘转交叉盘的数据转换公式 [打印本页]

作者: 追势者    时间: 2010-5-17 16:07
标题: 求直盘转交叉盘的数据转换公式
现在还在搞外汇的历史日线数据。搞到一些直盘的的历史数据。想通过数据转换得到交叉盘的历史数据 。自己写了算法,其中的算法输出数据不对。恳请各位帮忙 。
算法1: 乘法: 例如 从 audusd 和 usdcad 计算出 audcad 货币对的历史日线数据,算法如下:
               $arr[$i]['open'] = $val['open']*$s_curr['open'];
                $arr[$i]['high'] = $val['high']*$s_curr['high'];
                $arr[$i]['low'] = $val['low']*$s_curr['low'];
                $arr[$i]['close'] = $val['close']*$s_curr['close'];
上面 $val 是 audusd 的值,   $s_curr 是 usdcad .  这个算法出的数据没有问题。问题在算法2:

算法2: 除法: 例如从 audusd 和 nzdusd 计算出 audnzd, 算法如下:
               $arr[$i]['open'] = $val['open']/$s_curr['open'];
                $arr[$i]['high'] = $val['high']/$s_curr['low'];
                $arr[$i]['low'] = $val['low']/$s_curr['high'];
                $arr[$i]['close'] = $val['close']/$s_curr['close'];
上面 $val 是 audusd 的值,   $s_curr 是 nzdusd的值。 通过这个算法出的值从 K 线上面明显有问题。毛刺多,不像真实数据。
请大家帮忙看看是什么问题 ? 非常感谢 。.
作者: coollyw    时间: 2010-5-17 16:12
这个open和close是相同时间的,high和low肯定不是相同时间的,这咋对呢。。。
作者: 追势者    时间: 2010-5-17 16:17
原帖由 coollyw 于 2010-5-17 16:12 发表
这个open和close是相同时间的,high和low肯定不是相同时间的,这咋对呢。。。

是这个道理,应该如何修改 ?请教高人 。
作者: coollyw    时间: 2010-5-17 16:19
原帖由 追势者 于 2010-5-17 16:17 发表

是这个道理,应该如何修改 ?请教高人 。


基本没法修改。。。
你只能得到open,close的数据,因为你的历史数据肯定不会是每个时间点都有的,你要找到一个货币high和low的时候的时间,然后根据时间来查另一个货币相应报价才行。
作者: coollyw    时间: 2010-5-17 16:31
另外,叉盘的high和low也不会是直盘的一个high/low去和另一个直盘相对时间换算得到的。
你现在high1*high2和low1*low2得到的是一个叉盘最大,最小值的范围,但是叉盘的high和low应该是两数乘积最大和最小的时候。所以是无解。你应该直接找叉盘的数据。
作者: 追势者    时间: 2010-5-17 16:43
原帖由 coollyw 于 2010-5-17 16:31 发表
另外,叉盘的high和low也不会是直盘的一个high/low去和另一个直盘相对时间换算得到的。
你现在high1*high2和low1*low2得到的是一个叉盘最大,最小值的范围,但是叉盘的high和low应该是两数乘积最大和最小的时候。所 ...

收到,非常感谢 ! 不过我的历史数据主要是用于周线和月线,我就用 open, close 好了。多谢指点迷津 !
作者: 赤脚    时间: 2010-5-17 18:30
楼主用的不是MT4?
怎么我好像没用过这类编程语言一样
作者: 追势者    时间: 2010-5-30 18:27
这个是我自己的程序,同看盘工具和交易工具没有关系。 这个开发语言是 php .

原帖由 赤脚 于 2010-5-17 18:30 发表
楼主用的不是MT4?
怎么我好像没用过这类编程语言一样





欢迎光临 『外汇堂』·专业外汇论坛 (http://forex-town.com/) Powered by Discuz! X3.1