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
Methods Summary
在需要生成一个不重复的order_id时提供一个
在这里应实现策略的初始化.
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通常用于实验的情况.