Beispiel #1
0
def md(ctx, source, low_latency):
    pass_ctx_from_parent(ctx)
    ctx.name = 'md_' + source
    ctx.source = source
    ctx.low_latency = low_latency
    ctx.logger = create_logger(source, ctx.log_level, pyyjj.location(pyyjj.mode.LIVE, pyyjj.category.MD, source, source, ctx.locator))
    run_extension(ctx, EXTENSION_REGISTRY_MD)
Beispiel #2
0
def td(ctx, source, account, low_latency):
    pass_ctx_from_parent(ctx)
    ctx.name = 'td_' + source + '_' + account
    ctx.source = source
    ctx.account = account
    ctx.low_latency = low_latency
    ctx.logger = create_logger(source, ctx.log_level, pyyjj.location(pyyjj.mode.LIVE, pyyjj.category.TD, source, account, ctx.locator))
    run_extension(ctx, EXTENSION_REGISTRY_TD)
Beispiel #3
0
def extension(ctx):
    pass_ctx_from_root(ctx)
    ctx.journal_util_location = pyyjj.location(pyyjj.mode.LIVE, pyyjj.category.SYSTEM, 'util', 'extension', ctx.locator)
    ctx.logger = create_logger('extension', ctx.log_level, ctx.journal_util_location)
    if not os.getenv('KF_NO_EXT'):
        pass
    else:
        print('Extension disabled by KF_NO_EXT')
        ctx.logger.warning('Trying to manage extension while disallowed by KF_NO_EXT')
Beispiel #4
0
 def __init__(self, ctx):
     mode = pyyjj.mode.REPLAY if ctx.replay else pyyjj.mode.LIVE
     pywingchun.Watcher.__init__(self, ctx.locator, mode, ctx.low_latency)
     self.ctx = ctx
     self.ctx.logger = create_logger("watcher", ctx.log_level,
                                     self.io_device.home)
     location = pyyjj.location(mode, pyyjj.category.SYSTEM, 'watcher',
                               'watcher', ctx.locator)
     url = make_url(ctx.locator, location, ctx.name)
     self.data_proxy = DataProxy(url)
     self.accounts = {}
Beispiel #5
0
def journal(ctx, mode, category, group, name):
    pass_ctx_from_root(ctx)
    ctx.low_latency = False
    ctx.mode = mode
    ctx.category = category
    ctx.group = group
    ctx.name = name
    ctx.location = pyyjj.location(kfj.MODES[mode], kfj.CATEGORIES[category],
                                  group, name, ctx.locator)
    log_location = pyyjj.location(pyyjj.mode.LIVE, pyyjj.category.SYSTEM,
                                  'util', 'journal', ctx.locator)
    ctx.logger = create_logger('journal', ctx.log_level, log_location)
    pyyjj.setup_log(log_location, 'journal')
Beispiel #6
0
    def __init__(self, ctx):
        pyyjj.master.__init__(self, pyyjj.location(kfj.MODES['live'], kfj.CATEGORIES['system'], 'master', 'master', ctx.locator), ctx.low_latency)
        self.ctx = ctx
        self.ctx.master = self
        self.ctx.logger = create_logger("watcher", ctx.log_level, self.io_device.home)
        self.ctx.apprentices = {}

        ctx.calendar = Calendar(ctx)
        ctx.trading_day = ctx.calendar.trading_day
        self.publish_time(yjj_msg.TradingDay, ctx.calendar.trading_day_ns)

        ctx.master = self

        os_signal.handle_os_signals(self.exit_gracefully)
Beispiel #7
0
def strategy(ctx, group, name, path, low_latency, replay, session_id):
    pass_ctx_from_parent(ctx)
    ctx.group = group
    ctx.name = name
    ctx.path = path
    ctx.low_latency = low_latency if not replay else True
    ctx.replay = replay
    ctx.session_id = session_id
    mode = pyyjj.mode.REPLAY if ctx.replay else pyyjj.mode.LIVE
    ctx.logger = create_logger(name, ctx.log_level, pyyjj.location(mode, pyyjj.category.STRATEGY, group, name, ctx.locator))
    ctx.strategy = Strategy(ctx)  # keep strategy alive for pybind11
    runner = Runner(ctx, mode)
    runner.add_strategy(ctx.strategy)
    if replay:
        ctx.category = 'strategy'
        replay_setup.setup(ctx, session_id, strategy, runner)
    runner.run()
Beispiel #8
0
    def __init__(self, ctx):
        pyyjj.master.__init__(
            self,
            pyyjj.location(kfj.MODES['live'], kfj.CATEGORIES['system'],
                           'master', 'master', ctx.locator), ctx.low_latency)
        self.ctx = ctx
        self.ctx.master = self
        self.ctx.logger = create_logger("watcher", ctx.log_level,
                                        self.io_device.home)
        self.ctx.apprentices = {}

        # calendar_db_location = pyyjj.location(pyyjj.mode.LIVE, pyyjj.category.SYSTEM, 'etc', 'kungfu', ctx.locator)
        # ctx.calendar = pywingchun.Calendar(ctx.locator.layout_file(calendar_db_location, pyyjj.layout.SQLITE, 'holidays'))
        # ctx.current_trading_day = ctx.calendar.current_trading_day()
        ctx.calendar = Calendar(ctx)
        ctx.current_trading_day = ctx.calendar.current_trading_day()

        os_signal.handle_os_signals(self.exit_gracefully)
Beispiel #9
0
import kungfu.yijinjing.journal as kfj
from kungfu.log import create_logger

kf_home = os.getenv('KF_HOME')
kfext_log_level = os.getenv('KF_LOG_LEVEL')

if not kfext_log_level:
    kfext_log_level = 'error'

kfext_logger = None
if kf_home:
    kfext_log_locator = kfj.Locator(kf_home)
    kfext_log_location = pyyjj.location(pyyjj.mode.LIVE, pyyjj.category.SYSTEM,
                                        'extensions', 'extensions',
                                        kfext_log_locator)
    kfext_logger = create_logger('extensions', kfext_log_level,
                                 kfext_log_location)
else:
    kfext_logger = create_logger('extensions', kfext_log_level, None)


class ExtensionRegistry:
    def __init__(self, ext_type):
        self._registry = {}
        self.ext_type = ext_type

    def register_extension(self, name, extension):
        kfext_logger.debug('Registering %s extension %s', self.ext_type, name)
        self._registry[name] = extension

    def has_extension(self, name):
        return name in self._registry