Strategy

class base.Strategy.Strategy(endpoint: str, tick_size: int, credentials: Optional[dict] = None)

Bases: abc.ABC

策略基类. 所有具体的策略都应该实现策略基类没有实现的每一个函数.

todo: 检查实盘模拟盘等的sim_flag等参数是否正确命名+设置了. :param endpoint: 策略指向的运行点, 允许的值包括:

  • real: 实盘

  • simulation: 模拟盘

  • cn: 从国内进行的实盘测试(通过代理获取数据, 发送请求) - 不稳定!

  • real-simulation: 实盘的模拟测试, 数据经由实盘, 但不真正下单.

    todo: 还没有完成

  • backtest: 回测系统

    todo: 还没有完成

Parameters
  • tick_size – 每`tick_size` ms执行一次`on_tick()`方法, 用于定期清理缓存的数据, 避免内存占用过大等.

  • credentials – 包含api信息的字典, 其应包含以下key: api_key, api_secret_key, passphrase

Attributes Summary

history_data

Methods Summary

gen_client_order_id()

在需要生成一个不重复的order_id时提供一个

init_strategy()

在这里应实现策略的初始化.

on_balance_update(hist_balance, balance)

当账户数据发生更新的时候就会被调用.

on_data(data)

当接收到新市场数据就会调用.

on_orders_update(hist_orders, orders)

当订单数据发生更新的时候就会被调用.

on_position_update(hist_position, position)

当账户仓位数据发生更新的时候就会被调用.

on_tick()

每一定时间会调用这个函数.

start([timeout])

启动策略.

Attributes Documentation

history_data: Dict[str, Dict[str, numpy.ndarray]]

Methods Documentation

gen_client_order_id()

在需要生成一个不重复的order_id时提供一个

abstract init_strategy()

在这里应实现策略的初始化. 设定一些策略需要的参数等.

abstract on_balance_update(hist_balance, balance)

当账户数据发生更新的时候就会被调用.

由于市场的变动, 差不多每10s一定会被调用一次. 应在这里进行一些账户的统计分析. 由于更新频次不确定, 函数可能在短时间内会被调用多次, 注意兼容这种情况.

todo: 提供更新的地方

Parameters
  • hist_balance – 旧账户信息

  • balance – 新账户信息

abstract on_data(data: Dict[str, Dict[str, numpy.ndarray]])

当接收到新市场数据就会调用. 完成市场逻辑判断并下单

Parameters

data – 新接收到的市场数据

abstract on_orders_update(hist_orders, orders)

当订单数据发生更新的时候就会被调用.

应在这里进行一些订单的统计分析. 也可以在这里设定取消订单的逻辑等. 由于更新频次不确定, 函数可能在短时间内会被调用多次(例如多次分笔成交), 注意兼容这种情况.

todo: 提供更新的地方

Parameters
  • hist_orders – 旧所有订单信息

  • orders – 更新后所有订单信息

abstract on_position_update(hist_position, position)

当账户仓位数据发生更新的时候就会被调用.

由于市场的变动, 在有仓位的时候差不多每几s一定会被调用一次. 应在这里进行一些账户的统计分析. 但不应在这里进行调仓的操作 (除非是紧急清仓等一次性动作) 由于更新频次不确定, 函数可能在短时间内会被调用多次, 注意兼容这种情况.

todo: 提供更新的地方

Parameters
  • hist_position – 旧仓位信息

  • position – 新仓位信息

abstract on_tick()

每一定时间会调用这个函数. 在这里执行一些定时统计/清理任务等.

start(timeout=- 1)

启动策略.

Parameters

timeout

程序的阻塞时间(s), <0表示永远运行, =0不阻塞, >0阻塞相应秒数 - 在交互模式下(Interactive console), 通常不阻塞(设为0) - 在其他情况下, 通常需要设定阻塞时间, <0意味着会永远运行下去,

>0通常用于实验的情况.