1.用户编写的策略脚本,和聚宽风格保持一致,代码可以在聚宽平台运行。
userconfig = { "start":"2018-01-01", "end":"2018-03-29" } def initialize(context): context.current_dt = '2018-01-01' g.today = "2018-03-23" run_daily(market_open, time='open') def market_open(context): print('context:',context.current_dt) pass def handle_data(context, data): #print('HANDLE:',context.current_dt) pass
2.策略环境配置
# -*- coding: utf-8 -*- from userStrategy import userconfig config = { "mod": { "stock": { "enabled": True, }, "future": { "enabled": False, } } } from events import EventBus class Env(object): _env = None def __init__(self, config): Env._env = self self.config = config self.event_bus = EventBus() self.usercfg = userconfig self.global_vars = None self.current_dt = None self.event_source = None @classmethod def get_instance(cls): """ 返回已经创建的 Environment 对象 """ if Env._env is None: raise RuntimeError("策略还未初始化") return Env._env def set_global_vars(self, global_vars): self.global_vars = global_vars def set_event_source(self, event_source): self.event_source = event_source
3.事件及事件注册机
# -*- coding: utf-8 -*- from enum import Enum from collections import defaultdict class Event(object): def __init__(self, event_type, **kwargs): self.__dict__ = kwargs self.event_type = event_type def __repr__(self): return ' '.join('{}:{}'.format(k, v) for k, v in self.__dict__.items()) class EventBus(object): def __init__(self):