# Python量化交易示例代码
# 导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf
from datetime import datetime
# 获取股票数据
def get_stock_data(ticker, start_date, end_date):
"""
使用yfinance库获取指定时间段内的股票数据。
参数:
ticker (str): 股票代码
start_date (str): 开始日期,格式为 'YYYY-MM-DD'
end_date (str): 结束日期,格式为 'YYYY-MM-DD'
返回:
DataFrame: 包含股票历史数据的DataFrame
"""
stock_data = yf.download(ticker, start=start_date, end=end_date)
return stock_data
# 简单移动平均线策略
def simple_moving_average_strategy(data, short_window, long_window):
"""
实现简单的移动平均线交叉策略。
参数:
data (DataFrame): 股票数据
short_window (int): 短期移动平均线窗口
long_window (int): 长期移动平均线窗口
返回:
DataFrame: 包含买卖信号的DataFrame
"""
signals = pd.DataFrame(index=data.index)
signals['price'] = data['Adj Close']
signals['short_mavg'] = data['Adj Close'].rolling(window=short_window, min_periods=1).mean()
signals['long_mavg'] = data['Adj Close'].rolling(window=long_window, min_periods=1).mean()
signals['signal'] = 0.0
# 生成买入和卖出信号
signals['signal'][short_window:] = np.where(signals['short_mavg'][short_window:] > signals['long_mavg'][short_window:], 1.0, 0.0)
signals['positions'] = signals['signal'].diff()
return signals
# 可视化策略结果
def plot_strategy_results(signals, ticker):
"""
绘制移动平均线和买卖信号图。
参数:
signals (DataFrame): 包含买卖信号的DataFrame
ticker (str): 股票代码
"""
fig = plt.figure(figsize=(12, 6))
ax1 = fig.add_subplot(111, ylabel=f'{ticker} price in $')
# 绘制价格、短期和长期移动平均线
signals[['price', 'short_mavg', 'long_mavg']].plot(ax=ax1, lw=2.)
# 绘制买入信号
ax1.plot(signals.loc[signals.positions == 1.0].index,
signals.short_mavg[signals.positions == 1.0],
'^', markersize=10, color='g', lw=0, label='buy signal')
# 绘制卖出信号
ax1.plot(signals.loc[signals.positions == -1.0].index,
signals.short_mavg[signals.positions == -1.0],
'v', markersize=10, color='r', lw=0, label='sell signal')
plt.legend(loc='best')
plt.show()
# 主函数
if __name__ == "__main__":
ticker = 'AAPL' # 苹果公司股票代码
start_date = '2020-01-01'
end_date = datetime.now().strftime('%Y-%m-%d')
# 获取股票数据
stock_data = get_stock_data(ticker, start_date, end_date)
# 应用简单移动平均线策略
signals = simple_moving_average_strategy(stock_data, short_window=40, long_window=100)
# 可视化策略结果
plot_strategy_results(signals, ticker)
导入库:我们导入了pandas
、numpy
、matplotlib
和yfinance
等常用库。yfinance
用于获取股票数据,pandas
用于数据处理,matplotlib
用于绘图。
获取股票数据:通过get_stock_data
函数从Yahoo Finance获取指定时间段内的股票数据。
简单移动平均线策略:simple_moving_average_strategy
函数实现了简单的移动平均线交叉策略。当短期移动平均线超过长期移动平均线时,发出买入信号;反之,则发出卖出信号。
可视化策略结果:plot_strategy_results
函数用于绘制股票价格、短期和长期移动平均线以及买卖信号。
主函数:在主函数中,我们指定了苹果公司的股票代码(AAPL),并调用上述函数来获取数据、应用策略并可视化结果。
希望这段代码能帮助你理解如何使用Python进行量化交易的基本操作。
上一篇:python with as
下一篇:python怎么保存
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站