摘要:def get_stock_data(stock_code, start_date):df = ak.stock_zh_a_hist(symbol=stock_code, period="daily", start_date=start_date, adjus
发现没,红绿闪烁的K线图像心电图,只不过波动的是我的账户金额。 直到写了这段Python代码,我才找回睡觉的自由。
量化交易没想象中复杂。核心就是三件事:拿数据、定策略、跑程序。我用Python实现了基础框架,代码总共不到300行。
先装几个关键库:
# 基础三件套import pandas as pd import numpy as np import akshare as ak # 免费金融数据接口# 回测引擎from backtrader import Cerebro, feeds # 可视化import matplotlib.pyplot as plt第一步:获取实时数据 用akshare拉取沪深300成分股,比手动下载快10倍:
def get_stock_data(stock_code, start_date):df = ak.stock_zh_a_hist(symbol=stock_code, period="daily", start_date=start_date, adjust="qfq")df.index = pd.to_datetime(df['日期'])return df[['开盘', '最高', '最低', '收盘', '成交量']]第二步:制定交易策略 这里用最简单的双均线策略。5日线上穿20日线买入,下穿卖出:
class DoubleMAStrategy(bt.Strategy):params = (('fast', 5), ('slow', 20)) # 参数可调def __init__(self):self.fast_ma = bt.indicators.SMA(period=self.params.fast)self.slow_ma = bt.indicators.SMA(period=self.params.slow)self.crossover = bt.indicators.CrossOver(self.fast_ma, self.slow_ma)def next(self):if not self.position: # 空仓时if self.crossover > 0: # 金叉self.buy(size=100) # 买入100股elif self.crossover第三步:历史回测验证 用Backtrader加载5年数据跑模拟:
cerebro = bt.Cerebrodata = bt.feeds.PandasData(dataname=get_stock_data('000300', '2020-01-01'))cerebro.adddata(data)cerebro.addstrategy(DoubleMAStrategy)# 设置初始资金10万cerebro.broker.set_cash cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')# 运行回测results = cerebro.runprint('夏普比率:', results[0].analyzers.sharpe.get_analysis)夏普比率超过1.5才算合格策略。别问我怎么知道的。
最后一步:实盘连接 用券商API实现自动交易(以华泰证券为例):
from easytrader import usedef auto_trade(signal):user = use('ht_client') # 连接客户端user.prepare('account.json') if signal == 'BUY':user.buy('510300', price='market', amount=100) # 市价买100股elif signal == 'SELL':user.sell('510300', amount=100)看到这里你肯定想立刻试一把。 慢着。
去年我用这个策略跑白酒股,遇上塑化剂谣言单月亏15%。量化不是印钞机,三个经验:
任何策略都要加止损条件分散到3-5个不同行业每周人工复核交易日志现在我的电脑桌边贴着一张便签: “程序负责执行,你负责思考”
那些说量化能躺赚的,不是傻就是坏。 但这套代码确实让我每天少盯盘4小时。 省下的时间陪孩子搭乐高,比看K线快乐得多。
最后说点实在的 刚跑通策略那周,我兴奋地加了杠杆。 结果遇到黑天鹅,两天亏掉三个月工资。 现在只用闲钱操作,年化12%就满足。
交易像冲浪,程序是你的冲浪板。 但永远记住:再好的板子也挡不住海啸。
来源:嗅觉AI