3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!在 PTrade 量化交易平台中,进行股票买卖和撤单主要依赖于 order 系列函数和 cancel_order 函数。
以下是针对您需求的详细说明和代码示例。
按数量买卖 (order)
order(security, amount, limit_price=None)amount:正数代表买入(如 100),负数代表卖出(如 -100)。limit_price:可选。如果不填,则按市价(回测中通常是收盘价或开盘价,实盘为最新价)下单;如果填了,则是限价单。调整至目标持仓 (order_target)
order_target(security, amount, limit_price=None)order_target(security, 200),系统会自动卖出 300 股。如果想清仓,则设为 0。取消订单 (cancel_order)
cancel_order(order_id)order_id,或者通过 get_open_orders() 获取未完成的订单对象。您可以将以下代码复制到 PTrade 的策略编辑区进行回测或模拟运行。
def initialize(context):
# 初始化设置
g.security = '600570.SS' # 设置我们要操作的股票:恒生电子
set_universe(g.security) # 设置股票池
# 设置一个标志位,用于演示流程控制
g.step = 0
def handle_data(context, data):
# 获取当前股票代码
security = g.security
# ---------------------------------------------------
# 场景 1:买入指定数量 (例如买入 100 股)
# ---------------------------------------------------
if g.step == 0:
log.info("步骤1:尝试买入 100 股")
# 下单买入 100 股,不设限价(市价单)
order(security, 100)
g.step = 1 # 进入下一步
# ---------------------------------------------------
# 场景 2:演示挂单与撤单
# ---------------------------------------------------
elif g.step == 1:
log.info("步骤2:演示挂单与撤单")
# 获取当前价格
current_price = data[security]['close']
# 故意以一个极低的价格买入,形成“未成交”的挂单
limit_price = current_price * 0.9
# order 函数会返回一个 order_id
order_id = order(security, 100, limit_price=limit_price)
log.info("已下限价单,订单ID: %s,价格: %s" % (order_id, limit_price))
# 立即撤销刚才下的这笔订单
if order_id is not None:
cancel_order(order_id)
log.info("已请求撤销订单: %s" % order_id)
g.step = 2 # 进入下一步
# ---------------------------------------------------
# 场景 3:调整持仓到指定数量 (例如清仓/卖出到0)
# ---------------------------------------------------
elif g.step == 2:
# 获取当前持仓信息
position = get_position(security)
log.info("当前持仓数量: %s" % position.amount)
if position.amount > 0:
log.info("步骤3:触发清仓操作,目标持仓为 0")
# 无论当前有多少股,直接调整目标持仓为 0,系统会自动计算卖出数量
order_target(security, 0)
g.step = 3 # 演示结束
# 打印当前持仓情况
pos = get_position(security)
log.info("当前持仓状态 -> 股票: %s, 数量: %s, 成本: %s" % (pos.sid, pos.amount, pos.cost_basis))
order(security, 100):
order_target(security, 0):
order 的负数,直接用 order_target 设为 0 即可。order_target(security, 1000)。cancel_order(order_id):
get_position(security):
amount (总持仓)、enable_amount (可用持仓) 等属性。希望这个示例能帮助您理解 PTrade 的基础交易操作!如有其他问题,欢迎继续提问。