您好, 下面是一个简单的Python源码示例,用于实现一个基本的期货趋势跟踪量化策略。这个策略基于价格突破移动平均线来触发买入或卖出信号。为了简单起见,我们将使用Pandas库来处理数据,并使用NumPy库进行数值计算。
首先,确保你已经安装了必要的库:
```bash
pip install pandas numpy yfinance matplotlib
```
然后,你可以使用以下代码来实现一个简单的趋势跟踪策略:
```python
import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
下载期货数据(这里以原油期货为例,使用WTI原油ETF作为替代)
注意:实际期货数据可能需要从专门的期货数据源获取
symbol = 'USO' # WTI原油ETF,作为原油期货的替代
start_date = '2020-01-01'
end_date = '2023-01-01'
data = yf.download(symbol, start=start_date, end=end_date)
计算移动平均线
data['SMA_50'] = data['Adj Close'].rolling(window=50).mean()
data['SMA_200'] = data['Adj Close'].rolling(window=200).mean()
初始化信号
data['Signal'] = 0
策略逻辑:当价格突破50日均线上穿200日均线时买入,下穿时卖出
data['Signal'][50:] = np.where(data['SMA_50'][50:] > data['SMA_200'][50:], 1, 0)
data['Signal'] = data['Signal'].astype(int)
data['Position'] = data['Signal'].diff()
生成交易信号(1表示买入,-1表示卖出,0表示无操作)
data['Trade_Signal'] = np.where(data['Position'] == 1, 1, np.where(data['Position'] == -1, -1, 0))
策略表现:计算策略收益
data['Strategy_Returns'] = data['Adj Close'].pct_change() * data['Trade_Signal'].shift(1)
data['Cumulative_Returns'] = (1 + data['Strategy_Returns']).cumprod() - 1
表现:计算基准收益(例如,持有不动)
data['Benchmark_Returns'] = data['Adj Close'].pct_change()
data['Benchmark_Cumulative_Returns'] = (1 + data['Benchmark_Returns']).cumprod() - 1
请注意,这只是一个非常基础的示例,实际应用中需要更多的优化和风险管理措施。
要想入门量化交易不踩坑,或者觉得量化做起来有点复杂,不知道从哪儿开始,可以直接加我微信或电话交流学习,让你低成本免费实现量化,还有现成的量化策略模型,免编程,直接用,一对一帮你快速上手!
发布于2025-1-5 18:14 上海