股票交易单位与买卖时间规则
股票市场对于买入数量有明确的规定。A股主板、创业板、中小板股票买入最少为100股,也就是常说的一手。卖出时如果持有零股,可以一次性卖出,但买入必须以100股为单位递增。科创板规则不同,买入最少200股,超过200股的部分可以按1股为单位递增。北交所买入最少100股,超过100股的部分可以按1股递增。
交易时间方面,A股连续竞价时间为每个交易日的9:30至11:30,13:00至15:00。开盘集合竞价时间为9:15至9:25,尾盘集合竞价时间为14:57至15:00。投资者可以在9:15开始委托,但9:20至9:25之间不可撤单。9:25至9:30可以接收委托但不处理,9:30进入连续竞价。
期货市场与股票不同,交易单位因品种而异。商品期货中,螺纹钢一手10吨,黄金一手1000克,原油一手1000桶,股指期货一手对应指数点乘以合约乘数。期货没有“最少一手”的统一说法,每个合约都有最小下单手数,通常为1手,但部分品种如国债期货要求最小1手,而某些境外品种可能有不同规定。
量化交易中的股票与期货下单代码演示
在量化交易平台上,下单数量必须符合交易所规则。以下Python示例基于vnpy框架,演示股票和期货的最小下单单位检查逻辑。

class TradingRule:
STOCK_MIN = 100
STAR_MIN = 200
FUTURES_MIN = 1
@staticmethod
def validate_stock_order(symbol, volume):
if symbol.startswith('688'):
if volume < TradingRule.STAR_MIN:
return False, f'科创板最少{ TradingRule.STAR_MIN }股'
if volume > TradingRule.STAR_MIN and (volume - TradingRule.STAR_MIN) % 1 != 0:
return False, '科创板超出部分需按1股递增'
else:
if volume < TradingRule.STOCK_MIN or volume % TradingRule.STOCK_MIN != 0:
return False, '主板/创业板最少100股且为100整数倍'
return True, '通过'
@staticmethod
def validate_futures_order(symbol, volume):
min_vol = 1
if 'T' in symbol and 'TF' in symbol:
min_vol = 1
if volume < min_vol:
return False, f'期货最少{ min_vol }手'
return True, '通过'
期货量化策略中,下单前需检查合约乘数和最小变动价位。股指期货IF合约乘数为300元/点,最小变动价位0.2点。商品期货如螺纹钢合约乘数10吨/手,最小变动价位1元/吨。
集合竞价与连续竞价的委托时间差异
股票早盘集合竞价9:15至9:25,其中9:15至9:20可撤单,9:20至9:25不可撤单。9:25产生开盘价,未成交委托进入连续竞价。深市尾盘集合竞价14:57至15:00,不可撤单。沪市同样有尾盘集合竞价。
期货市场集合竞价时间通常为8:55至8:59,其中8:55至8:56可撤单,8:56至8:59不可撤单。8:59至9:00为撮合时间,9:00开盘。夜盘品种集合竞价时间为20:55至20:59,21:00开盘。
量化策略中,若需要在开盘价成交,应提前在集合竞价时段挂单。以下代码展示如何获取当前交易时段。
from datetime import datetime, time
def get_trading_session(dt):
t = dt.time()
if time(9,15) <= t < time(9,25):
return '股票早盘集合竞价'
elif time(9,30) <= t <= time(11,30) or time(13,0) <= t <= time(15,0):
return '股票连续竞价'
elif time(14,57) <= t <= time(15,0):
return '股票尾盘集合竞价'
elif time(8,55) <= t < time(9,0):
return '期货日盘集合竞价'
elif time(20,55) <= t < time(21,0):
return '期货夜盘集合竞价'
else:
return '非交易时段'
期货交易单位与股票交易单位的核心区别
股票交易单位固定为100股或200股(科创板),期货交易单位是“手”,每手对应不同数量的标的物。投资者买卖期货必须按整数手进行,不能买卖0.5手。期货合约有到期日,个人投资者不能进入交割月,需要在到期前平仓或移仓。股票没有到期日,只要公司不退市可以长期持有。
期货采用保证金交易,一手合约价值可能几十万,但只需支付10%左右保证金。股票买入需支付全额资金。量化策略设计时,股票策略需考虑资金分配和最小100股限制,期货策略需考虑保证金和合约乘数。
以下代码计算股票和期货的最小资金需求。
def min_capital_stock(price):
return price * 100
def min_capital_future(price, multiplier, margin_rate):
return price * multiplier * margin_rate
stock_price = 50
future_price = 4000
multiplier = 300
margin_rate = 0.12
stock_min = min_capital_stock(stock_price)
future_min = min_capital_future(future_price, multiplier, margin_rate)
print(f'股票最少资金: {stock_min}元')
print(f'期货最少资金: {future_min}元')
挂单数量对成交速度的影响
股票挂单数量必须是100股的整数倍,卖出零股除外。大单挂单可能影响成交顺序。量化交易中,拆单算法将大单拆成多个100股或200股的小单,减少市场冲击。期货挂单数量为1手的整数倍,拆单算法将大单拆成多个1手或几手的小单。
股票涨跌停板时,挂单数量影响排队位置。涨停板上,时间优先原则,早挂单早成交。量化策略需要计算挂单价格和数量,确保在涨跌停时能够成交。
期货涨跌停板时,交易所可能提高保证金或暂停开仓。量化策略需要监控保证金比例和涨跌停板状态。
股票与期货交易时间重叠时的策略处理
股票连续竞价9:30至11:30,13:00至15:00。期货日盘9:00至11:30,13:30至15:00。夜盘21:00至次日2:30(不同品种不同)。两者时间有重叠,量化策略可以同时交易股票和期货。
跨品种套利策略中,需要对齐股票和期货的交易时间。股票开盘9:30,期货开盘9:00,期货提前半小时。量化系统需要处理时间差,避免在股票未开盘时发送股票委托。
以下代码判断股票和期货是否同时处于交易时段。
from datetime import time
def is_stock_trading(t):
return (time(9,30) <= t <= time(11,30)) or (time(13,0) <= t <= time(15,0))
def is_futures_trading(t):
return (time(9,0) <= t <= time(11,30)) or (time(13,30) <= t <= time(15,0)) or (time(21,0) <= t <= time(23,59))
t = time(10,0)
if is_stock_trading(t) and is_futures_trading(t):
print('股票和期货同时交易')
elif is_futures_trading(t):
print('仅期货交易')
股票和期货的最小交易单位不同,交易时间规则不同。量化策略必须严格遵循交易所规定,避免无效委托。