设计
来源:互联网 发布:域名是什么意思 编辑:程序博客网 时间:2024/04/27 18:58
n =num*quanty
open = history_bars(stock,n,'1m', 'open')
close = history_bars(stock,n,'1m', 'close')
high = history_bars(stock,n,'1m', 'high')
low = history_bars(stock,n,'1m', 'low')
df = DataFrame(index=('open', 'close', 'high','low'))
for i in range(num):
openprice = open[i*quanty]
closeprice = close[(i+1)*quanty-1]
lowprice = np.min(low[i*quanty:(i+1)*quanty-1])
highprice = np.max(high[i*quanty:(i+1)*quanty-1])
df[i] =pd.Series({'open':openprice,'close':closeprice,'high':highprice,'low':lowprice})
df = df.T
return df
大致设计:
目前代码设计比较松散,很多接口都没考虑清楚,暂时大致参考的是华西期货的一个接口,将系统大致定义为下面几个模块:
Api - >Trader ->Strategy ->StrategyExe -> Api
Api - >InstrumentMgr
1.每个Trader,会唯一创建一个Api实例(置于ApiInfo 这个对象里).
2.Api 收到回报(行情回报和交易回报), 会把回报转发给Trader.
3.Trader 负责把消息 转发给Strategy.
4.Strategy 需要下订单,或者取消订单的时候,生成 Signal(信号) 把消息发送给StrategyExe.
5.StrategyExe负责 订单的重发和追单的逻辑。 StrategyExe执行完后,回报Signal 消息 给 Strategy.
6.indexCal:(指标计算,未实现)
系统虽然是按消息设计的,但是每个对象之间又是很紧的耦合, 从上面任何一个对象,可以通过指针指到另外的对象。。。。
这一块到时候统一处理。稳定后会把 消息的架构去掉,进一步提高性能。
系统每一个Trader ,有一个线程,每一个Strategy,会有一个线程负责执行。以后可能会改为更灵活的形式,把Trader,和
Strategy都抽象为状态机。由统一的计算资源负责计算。
代码目录结构:
instrument_info.cpp:InstrumentMgR : 合约管理。提供合约相关的信息查询,包括行情数据(api回报 像 InstrumentMgr 推送数据)
position.cpp : PositonMgr : 策略持仓管理。应该是一个Trader 拥有一个PositionMgr.(多个策略,会有自己的持仓管理)
message_pool.cpp : 由于消息在对个执行对象中传递,目前还没有去free消息。 到时候所有的消息,全部由message_pool自动清理。
ordertrack.cpp : 跟踪一个订单状态的结构
Signal.cpp : 策略,或者指标 负责生成信号。给*策略执行,和策略之间,抽象了一个信号,用于将来解耦和 strategyExe<->signal<->strategy
api_trade.cpp : 交易接口的封装,负责吧交易回报转发给Trader;
api_quote.cpp : 行情接口的封装,负责吧行情回报转发给Trader;
global.cpp : 系统的一些全局变量。将来都要解耦处理,暂时编程方便,都放这里。
conf.json : 代码的配置文件,配置分为离线,和在线。默认运行离线的测试账号
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 设计
- 【设计】
- 设计
- 设计
- 设计
- 设计
- Python之禅
- J2EE:JSTL JSP标准标签库
- UML入门 之 交互图 -- 时序图 协作图详解
- daterangepicker 时间区间选择
- 高分子材料成型(六)
- 设计
- js鼠标按键事件和键盘按键事件用法实例汇总
- android:paddingLeft和layout_marginLeft区别
- HFUTOJ problem 1299实现总结
- Unity WaitForPresent PresentAndSync
- 技术大牛养成指南
- JavaScript 资源大全中文版!
- SetCommMask应用实例(事件处理部分)
- npm ERR! git submodule -q update --init --recursive: fatal: unable to connect to github.com: