# rust_crypto **Repository Path**: leochan007/rust_crypto ## Basic Information - **Project Name**: rust_crypto - **Description**: No description available - **Primary Language**: Rust - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-24 - **Last Updated**: 2025-10-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README scp target/debug/trader_main ubuntu@52.195.171.101:/home/ubuntu/tradingroom/leochan curl -i -N \ -H "Connection: Upgrade" \ -H "Upgrade: websocket" \ -H "Host: fstream.binance.com:443" \ -H "Origin: https://fstream.binance.com:443" \ https://fstream.binance.com:443 LC_WS_PROXY=socks5://127.0.0.1:1080 LC_HTTP_PROXY=http://127.0.0.1:1095 cargo run --example binance_futures_websockets1 rust项目rust_crypto是crypto量化交易系统, 生成主项目和子项目的cargo.toml, workspace的resolver是2 1. 公共项目trader_common,包含全部子项目使用的model,市场数据,账户信息,持仓信息,配置,通用下单接口,策略基类(策略的接口能够接受市场数据,无论是ontick实时数据还是从数据库读取的回测数据)等 2. 子项目binance_sdk,对接binance期货api,rest接口和websocket接口要能支持proxy, 支持查询账户,查询持仓,查询订单,查询交易,查询websocket的listenkey,查询tick数据,查询k线数据,对接websocket接口,要支持ping/pong、支持订单回报消息处理、支持成交回报消息处理、支持账户更新消息, config类支持testnet和live切换,以及保存apikey和secretkey, 优化代码,提取公用的查询函数, 单独的model文件,所有的model都有公共的父类,生成一个examples便于测试demo 3. 行情md_gateway子项目,通过子项目2和binance通信,订阅全市场行情,并用zmq对外publish 4. 子项目trader是一个event driven的项目,通过子项目binance_sdk和binance通信,完成下单,撤单,订单管理,策略管理等操作,要能支持backtest和live trading切换,所有的操作进入无锁队列,有2个队列,队列1用于处理下单,撤单等主动请求,查询的回报生成后进入队列2,系统根据加载的策略从项目3 gateway用zmq subscribe订阅行情数据,行情数据也进入队列2,队列2把数据推送到相应策略,处理订单回报、成交回报完成系统的订单以及成交信息更新,并计算更新账户持仓以及策略持仓,计算账户权益以及策略pnl rust项目rust_crypto是crypto量化交易系统,生成每个项目的Cargo.toml, workspace的resolver是2 1. 子项目binance_sdk(lib),对接binance期货api,调用rest接口和连接websocket接口(可以使用proxy) 封装查询账户,查询持仓,查询订单,查询交易,查询websocket的listenkey,查询tick数据,查询k线数据,把查询结果json数据变成struct,websocket连接后,封装ping/pong、订单回报消息处理、成交回报消息处理、账户更新消息,把websocket消息返回值变成struct 初始化模式分为testnet和live两种模式(默认是testnet),http/websocket的proxy,以及apikey和secretkey, 提取公用的查询函数, 单独的model文件,restapi和websocket的消息都统一为baseData(struct)的Composition,生成一个examples便于测试demo 2. 子项目trading_bot(bin),是一个event driven的交易系统 可以加载策略 策略配置文件可以通过参数传入,也可以运行时动态修改 通过binance_sdk和binance通信,订阅所需要品种的行情数据,系统有2个队列,队列1用于处理下单,撤单等主动请求,查询的回报生成后进入队列2,行情数据也进入队列2,队列2把数据推送到相应策略,处理订单回报、成交回报完成系统的订单以及成交信息更新,并计算更新账户持仓以及策略持仓,计算账户权益以及策略pnl,参数可以切换sdk的testnet和live,参数支持apikey和secretkey的传入,参数输入支持backtest dry-run trading三种模式 1. 子项目binance_sdk,fork https://github.com/wisespace-io/binance-rs项目 对其增加代理功能,要求restapi、websocket对接时候都能通过代理实现 用rust构建一个event driven的crypto量化交易系统 1. 生成一个common子项目,里面包含下单接口,策略的基类(包含下单接口的实现类,可以on_tick,on_bar,可以下单 撤单, 策略on_init时候传入下单接口的实现类) 2. 系统可以动态加载策略(文件) 策略配置文件可以通过参数传入,系统本身的参数也由命令行传入,系统参数包含模式选择(testnet or live), 参数支持apikey和secretkey的传入,参数输入支持backtest dry-run trading三种模式 3. 通过binance_sdk和binance通信,通过websocket订阅所需要品种的行情数据,系统自身维护本地order_book 4. 系统有2个队列(crossbeam实现,version 0.6.1),队列1用于处理下单,撤单等主动请求,查询的回报生成后进入队列2,行情数据也进入队列2,队列2把数据推送到相应策略,处理订单回报、成交回报完成系统的订单以及成交信息更新,并计算更新账户持仓以及策略持仓,计算账户权益以及策略pnl # test curl -x http://127.0.0.1:1095 "https://fapi.binance.com/fapi/v1/ticker/bookTicker" curl "https://fapi.binance.com/fapi/v1/ticker/bookTicker" wscat -c "wss://fstream.binance.com/ws/btcusdt@bookTicker" wscat -c "wss://fstream.binance.com/ws/btcusdt@bookTicker" @binance-rs/ 学习这个三方项目 再学习官方api @https://developers.binance.com/docs/derivatives @https://developers.binance.com/docs/binance-spot-api-docs 参考@_web_module/ 以及这里面的项目结构 最后目标是更新优化@rust_crypto/ 的binance_sdk 要能同时支持spot usdm coinm options 有类似的sdk function结构