示例#1
0
    def start_up(self, env, mod_config):
        try:
            import funcat
        except ImportError:
            print("-" * 50)
            print(">>> Missing funcat. Please run `pip install funcat`")
            print("-" * 50)
            raise

        # change funcat data backend to rqalpha
        from funcat.data.rqalpha_backend import RQAlphaDataBackend
        funcat.set_data_backend(RQAlphaDataBackend())

        # register funcat api into rqalpha
        from rqalpha.api.api_base import register_api
        for name in dir(funcat):
            obj = getattr(funcat, name)
            if getattr(obj, "__module__", "").startswith("funcat"):
                register_api(name, obj)
示例#2
0
from rqalpha.utils.logger import user_system_log
# noinspection PyUnresolvedReferences
from rqalpha.utils.scheduler import market_close, market_open
# noinspection PyUnresolvedReferences
from rqalpha.utils import scheduler

# 使用Decimal 解决浮点数运算精度问题
getcontext().prec = 10

__all__ = [
    'market_open',
    'market_close',
    'scheduler',
]

register_api("scheduler", scheduler)


def export_as_api(func):
    __all__.append(func.__name__)

    func = decorate_api_exc(func)

    return func


@export_as_api
@ExecutionContext.enforce_phase(EXECUTION_PHASE.ON_BAR,
                                EXECUTION_PHASE.ON_TICK,
                                EXECUTION_PHASE.SCHEDULED,
                                EXECUTION_PHASE.GLOBAL)
示例#3
0
    def start_up(self, env, mod_config):
        if os.environ.get("RQDATAC2_CONF") or os.environ.get("RQDATAC_CONF"):
            system_log.info('rqdatac use RQDATAC2_CONF or RQDATAC_CONF')
            rqdatac.init()
        else:
            addr = (mod_config.rqdata_client_addr, mod_config.rqdata_client_port)
            env.system_log.info('rqdatac use address {}', addr)
            rqdatac.init(
                username=mod_config.rqdata_client_username,
                password=mod_config.rqdata_client_password,
                addr=addr,
                lazy=True
            )

        # noinspection PyUnresolvedReferences
        from rqdatac import fundamentals, Fundamentals, financials, Financials, fenji, query
        from rqalpha.api.api_base import register_api

        register_api("fundamentals", fundamentals)
        register_api("Fundamentals", Fundamentals)
        register_api("financials", financials)
        register_api("Financials", Financials)
        register_api("fenji", fenji)
        register_api("query", query)
示例#4
0
    def start_up(self, env, mod_config):
        try:
            import funcat
        except ImportError:
            six.print_(u"-" * 50)
            six.print_(u">>> Missing funcat. Please run `pip install funcat`")
            six.print_(u"-" * 50)
            raise

        from funcat.data.backend import DataBackend
        from funcat.context import set_current_date
        from funcat.utils import get_date_from_int

        from rqalpha.api import history_bars

        class RQAlphaDataBackend(DataBackend):
            """
            目前仅支持日数据
            """
            skip_suspended = False

            def __init__(self):
                from rqalpha.api import (
                    all_instruments,
                    instruments,
                )

                self.set_current_date = set_current_date
                self.all_instruments = all_instruments
                self.instruments = instruments
                self.rqalpha_env = Environment.get_instance()

                self.rqalpha_env.event_bus.add_listener(EVENT.PRE_BEFORE_TRADING, self._pre_before_trading)
                self.rqalpha_env.event_bus.add_listener(EVENT.PRE_BAR, self._pre_handle_bar)

                self.fetch_data_by_api = True

            def _pre_before_trading(self, *args, **kwargs):
                calendar_date = self.rqalpha_env.calendar_dt.date()
                self.set_current_date(calendar_date)

            def _pre_handle_bar(self, *args, **kwargs):
                calendar_date = self.rqalpha_env.calendar_dt.date()
                self.set_current_date(calendar_date)

            def _history_bars(self, order_book_id, bar_count, freq, dt):
                if self.fetch_data_by_api:
                    bars = history_bars(
                        order_book_id, bar_count, freq, fields=None)
                else:
                    bars = self.rqalpha_env.data_proxy.history_bars(
                        order_book_id, bar_count, freq, field=None,
                        dt=dt)
                return bars

            def get_price(self, order_book_id, start, end, freq):
                """
                :param order_book_id: e.g. 000002.XSHE
                :param start: 20160101
                :param end: 20160201
                :returns:
                :rtype: numpy.rec.array
                """
                start = get_date_from_int(start)
                end = get_date_from_int(end)

                scale = 1
                if freq[-1] == "m":
                    scale *= 240. / int(freq[:-1])
                bar_count = int((end - start).days * scale)

                dt = datetime.datetime.combine(end, datetime.time(23, 59, 59))
                bars = self._history_bars(order_book_id, bar_count, freq, dt)

                if bars is None or len(bars) == 0:
                    raise KeyError("empty bars {}".format(order_book_id))
                bars = bars.copy()

                return bars

            def get_order_book_id_list(self):
                """获取所有的
                """
                return sorted(self.all_instruments("CS").order_book_id.tolist())

            def get_trading_dates(self, start, end):
                """获取所有的交易日

                :param start: 20160101
                :param end: 20160201
                """
                raise NotImplementedError

            def get_start_date(self):
                """获取回溯开始时间
                """
                return str(self.rqalpha_env.config.base.start_date)

            def symbol(self, order_book_id):
                """获取order_book_id对应的名字
                :param order_book_id str: 股票代码
                :returns: 名字
                :rtype: str
                """
                return self.instruments(order_book_id).symbol

        # change funcat data backend to rqalpha
        funcat.set_data_backend(RQAlphaDataBackend())

        # register funcat api into rqalpha
        from rqalpha.api.api_base import register_api
        for name in dir(funcat):
            obj = getattr(funcat, name)
            if getattr(obj, "__module__", "").startswith("funcat"):
                register_api(name, obj)
示例#5
0
    def start_up(self, env, mod_config):
        try:
            import funcat
        except ImportError:
            print("-" * 50)
            print(">>> Missing funcat. Please run `pip install funcat`")
            print("-" * 50)
            raise

        from funcat.data.backend import DataBackend
        from funcat.context import set_current_date

        class RQAlphaDataBackend(DataBackend):
            """
            目前仅支持日数据
            """
            skip_suspended = False

            def __init__(self):
                from rqalpha.api import (
                    history_bars,
                    all_instruments,
                    instruments,
                )

                self.set_current_date = set_current_date

                self.history_bars = history_bars
                self.all_instruments = all_instruments
                self.instruments = instruments
                self.rqalpha_env = Environment.get_instance()

                self.rqalpha_env.event_bus.add_listener(
                    EVENT.PRE_BEFORE_TRADING, self._pre_before_trading)
                self.rqalpha_env.event_bus.add_listener(
                    EVENT.PRE_BAR, self._pre_handle_bar)

            def _pre_before_trading(self, *args, **kwargs):
                calendar_date = self.rqalpha_env.calendar_dt.date()
                self.set_current_date(calendar_date)

            def _pre_handle_bar(self, *args, **kwargs):
                calendar_date = self.rqalpha_env.calendar_dt.date()
                self.set_current_date(calendar_date)

            def get_price(self, order_book_id, start, end):
                """
                :param order_book_id: e.g. 000002.XSHE
                :param start: 20160101
                :param end: 20160201
                :returns:
                :rtype: numpy.rec.array
                """
                # start = get_date_from_int(start)
                # end = get_date_from_int(end)
                # bar_count = (end - start).days

                # TODO: this is slow, make it run faster
                bar_count = 1000
                origin_bars = bars = self.history_bars(order_book_id,
                                                       bar_count, "1d")

                dtype = copy.deepcopy(bars.dtype)
                names = list(dtype.names)
                names[0] = "date"
                dtype.names = names
                bars = np.array(bars, dtype=dtype)

                bars["date"] = origin_bars["datetime"] / 1000000

                return bars

            def get_order_book_id_list(self):
                """获取所有的
                """
                return sorted(
                    self.all_instruments("CS").order_book_id.tolist())

            def get_trading_dates(self, start, end):
                """获取所有的交易日

                :param start: 20160101
                :param end: 20160201
                """
                raise NotImplementedError

            def get_start_date(self):
                """获取回溯开始时间
                """
                return str(self.rqalpha_env.config.base.start_date)

            def symbol(self, order_book_id):
                """获取order_book_id对应的名字
                :param order_book_id str: 股票代码
                :returns: 名字
                :rtype: str
                """
                return self.instruments(order_book_id).symbol

        # change funcat data backend to rqalpha
        funcat.set_data_backend(RQAlphaDataBackend())

        # register funcat api into rqalpha
        from rqalpha.api.api_base import register_api
        for name in dir(funcat):
            obj = getattr(funcat, name)
            if getattr(obj, "__module__", "").startswith("funcat"):
                register_api(name, obj)
示例#6
0
文件: mod.py 项目: jixushui/jqapi
    def start_up(self, env, mod_config):

        from rqalpha.api.api_base import register_api
        # api
        register_api('get_fundamentals', get_fundamentals)
        register_api('get_index_stocks', get_index_stocks)
        register_api('get_report_stock_predict', get_report_stock_predict)
        register_api('query', query)
        register_api('history', history)
        register_api('get_security_info', get_security_info)
        register_api('get_industry_stocks', get_industry_stocks)
        register_api('get_extras', get_extras)
        register_api('get_all_securities', get_all_securities)
        register_api('filter_code', filter_code)
        # model
        register_api('income', income)
        register_api('balance', balance)
        register_api('cash_flow', cash_flow)
        register_api('indicator', indicator)
        register_api('valuation', valuation)
        register_api('lico_fn_sigquafina', lico_fn_sigquafina)
        register_api('lico_fn_fcrgincomes', lico_fn_fcrgincomes)

        register_api('base_get_stock_list', base_get_stock_list)
示例#7
0
    def start_up(self, env, mod_config):

        from rqalpha.api.api_base import register_api
        # api
        register_api('sidi_get_position', sidi_get_position)
        register_api('sidi_get_cash', sidi_get_cash)
        register_api('sidi_order_target', sidi_order_target)
        register_api('sidi_adjust_position', sidi_adjust_position)
        register_api('sidi_clear_position', sidi_clear_position)
        register_api('sidi_get_position_count', sidi_get_position_count)
        register_api('sidi_get_holding', sidi_get_holding)
        register_api('sidi_get_revocable', sidi_get_revocable)
        register_api('sidi_undo', sidi_undo)
示例#8
0
# noinspection PyUnresolvedReferences
from rqalpha.utils.scheduler import market_close, market_open
# noinspection PyUnresolvedReferences
from rqalpha.utils import scheduler

# 使用Decimal 解决浮点数运算精度问题
getcontext().prec = 10

__all__ = [
    'market_open',
    'market_close',
    'scheduler',
]


register_api("scheduler", scheduler)


def export_as_api(func):
    __all__.append(func.__name__)

    func = decorate_api_exc(func)

    return func


@export_as_api
@ExecutionContext.enforce_phase(EXECUTION_PHASE.ON_BAR,
                                EXECUTION_PHASE.ON_TICK,
                                EXECUTION_PHASE.SCHEDULED,
                                EXECUTION_PHASE.GLOBAL)
示例#9
0
文件: mod.py 项目: kknet/rqalpha
    def start_up(self, env, mod_config):
        try:
            import funcat
        except ImportError:
            print("-" * 50)
            print(">>> Missing funcat. Please run `pip install funcat`")
            print("-" * 50)
            raise

        import warnings
        from numpy.lib import recfunctions as rfn
        from funcat.data.backend import DataBackend
        from funcat.context import set_current_date

        class RQAlphaDataBackend(DataBackend):
            """
            目前仅支持日数据
            """
            skip_suspended = False

            def __init__(self):
                from rqalpha.api import (
                    history_bars,
                    all_instruments,
                    instruments,
                )

                self.set_current_date = set_current_date

                self.history_bars = history_bars
                self.all_instruments = all_instruments
                self.instruments = instruments
                self.rqalpha_env = Environment.get_instance()

                self.rqalpha_env.event_bus.add_listener(EVENT.PRE_BEFORE_TRADING, self._pre_before_trading)
                self.rqalpha_env.event_bus.add_listener(EVENT.PRE_BAR, self._pre_handle_bar)

            def _pre_before_trading(self, *args, **kwargs):
                calendar_date = self.rqalpha_env.calendar_dt.date()
                self.set_current_date(calendar_date)

            def _pre_handle_bar(self, *args, **kwargs):
                calendar_date = self.rqalpha_env.calendar_dt.date()
                self.set_current_date(calendar_date)

            def get_price(self, order_book_id, start, end):
                """
                :param order_book_id: e.g. 000002.XSHE
                :param start: 20160101
                :param end: 20160201
                :returns:
                :rtype: numpy.rec.array
                """
                # start = get_date_from_int(start)
                # end = get_date_from_int(end)
                # bar_count = (end - start).days

                # TODO: this is slow, make it run faster
                bar_count = 1000
                origin_bars = bars = self.history_bars(order_book_id, bar_count, "1d")

                dtype = copy.deepcopy(bars.dtype)
                names = list(dtype.names)
                names[0] = "date"
                dtype.names = names
                bars = rfn.rename_fields(bars, {"datetime": "date"})
                bars["date"] = origin_bars["datetime"] / 1000000

                return bars

            def get_order_book_id_list(self):
                """获取所有的
                """
                return sorted(self.all_instruments("CS").order_book_id.tolist())

            def get_trading_dates(self, start, end):
                """获取所有的交易日

                :param start: 20160101
                :param end: 20160201
                """
                raise NotImplementedError

            def get_start_date(self):
                """获取回溯开始时间
                """
                return str(self.rqalpha_env.config.base.start_date)

            def symbol(self, order_book_id):
                """获取order_book_id对应的名字
                :param order_book_id str: 股票代码
                :returns: 名字
                :rtype: str
                """
                return self.instruments(order_book_id).symbol

        # change funcat data backend to rqalpha
        funcat.set_data_backend(RQAlphaDataBackend())

        # register funcat api into rqalpha
        from rqalpha.api.api_base import register_api
        for name in dir(funcat):
            obj = getattr(funcat, name)
            if getattr(obj, "__module__", "").startswith("funcat"):
                register_api(name, obj)