这是我掘金的第一篇文章,多了些经历和感想,不算是技术文章,哈哈。
注册掘金这么久了,以前总想着在这里写些技术文章,但总感觉自己技术也就中等,写不出很深刻的技术文章,纵然写了,也跟网上的很多文章雷同,价值不大,再加上AI横空出世,感觉写技术文章似乎已经没有必要了,也就没有动力写。没想到,写的第一篇文章居然是关于rust tushare-api发布的。
24年8月从深圳回到南宁,赞转呆了2个公司,没想到没呆多久裁员的裁员,彻底对找工作绝望了。好在攒了些钱,炒股也有10年了,以前的想法,"要是真找不到工作,就炒股",真成现实了,于是我就想,那就先炒股吧。
炒股嘛,我一直都是逛雪球,看些大V推的股票,然后大概看下行业和基本面,觉得低位就买了。勉勉强强赚些钱,后面陆续看了些金融知识,量化,多因子选股之类的书,感觉我是不是可以使用程序来挖掘下数据呢,这样就既能赚钱,又能积累数据分析能力,保持技术热情,何乐而不为呢。
于是我就四处查找各种金融数据源,后面觉得tushare各方面性价比最高,刚开始是用python来分析,但是官方的sdk都是pandas的输出形式,比适合notebook中进行交互式的分析。后面又看到官方有http接口,所以就使用http的方式来拉取数据了。我本人是个Rustacean, 所以就打算用rust来写自己的数据分析应用。刚开始在crate.io搜了下,没找到好用的crate,所以就自己动手写http接口的封装了,后面感觉把这些接口抽取为独立的crate, 发布出来,方便有需要的人使用呢,于是rust tushare-api 就诞生了。
这个crate,在我看来,功能已经很完善,在易用性和灵活性上,也达到了比较好的平衡。下面是一个简单的例子。
use tushare_api::TushareClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 设置环境变量
std::env::set_var("TUSHARE_TOKEN", "your_token_here");
// 创建客户端
let client = TushareClient::from_env()?;
// 调用 API
let response = client
.call_api(
r#"
{
"api_name": "stock_basic",
"params": { "list_status": "L" },
"fields": ["ts_code", "name", "industry"]
}
"#,
)
.await?;
if let Some(data) = response.data {
println!("获取到 {} 条记录", data.items.len());
}
Ok(())
}
更详细的用法可以在下面github, crate.io中查看