@export_as_api def symbol(order_book_id, split=", "): if isinstance(order_book_id, six.string_types): return "{}[{}]".format(order_book_id, instruments(order_book_id).symbol) else: s = split.join(symbol(item) for item in order_book_id) return s def now_time_str(str_format="%H:%M:%S"): return Environment.get_instance().trading_dt.strftime(str_format) @export_as_api @apply_rules(verify_env().portfolio_exists(), verify_that("quantity").is_number()) def order(order_book_id, quantity, price=None, style=None): """ 全品种通用智能调仓函数 如果不指定 price, 则相当于下 MarketOrder 如果 order_book_id 是股票,等同于调用 order_shares 如果 order_book_id 是期货,则进行智能下单: * quantity 表示调仓量 * 如果 quantity 为正数,则先平 Sell 方向仓位,再开 Buy 方向仓位 * 如果 quantity 为负数,则先平 Buy 反向仓位,再开 Sell 方向仓位 :param order_book_id: 下单标的物
""" order_book_id = assure_stock_order_book_id(id_or_ins) round_lot = int(Environment.get_instance().get_instrument(order_book_id).round_lot) style = cal_style(price, style) return order_shares(id_or_ins, amount * round_lot, style=style) @export_as_api @ExecutionContext.enforce_phase(EXECUTION_PHASE.ON_BAR, EXECUTION_PHASE.ON_TICK, EXECUTION_PHASE.SCHEDULED, EXECUTION_PHASE.GLOBAL) @apply_rules(verify_env().portfolio_exists(), verify_that('id_or_ins').is_valid_stock(), verify_that('cash_amount').is_number(), verify_that('style').is_instance_of((MarketOrder, LimitOrder, type(None)))) def order_value(id_or_ins, cash_amount, price=None, style=None): """ 使用想要花费的金钱买入/卖出股票,而不是买入/卖出想要的股数,正数代表买入,负数代表卖出。股票的股数总是会被调整成对应的100的倍数(在A中国A股市场1手是100股)。如果资金不足,该API将不会创建发送订单。 需要注意: 当您提交一个买单时,cash_amount 代表的含义是您希望买入股票消耗的金额(包含税费),最终买入的股数不仅和发单的价格有关,还和税费相关的参数设置有关。 当您提交一个卖单时,cash_amount 代表的意义是您希望卖出股票的总价值。如果金额超出了您所持有股票的价值,那么您将卖出所有股票。 :param id_or_ins: 下单标的物 :type id_or_ins: :class:`~Instrument` object | `str` :param float cash_amount: 需要花费现金购买/卖出证券的数目。正数代表买入,负数代表卖出。