
股票期货自动交易到底怎么跑起来的
很多人听说Python能自动买卖股票,以为写几行代码就能躺着收钱。真相是,自动交易只是把你手动做的事交给程序。你手动看盘、判断、下单,程序替你盯着数据、按规则执行。
股票和期货的自动交易底层逻辑一样。区别在于期货有杠杆,合约有到期日,波动更猛。股票没有杠杆,但T+1限制让当天买入不能卖出。写代码时要把这些规则硬编码进去。

一个最简单的自动交易框架长什么样
用Python做自动交易,不需要一开始就搞复杂。一个能跑起来的最小系统包含四块:行情获取、信号计算、下单执行、持仓管理。
行情获取:从券商或数据商接口拉取实时价格。股票常用tushare、akshare,期货用CTP接口。
信号计算:根据价格算出该买还是该卖。最简单的是双均线策略——短期均线向上穿过长期均线就买入,向下穿过就卖出。
下单执行:调用券商提供的交易接口,把买卖指令发出去。股票用easytrader、miniqmt,期货用vn.py。
持仓管理:记录当前持有多少股或多少手,防止重复下单。
下面是一个双均线策略的Python伪代码,跑在股票日线数据上:
import pandas as pd
# 假设df有date和close两列
df['ma5'] = df['close'].rolling(5).mean()
df['ma20'] = df['close'].rolling(20).mean()
df['signal'] = 0
df.loc[df['ma5'] > df['ma20'], 'signal'] = 1
df.loc[df['ma5'] < df['ma20'], 'signal'] = -1
# 信号从-1变1买入,从1变-1卖出
df['position'] = df['signal'].shift(1)
df['position'].fillna(0, inplace=True)
# 计算每日收益
df['return'] = df['close'].pct_change()
df['strategy_return'] = df['position'] * df['return']
# 累计收益
cumulative = (1 + df['strategy_return']).cumprod()
print(cumulative.iloc[-1])
这段代码告诉你策略历史上赚了还是亏了。实盘时要把signal换成实时计算,把下单接口接上。
股票和期货自动交易的关键差异
股票自动交易,资金利用率低,因为不能做空,当天买不能当天卖。适合做日线级别的趋势策略,持仓周期几天到几周。
期货自动交易,可以多空双向,T+0,杠杆通常5到10倍。收益和亏损都被放大。同样一个策略,股票上一年赚10%,期货上可能赚50%也可能亏50%。期货还有保证金追缴风险,程序必须计算可用资金,防止爆仓。
写期货自动交易程序,必须加一条:当账户权益低于维持保证金时,自动平仓。这条规则不能省。
自动交易真正难在哪里
难的不是写代码,是写一个长期赚钱的规则。双均线策略在震荡市里反复被打脸,连续亏十几次很正常。程序不会犹豫,它会严格执行,亏到你想砸电脑。
难在数据质量。股票有停牌、除权除息,期货有换月、涨跌停。程序要能处理这些异常,否则信号会错乱。
难在交易成本。每次买卖有佣金和滑点。高频策略下,手续费吃掉大部分利润。回测时必须把成本算进去,否则结果虚高。
难在心理关。程序自动下单,你看到浮亏会忍不住手动干预。一干预,策略就废了。
普通人用Python自动交易股票期货的可行路径
先用手动交易验证一个简单规则。比如你发现某只股票每次跌到20日均线就反弹,那就把这个规则写成代码回测。回测赚钱了,再用小资金实盘跑。
不要一上来就搞机器学习、神经网络。那些东西过拟合严重,回测漂亮实盘亏钱。从均线、突破、通道这些经典规则开始。
股票自动交易建议用日线数据,每天收盘后计算信号,第二天开盘下单。期货自动交易可以用分钟线,但要把交易频率控制在每天几次以内,降低手续费影响。
程序跑起来后,每天检查一次成交记录和持仓。发现异常立刻停止。自动交易不是无人值守,是让你从盯盘中解放出来,把精力放在规则优化上。
一个必须记住的底线
自动交易不能保证赚钱。它只是工具,帮你执行纪律。股票和期货市场里,七成的人亏钱,用了自动交易不会改变这个比例。能改变的是:你不再因为手抖、犹豫、贪婪而乱操作。长期看,纪律比预测重要。