一个基本的量化交易系统大致上有两个分层:资金管理层与 ( 商品 策略 ) 层。 框架 ( 模组 ) 决定好了,再更有系统地强化各个模组,进而更接近交易本质。 初阶的交易者多数先选定一个邻近市场,如外汇或是熟悉的台股、台指期、台指选择权,并进行策略的开发。 一个基本策略的框架大致上如下,可以分成数个模组,设计者可以依循这样的框架进行一个初步策略开发或交易程式撰写:
多空指标 也就是多数人所认知的技术分析,诸如均线、KD、MACD、董诠通道、布林通道等大家耳熟能详的指标,场内游戏者希望能够藉此探知当前市场状态,是多或空。
交易合约模组 这个模组会较为细分,因不同交易所提供的商品与合约不同,使用这一模组可以快速选定特定商品与合约进行交易。
风控模组 交易员可以设置停损、加码、减码等动作,以及交易杠杆比例。
交易执行模组 这个模组会负责开平仓的讯号执行,以及订单的管理。
数据管理模组 这个模组通常会包括行情数据、财务数据、以及交易记录。
运算模组 这个模组可以进行技术指标计算、机器学习以及深度计算。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf
设置交易账号相关信息
账号 = 'xxx'
密码 = 'xxx'
经纪商 = 'xxx'
获取股票历史数据
ticker = 'AAPL' # 以苹果公司(AAPL)为例
start_date = '2010-01-01'
end_date = '2022-03-17'
data = yf.download(ticker, start=start_date, end=end_date)
计算移动平均线
data['ma5'] = data['Adj Close'].rolling(window=5).mean()
data['ma20'] = data['Adj Close'].rolling(window=20).mean()
绘制K线图,并添加移动平均线
fig, ax = plt.subplots()
ax.plot(data.index, data['Adj Close'])
ax.plot(data.index, data['ma5'])
ax.plot(data.index, data['ma20'])
ax.set_xlabel('Date')
ax.set_ylabel('Price')
plt.show()
判断是否买入或卖出股票
if data['Adj Close'] > data['ma5'] and data['Adj Close'] > data['ma20']:
print('买入')
elif data['Adj Close'] < data['ma5'] and data['Adj Close'] < data['ma20']:
print('卖出')
else:
print('暂时不动')