예제 #1
0
    def get_contracts(self,
                      symbol,
                      sec_type=SecurityType.STK,
                      currency=Currency.USD,
                      exchange=None):
        params = ContractParams()
        params.account = self._account
        params.symbol = symbol
        if sec_type:
            params.sec_type = sec_type.value
        if currency:
            params.currency = currency.value
        params.exchange = exchange

        request = OpenApiRequest(CONTRACT, biz_model=params)
        response_content = self.__fetch_data(request)
        if response_content:
            response = ContractsResponse()
            response.parse_response_content(response_content)
            if response.is_success():
                return response.contracts
            else:
                raise ApiException(response.code, response.message)

        return None
예제 #2
0
    def get_contract(self, symbol, sec_type=SecurityType.STK, currency=None, exchange=None, expiry=None, strike=None,
                     right=None):
        params = ContractParams()
        params.account = self._account
        params.symbol = symbol
        if sec_type:
            params.sec_type = sec_type.value
        if currency:
            params.currency = currency.value
        if expiry:
            params.expiry = expiry
        if strike:
            params.strike = strike
        if right:
            params.right = right
        params.exchange = exchange

        request = OpenApiRequest(CONTRACT, biz_model=params)
        response_content = self.__fetch_data(request)
        if response_content:
            response = ContractsResponse()
            response.parse_response_content(response_content)
            if response.is_success():
                return response.contracts[0] if len(response.contracts) == 1 else None
            else:
                raise ApiException(response.code, response.message)

        return None
예제 #3
0
    def get_contracts(self,
                      symbol,
                      sec_type=SecurityType.STK,
                      currency=None,
                      exchange=None):
        """
        批量获取合约
        :param symbol:
        :param sec_type:
        :param currency:
        :param exchange:
        :return: 合约对象列表, 每个列表项的对象信息同 get_contract 返回
        """
        params = ContractParams()
        params.account = self._account
        params.symbols = symbol if isinstance(symbol, list) else [symbol]
        if sec_type:
            params.sec_type = sec_type.value
        if currency:
            params.currency = currency.value
        params.exchange = exchange

        request = OpenApiRequest(CONTRACTS, biz_model=params)
        response_content = self.__fetch_data(request)
        if response_content:
            response = ContractsResponse()
            response.parse_response_content(response_content)
            if response.is_success():
                return response.contracts
            else:
                raise ApiException(response.code, response.message)

        return None
예제 #4
0
    def get_contract(self, contract_id):
        params = ContractParams()
        params.account = self._account
        params.contract_id = contract_id

        request = OpenApiRequest(CONTRACT, biz_model=params)
        response_content = self.__fetch_data(request)
        if response_content:
            response = ContractsResponse()
            response.parse_response_content(response_content)
            if response.is_success():
                return response.contracts[0] if len(response.contracts) == 1 else None
            else:
                raise ApiException(response.code, response.message)

        return None
예제 #5
0
    def get_contract(self,
                     symbol,
                     sec_type=SecurityType.STK,
                     currency=None,
                     exchange=None,
                     expiry=None,
                     strike=None,
                     right=None):
        """
        获取合约
        :param symbol:
        :param sec_type:
        :param currency:
        :param exchange:
        :param expiry:
        :param strike:
        :param right:
        :return: Contract 对象. 有如下属性:
            symbol: 合约 symbol
            identifier: 合约唯一标识
            currency: 币种
            exchange: 交易所
            name: 合约名称
            sec_type: 合约类型
            long_initial_margin: 做多初始保证金比例
            long_maintenance_margin: 做多维持保证金比例
            short_fee_rate: 做空费率
            short_margin: 做空保证金
            shortable: 做空池剩余
            multiplier: 合约乘数
            expiry: 合约到期日(期货/期权)
            contract_month: 合约月份(期货)
            strike: 行权价(期权)
            put_call: 看跌/看涨(期权)
        """
        params = ContractParams()
        params.account = self._account
        params.symbol = symbol
        if sec_type:
            params.sec_type = sec_type.value
        if currency:
            params.currency = currency.value
        if expiry:
            params.expiry = expiry
        if strike:
            params.strike = strike
        if right:
            params.right = right
        params.exchange = exchange

        request = OpenApiRequest(CONTRACT, biz_model=params)
        response_content = self.__fetch_data(request)
        if response_content:
            response = ContractsResponse()
            response.parse_response_content(response_content)
            if response.is_success():
                return response.contracts[0] if len(
                    response.contracts) == 1 else None
            else:
                raise ApiException(response.code, response.message)

        return None