设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: kuhasu
打印 上一主题 下一主题

[其他] Dukascopy数据下载协作召集

[复制链接]
11#
发表于 2009-2-13 21:48:00 | 只看该作者
就是把一个Candle转成字符串而已。
比如这个Candle是2009-02-12 03:05:10这个时间的,Open是1.3242,Close是1.3223,那么
StringBuilder stamp = new StringBuilder();
//这时stamp是空的
stamp.append(time).append("[").append(format.format(time)).append("] / ");
//stamp的值变成8549823492[2009-02-12 03:05:10.000]/
stamp.append(open).append(" - ").append(close);
//stamp的值变成“8549823492[2009-02-12 03:05:12.000]/1.3242-1.3223”
仅此而已。
hashCode()方法只是为了唯一标识一个CandleData类而已。

如果你下载的是Bin格式的,才需要用他提供的例子。
他的CandleData这个类是为了读BIN格式的。你也不一定要用他的思路。他们网页上已经清楚的说明了各种文件的格式。
你完全可以自己写。
12#
 楼主| 发表于 2009-2-14 00:50:15 | 只看该作者
谢谢!


@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
long temp;
temp = Double.doubleToLongBits(close);
result = prime * result + (int) (temp ^ (temp >>> 32));

呢?

还有8549823492是怎么得出来的呢,转换到时间的算法呢?

[ 本帖最后由 kuhasu 于 2009-2-14 00:52 编辑 ]
13#
发表于 2009-2-14 10:36:30 | 只看该作者
8549823492是1970 年1 月1 日00:00:00 GMT 以来到那个时间点经过的毫秒数。这个数字我是为了举例子随便写的。
hashCode()方法只是为了唯一标识一个CandleData类而已。
可参考阅读http://www.javaresearch.org/article/38075.htm
14#
 楼主| 发表于 2009-2-14 15:28:21 | 只看该作者
谢谢!
举个例子,对于日期时间的longlong型和价格、数量的8 byte long double(8位长双精度)型
01.01.2004 08:00,80.61,80.71,79.8,83.73,252937

00  00  00  F9  CE  BA  B8  00         01.01.2004 08:00
40  54  27  0A  3D  70   A3  D7        80.61
40  54  2D  70  A3  D7  0A  3D         80.71
40  53  F3  33  33   33   33  33         79.8
40  54  EE  B8  51  EB  85  1F         83.73
41  0E  E0  48  00  00   00   00        252937


用java或者C#,怎样进行数据转换呢
还有就是
temp = Double.doubleToLongBits(close);
result = prime * result + (int) (temp ^ (temp >>> 32));
变量我明白,运算符和函数就不懂,请教下,谢谢
15#
发表于 2009-2-14 16:24:50 | 只看该作者
CandleData里的这个方法就是用来转换的啊。
public void fromBytes(byte[] bytes, int off) {
        time = getLong(bytes, off);
        open = getDouble(bytes, off + 1 * 8);
        close = getDouble(bytes, off + 2 * 8);
        low = getDouble(bytes, off + 3 * 8);
        high = getDouble(bytes, off + 4 * 8);
        vol = getDouble(bytes, off + 5 * 8);
    }
运算符和函数是什么意思,我想您google一下就会很容易找到了。
16#
发表于 2009-2-14 16:30:54 | 只看该作者
另外,统一回答一下你的短消息。
我载的是BIN,他是zip压缩的,java有自带的zip解压缩实现,c#也有很多免费的zip解压缩实现。
我没有转成txt,我要的就是二进制的。
某个目录下批量的转化,我想你很容易可以下写一个的。
另外,建议您仔细阅读他们网站上的说明。里面有很多有用的信息。
17#
 楼主| 发表于 2009-2-14 16:41:51 | 只看该作者
原帖由 mugger 于 2009-2-14 16:30 发表
另外,统一回答一下你的短消息。
我载的是BIN,他是zip压缩的,java有自带的zip解压缩实现,c#也有很多免费的zip解压缩实现。
我没有转成txt,我要的就是二进制的。
某个目录下批量的转化,我想你很容易可以下写一 ...



谢谢 我编程方面实在是菜,尤其用C#,java处理数据方面。所以还是决定直接下载那个csv了,尽管稍微慢些。

附上反编译的swf文件。批量下载的时候月份需要注意的是是从0开始代表1月的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
18#
发表于 2009-2-14 18:18:29 | 只看该作者
适合自己的才是最好的!
Good luck!
19#
 楼主| 发表于 2009-2-14 18:33:51 | 只看该作者

回复 18# 的帖子

呵呵,这个东西有什么适合不适合自己的,反正搞完数据也是要共享的。
只不过有方便工具,有几个人互相合作,速度快些罢了。
也不是人人都精通数据转换的数据编程,而且精通一种语言的其他的也不一定精通,熟悉编译的不一定熟悉反编译,
只是这样而已。所以才想到了协作的方式。

bin的文件都是单个的,一段儿一段儿的,那你单个文件怎么用呢?还没有数据库的存储是以一大堆bin做基础的吧
20#
发表于 2009-2-14 20:33:13 | 只看该作者
把文件都拼起来就成一个了~
你也可以不拼,要什么时间的数据,就读什么文件,反正文件命名都有规则的。
至于数据库,bad idea~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|外汇堂·专业外汇论坛    

GMT+8, 2024-4-28 18:26 , Processed in 0.189967 second(s), 24 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表