

Rhino | 如何兼容不同交易所的差异性
source link: https://benpaodewoniu.github.io/2022/12/25/tomoon57/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

虽然,我们从交易所获取的数据类型都大致相同,比如 ticker
、depth
、trade
等。
交易所返回格式不一样
比如,binance
的 深度信息是
{
"lastUpdateId": 1027024,
"E": 1589436922972, // 消息时间
"T": 1589436922959, // 撮合引擎时间
"bids": [ // 买单
[
"4.00000000", // 价格
"431.00000000" // 数量
]
],
"asks": [ // 卖单
[
"4.00000200", // 价格
"12.00000000" // 数量
]
]
}
而其他交易所可能不是这个组织形式。
所以,我们需要自定义自己的各类型数据结构,比如,我的 trade
数据为
@dataclass
class RhinoTrade(BaseInfo):
price: float = 0
amount: float = 0
time: int = 0
direction: Union[OrderDirection, PositionDirection] = OrderDirection.BUY.value
limit: int = 1000
trade_start_time: int = 0
trade_end_time: int = 0
def __str__(self):
return f"trades: {self.chain}_{self.cex_exchange_sub}_{self.dex_exchange}_{self.real_pair}"
这样,不同的交易所数据到来之后,我们根据交易所实际数据存放到 RhinoTrade
里面然后抛出就好了。这样,最后你拿到交易所传过来的数据后,就不需要考虑交易所之间的差异了。
不同交易所 API
之前我在对接 mexc
的时候,那个时候还是 V2,现在部分已经升级到 V3
了。
从 V2
升级到 V3
是非常阵痛的,因为,当时在设计的时候就没有考虑这种情况。比如,查询 order
信息。最开始是这样写的
def get_order(self,order_id);
这里面就一个参数 order_id
,但是,升级到 V3
后,单一的传参满足不了更复杂的场景了,比如,它让你传 symbol
、时间等。所以,如果持续添加参数,对之前的逻辑维护起来代价非常大。
所以,传参我最后也采用了自定义数据结构,比如
def get_order(self,rhino_order);
其中 rhino_order
是和上面 RhinoTrade
类似的自定义对象,这样的话,需要什么参数,就在对象里添加新的属性就好了,不会对之前的逻辑造成影响。
</div
Recommend
-
51
本文为作者原创,转载请注明出处。 我们都知道Java是跨平台的,一次编译,到处运行,本质上依赖于不同操作系统下有不同的JVM。到处运行是做到了,但运行结果呢?一样的程序,在不同的JVM上跑的结果是否一样呢?很遗憾,程序的执...
-
8
先知:https://xz.aliyun.com/t/7544 0x01 简介Tomcat是常见的Web中间件,实际上是利用NIO技术处理HTTP请求,在接收到请求时会对客户端提交的参数、URL、Header和Body数据进行解析,并生成Request...
-
7
V2EX › C++ 请教 cmake 中如何兼容不同的编译环境 Yc1992 · 17 小时 42 分钟前 · 631 次点击
-
5
请问如何使用phpstorm比较本地项目和远程服务器项目的文件的差异性? - OSCHINA - 中文开源技术交流社区 开源问答
-
8
Helm Chart 兼容不同 Kubernetes 版本-阳明的博客|Kubernetes|Istio|Prometheus|Python|Golang|云原生 图片来源 -> https://unsplash.com/photos/sf99zPcy8dQ 随着 Kubernetes 的版本不断迭代发布,很多 Helm Chart...
-
5
Alipay OpenAPI同步/异步验签,请注意编程语言对JSON处理的差异性 支付宝OpenAPI返回的是JSON字符串,不同开发语言对unicode及slash等处理上会存在差异。按标准JSON规格文档来说,严格意义上对负载有歧义的字符是需要做转义,如斜杠(
-
5
-
8
IM开发干货分享:IM客户端不同版本兼容运行的技术思路和实践总结
-
5
rhino | 如何解决网格的单边下跌问题 | 犀牛的博客 犀牛的博客 ...
-
5
如何用标准化SaaS系统去兼容企业的不同诉求? 灰研走B 2023-12-19
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK