Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问一下,我这里为什么会发生程序恐慌? #34

Open
amazcuter opened this issue Nov 22, 2024 · 5 comments
Open

请问一下,我这里为什么会发生程序恐慌? #34

amazcuter opened this issue Nov 22, 2024 · 5 comments

Comments

@amazcuter
Copy link

不确定是不是IP地址的问题,如果是IP地址的问题,请教我如何正确使用。
或者是我使用的问题,如果是,请告诉我正确的使用方法。

#[allow(unused_imports)]
use rustdx::tcp::{ip::STOCK_IP, tcpstream_ip};
#[allow(unused_imports)]
use rustdx::tcp::{
    stock::{Kline, Xdxr},
    SecurityList, Tcp, Tdx,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {

    // // 创建一个新的 TCP 连接,默认连接到第一个可用的 IP 地址
    // let mut api = Tcp::new()?;

    // 指定 IP 地址链接
    let mut api = Tcp::new_with_ip(&"175.178.128.227:7709".parse().unwrap())?;

    // 创建一个查询股票列表的请求
    // 这里使用 market=0 就没问题,1 就会发生程序恐慌,恐慌发生在解析获得的内容的那一步
    let mut security_list = SecurityList::new(1, 0);

    // 发送请求并解析响应
    let result = security_list.recv_parsed(&mut api)?;   //在这里会调用恐慌的代码,似乎是回复的头的问题
    for stock in result {
        println!("Code: {}, Name: {}", stock.code, stock.name);
    }

    // // 创建一个查询深市股票 000001 日线数据的请求
    // let mut kline = Kline::new(0, "000004", 9, 0, 3);

    // // kline.market(1);
    // kline.code("000002");

    // // 发送请求并解析响应
    // let result = kline.recv_parsed(&mut api)?;
    // for kline_data in result {
    //     println!("Date: {}, Open: {}, Close: {}, High: {}, Low: {}, Vol: {}, Amount: {}",
    //              kline_data.dt.clone().into_string(9), kline_data.open, kline_data.close, kline_data.high, kline_data.low, kline_data.vol, kline_data.amount);
    // }

    // // 创建一个 Xdxr 实例,并设置市场和股票代码
    // let mut xdxr = Xdxr {
    //     market: 1, // 0 表示上海市场,1 表示深圳市场
    //     code: "600000", // 股票代码
    //     ..Default::default()
    // };
    // println!("{:?}",xdxr);

    // // 发送请求并解析响应
    // xdxr.recv_parsed(&mut api)?;
    // for xdxr_data in xdxr.result() {
    //     println!("Date: {}, Category: {}, FH_QLTP: {}, PGJ_QZGB: {}, SG_HLTP: {}, PG_HZGB: {}",
    //              xdxr_data.date, xdxr_data.category, xdxr_data.fh_qltp, xdxr_data.pgj_qzgb, xdxr_data.sg_hltp, xdxr_data.pg_hzgb);
    // }
    Ok(())
}
@amazcuter
Copy link
Author

Tcp::new目前还是todu的状态不可以使用对吗,Xdxr那里初始化也只有默认的default()创建的实例可以正常使用,我没有找到可以像kline.code("000002")这样修改code的方法

@zjp-CN
Copy link
Owner

zjp-CN commented Nov 22, 2024

panic 是因为 GBK 解析名称时出错:

debug_assert!(!had_errors);

Tcp 功能已经很久没有维护了,我也不使用它。

rustdx 在 tdx 上的主要功能其实只是解析 zip 历史数据。

@amazcuter
Copy link
Author

amazcuter commented Nov 22, 2024

我如果想要实现pytdxqhget的命令行功能怎么做,您可以指条技术栈吗,比如是怎么明确解析字节码的方式,(大佬教教新手),我想把这个补全一下

@zjp-CN
Copy link
Owner

zjp-CN commented Nov 22, 2024

我是通过阅读博客和查看 pytdx 的源代码来理解如何解析 tdx 的字节码。

如果来自博客,那么 rustdx 的文档里会指出链接;如果来自 pytdx,我会把字节码的含义写在 rustdx 注释里。

@amazcuter
Copy link
Author

好的谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants