xywanz / ft Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v2.0
License: GNU General Public License v2.0
问题描述:
策略向ft_trader发消息是通过zmq pub/sub模式。
ft_trader为sub,策略为pub,所以同一时间无法有多个策略绑定到同一个ft_trader
解决方案(TODO):
方案一:采用zmq xpub/xsub模式
方案二:使用redis来发送交易指令
方案三:使用共享内存队列发送交易指令
在ctp附近加的log,和策略ontick加的log比较。
2021-03-25 02:04:39.057.057464 [error][] : instrumentid=ag2106
2021-03-25 02:04:39.057.057794 [info][] : GridStrategy::on_tick ft::datetime::Datetime(2021, 3, 25, 2, 4, 38, 500000),id:au2106, last_price:367.36, grid:5239.00, long:0, short:0, trades:1
有什么办法能减少这个延迟么, 比如跳过redis直接先送到策略。
本人也正在酝酿中,下一步准备根据当前的轮子做一些扩展,如期货跨期套利、ETF套利的支持,完成之后会一次性地提交
都是travis相关的,希望在大家的机器上都能直接编译成功
紧急!!!
请问目前这套系统支持单账户多策略吗?
ctp的中文字符集是gb2312,ft会把其转换成utf8,如果本地没有安装gb2312的话,程序运行到需要转码的地方时会抛出错误,临时的解决办法就是修改gb2312_to_utf8这个函数,使其直接返回传入的字符串即可,但是这样会在运行时打印出乱码。
@DuckDuckDuck0 您好,python的demo使用redis进行通信,添加zmq通信后,使用zmq发生tick和订单回报,python是否还能使用,是不是需要手动切换回redis通信?
zmq连接建立需要时间,但是如果在连接还未建立的时候发送消息,会导致消息丢失。
目前的解决方式是连接建立后等待200ms,更好的解决方案应该是通过poll监听连接成功的事件,但是会让逻辑复杂
仓位、资金等信息都加载到共享内存,行情数据也考虑写入到共享内存。策略程序单独出来,通过共享内存获取仓位资金等信息,并通过共享内存队列进行下单,这样一来既可以解耦各个部分,又可以实现一个策略一个进程。
一是可以把oms和行情系统解耦开。
二是一个行情服务可以同时接入多个行情源,对多个来源的行情进行去重、融合、择优,最后分发给策略。
TradingEngine现在是一个基于tick数据的交易框架,并未提供历史数据的采集、处理等操作,目前需要一套较为完整的历史数据解决方案供策略使用:
是否有开发计划测算 tick to trade 的延迟?
比如使用chrono
提供的 API std::chrono::steady_clock::now().time_since_epoch()
计算 real time latency;或者 tsc frequency 校准不同 CPU core 后计算 CPU time latency?
开发计划:
第一阶段:提供一个完整的策略交易平台,对于速度不做过多优化,能够保证易用性,目前处于该阶段
第二阶段:行情回报分发以及交易指令分发全部基于无锁共享内存队列实现。这个其实可以和第一阶段一起推进,但由于精力有限还未实施
第三阶段:优化数据结构、cache命中率以及整体架构
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.