/sfl_trader

一个简洁快速轻量级的可扩展的程序化交易框架

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

sfl_trader 一个简洁快速轻量级的可扩展的程序化交易框架

  • Linux,python3,目前的交易接口只有CTP
  • 采用了Quicklib的底层架构,感谢Quicklib作者wdgwz
  • pevents将Quicklib使用的Windows系统的WaitForMultipleObjects移植到Linux系统,感谢pevents的作者neosmartmqudsi

扩展

  事件机制类似于WaitForMultipleObjects。目前系统有4个事件,分别为CTP的tick数据,CTP的报单回报,定时任务,循环任务。
  如果想增加事件,首先修改base.cfg中的事件总数,然后在底层调用base.so的api_set函数抛事件,或者用api_base.py中APIBase对象的set方法抛事件。最后自定回调函数,处理事件的线程由my_main.py中的Kernel.api_base.start_wait(FUNC_MAP)启动。base.so的数据在同一个进程中是共用的(确保调用了相同目录下的base.so),在不同的进程间不共用。
  如果想增加交易API,建议在api目录下新建文件夹,调用api/base目录下的base.so将所有事件串联起来。

使用

  CTP行情和交易接口的配置文件分别是md.cfg和td.cfg。
  新建策略:在strategy目录下新建一个python文件,定义一个继承Kernel的策略对象,实现有关的回调函数。
  在my_main.py中实例化策略对象,调用start方法启动策略。
  一个例子见cta_demo.py,该例子的描述见doc目录下的cta_demo描述.docx和cta_demo状态机.pdf。
  登录CTP交易接口时会在当前目录形成一个all_instruments.csv文件,为市场全部合约代码。
  email_queue.py用于发送邮件通知。在策略自动运行于云服务器上,无人看守的情况下,适时发送策略运行情况是很有必要的。邮箱的配置信息在代码中。

作者联系方式

shifulin666@qq.com