6个版本
0.1.7 | 2019年6月1日 |
---|---|
0.1.6 | 2019年3月26日 |
0.1.4 | 2019年2月5日 |
#83 in #downloader
54KB
1.5K SLoC
Pikmin
一个可扩展的下载数据获取器,可从交易所API同时获取交易数据。
pikmin
是一个加密货币交易所(如BitMex、bitFlyer、Liquid等)的交易(执行)数据下载器。这个库不仅提供了一些预构建的下载数据获取器,还允许用户根据需求构建自定义的下载数据获取器。
预构建的下载数据获取器
目前,这个库有以下下载数据获取器
- BitMex(指定时间,按时间顺序)
- bitFlyer(指定id,按时间顺序的逆序)
- Liquid(指定时间,按时间顺序)
内置的Writer
Writer
是交易数据和目标(通常是数据库)之间的处理器。Pikmin有一些内置的Writer
- MySQL
- stdout
您可以轻松创建自己的Writer。
示例
一个简单的Liquid下载数据获取器,写入stdout。这个程序创建./qn-progress.txt
以记录进度,因此如果您想从起点再次运行,请删除它。
use std::path::PathBuf;
use std::thread;
use std::time::Duration;
use chrono::offset::TimeZone;
use chrono::Utc;
use pikmin::downloader::Downloader;
use pikmin::FileRecorder;
use pikmin::LiquidDownloader;
use pikmin::StdOutWriter;
fn main() {
// by using thread, you can run multiple downloaders
let liquid = thread::spawn(move || {
while {
// download data from 2019-01-01T01:01:01Z to 2019-01-01T01:03:01Z
// output the downloaded data to standard out (println!)
let downloader = LiquidDownloader::new(
Utc.ymd(2019, 1, 1).and_hms(1, 1, 1),
Utc.ymd(2019, 1, 1).and_hms(1, 3, 1),
);
// Locate progress file to `/tmp/qn-progress.txt`.
// You can control the starting point of downloading
// by preparing this file before you run.
let mut recorder = FileRecorder::new(PathBuf::from("/tmp/qn-progress.txt"));
// write out to standard out. simple writer for debugging
let mut writer = StdOutWriter::default();
println!("start QnDownloader");
// run!
match downloader.run(&mut writer, &mut recorder) {
Ok(_) => {
println!("finished");
false
}
Err(e) => {
println!("error: {}", e);
println!("retry...");
thread::sleep(Duration::from_secs(5));
true
}
}
} {}
});
match liquid
.join()
{
Ok(_) => println!("finish all"),
Err(_) => println!("threading error"),
}
}
其他示例可以在./examples
中找到。
未来工作
- 为其他交易所创建预构建的下载数据获取器
- 参数化下载数据的方向(按时间顺序或不是)
- 进度写入器的抽象
依赖关系
~28MB
~592K SLoC