Exemplo n.º 1
0
    def _get_data_methods_from_list_of_data_string(
            self, list_of_data_str_references: list, system) -> list:

        # Turn a list of strings into a list of function objects
        list_of_data_methods = [
            resolve_data_method(system, data_string)
            for data_string in list_of_data_str_references
        ]

        return list_of_data_methods
Exemplo n.º 2
0
    def get_data_from_system(self, system, instrument_code):
        """
        Prepare the data for a function call

        :param system: A system
        :param instrument_code: str
        :return: list of data
        """
        data = self.data
        assert isinstance(data, list)

        # Following is a list of additional kwargs to pass to the data functions. Can be empty dicts
        # Use copy as can be overriden

        if len(data) == 0:
            # if no data provided defaults to using price
            datalist = [DEFAULT_PRICE_SOURCE]
            data_arg_list = [{}]
        else:
            # We're provided with a list
            datalist = self.data
            data_arg_list = copy(self.data_args)

        # This is so the zip won't unexpectedly fail
        # Should be the case given how data_args are generated
        assert len(data_arg_list) == len(datalist)

        # Turn a list of strings into a list of function objects
        data_methods = [
            resolve_data_method(system, data_string)
            for data_string in datalist
        ]

        # Call the functions, providing additional data if neccesssary
        data = [
            data_method(instrument_code, **data_arguments)
            for data_method, data_arguments in zip(data_methods, data_arg_list)
        ]

        return data
Exemplo n.º 3
0
    def call(self, system, instrument_code):
        """
        Actually call a trading rule

        To do this we need some data from the system
        """

        assert isinstance(self.data, list)

        if len(self.data) == 0:
            # if no data provided defaults to using price
            datalist = [DEFAULT_PRICE_SOURCE]
        else:
            datalist = self.data

        data_methods = [resolve_data_method(
            system, data_string) for data_string in datalist]
        data = [data_method(instrument_code) for data_method in data_methods]

        other_args = self.other_args

        return self.function(*data, **other_args)
Exemplo n.º 4
0
    def call(self, system, instrument_code):
        """
        Actually call a trading rule

        To do this we need some data from the system
        """

        assert isinstance(self.data, list)

        if len(self.data) == 0:
            # if no data provided defaults to using price
            datalist = [DEFAULT_PRICE_SOURCE]
        else:
            datalist = self.data

        data_methods = [resolve_data_method(
            system, data_string) for data_string in datalist]
        data = [data_method(instrument_code) for data_method in data_methods]

        other_args = self.other_args

        return self.function(*data, **other_args)
Exemplo n.º 5
0
    def get_data_from_system(self, system, instrument_code):
        """
        Prepare the data for a function call

        :param system: A system
        :param instrument_code: str
        :return: list of data
        """

        assert isinstance(self.data, list)

        if len(self.data) == 0:
            # if no data provided defaults to using price
            datalist = [DEFAULT_PRICE_SOURCE]
        else:
            datalist = self.data

        data_methods = [
            resolve_data_method(system, data_string)
            for data_string in datalist
        ]
        data = [data_method(instrument_code) for data_method in data_methods]

        return data