问题描述
将value调整为0,side取相反方向吗?
按照保证金下单,是不是如果value是1万,则下单的金额接近1万?
解决方案
在 JoinQuant(聚宽)平台上进行期货交易时,平仓逻辑和保证金下单逻辑与股票有所不同。针对您的两个问题,详细解答如下:
1. 期货如何平仓?将 value 调整为 0,side 取相反方向吗?
不是的。在聚宽中平仓,side 必须保持与您原有持仓相同的方向,而不是取相反方向。
聚宽的 API 设计中,无论是按手数(order_target)还是按保证金价值(order_target_value)调整目标仓位,都是直接对目标方向的持仓进行操作。
- 如果您持有多单(long)想要平仓:
side依然填'long',并将目标数量或价值设为 0(或更小的值)。 - 如果您持有空单(short)想要平仓:
side依然填'short',并将目标数量或价值设为 0(或更小的值)。
代码示例:
# 假设您之前开仓了多单
# order_target_value('IF1412.CCFX', 5000000, side='long')
# 现在想要全部平掉该多单
order_target_value('IF1412.CCFX', 0, side='long')
# 如果使用 order_value 平仓(传入负数表示减少仓位)
order_value('IF1412.CCFX', -5000000, side='long')
注意:如果您在平多单时将 side 写成了 'short',系统会认为您是要新开空单,而不是平掉多单。
2. 按照保证金下单,如果 value 是 1 万,则下单的金额接近 1 万吗?
是的,但这里的“金额”指的是“占用的保证金金额”,而不是合约的总名义价值。
在聚宽的期货 API 中,order_value 和 order_target_value 中的 value 参数代表的是期货保证金的价值。
计算公式为:
value = 最新价 * 手数 * 保证金率 * 乘数
- 如果您调用
order_value(security, 10000, side='long'),系统会根据当前的最新价、该品种的合约乘数以及您设置的保证金率,自动计算出需要开多少手,使得这笔订单冻结/占用的保证金接近 10000 元。 - 由于期货交易必须是整数手,所以实际占用的保证金金额会向下取整到最接近 10000 元的整数手所对应的保证金。
总结:
- 平仓方向:保持原有持仓方向(多单平仓用
long,空单平仓用short),数量/价值设为 0 或负数。 - Value 的含义:在期货交易中,
value始终指代保证金的金额,而非合约总价值。