[关闭]
@Channelchan 2017-02-17T19:00:18.000000Z 字数 2841 阅读 818

大鱼旧引擎说明

未分类


1.程序化交易初探

2.什么是Bigfish

3.什么是交易策略

4.示例策略

BigFish运行架构

如下图,一段策略代码在BigFish平台上挂载运行的过程可以分为三个阶段:
流程图
- 初始化阶段:
BigFish首先根据用户输入的运行起止时间,K线时间框架,交易品种,起始资金等运行参数生成资金账户(Account)数据发生器(DataGenerator),生成策略运行引擎(StrategyEngine),并根据策略代码生成策略信号(Strategy)对象。它们分别有以下功能:

**Account**:负责管理记录账户的资金情况。

**DataGenerator**:向数据库拉取数据并向**StrategyEngine**推送数据。

**StrategyEngine**:核心事件引擎,管理行情数据、订单请求、订单取消等各种事件,缓存行情数据,保存策略运行时的所有信息。

**Strategy**:将策略代码拆分为多个单独的信号,管理它们的运行。

在BigFish的第一个策略

您进入BigFish云量化平台所见的第一个demo,就是以下这个策略。它包含了在BigFish上实现策略所需要的最最基本的结构。您在新建策略时,也会生成此策略作为模板。您可以在此基础上进行修改以实现自己的策略思想。

  1. def init():
  2. # 初始化方法。在策略运行之初会且仅会执行一次。
  3. # 在该方法中定义的变量均为全局变量,可以在信号方法中访问。
  4. pass
  5. def handle():
  6. # 信号方法。每当有新的数据推送的时候都会执行一次。
  7. # 在该方法中监测市场数据,进行订单操作。
  8. """
  9. 编写你的主要算法逻辑
  10. 通过变量Open,Close,High,Low,Time,Volume获取K线数据。
  11. 通过Buy,Sell,SellShort,BuyToCover进行下单。
  12. 详情请参见BigFish策略开发语法大全。
  13. """
  14. # 若当前没有持仓,且收盘价小于开盘价
  15. if MarketPosition==0 and Close[0]<Open[0]:
  16. Buy(Symbol,1) # 开一手多仓
  17. # 若当前持多仓,且收盘价大于开盘价
  18. elif MarketPosition>0 and Close[0]>Open[0]:
  19. Sell(Symbol,1) # 平一手多仓

需要实现的方法

您在策略代码中需要实现的基本方法分为两种:
- init方法: 该方法接受策略初始化事件,在策略挂载并开始运行时会被调用一次;
- 信号方法: 其他不以init为名的方法将被视为一个“信号”,信号订阅行情数据事件,每当有行情数据更新时都会被执行。在信号中,您可以通过我们提供的系统变量和函数,访问行情数据,持仓信息,订单信息等,并通过相应函数下单。
详情请阅读Bigfish系统关键字与操作符一节。
如果您想了解更多Python语法知识,请查看Python入门语法
为了用户更加方便的实现各种风格的策略,我们将在之后提供对更多特定事件如定时事件乃至用户自定义事件进行接收处理的函数接口。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注