以下是一个简单的 Python 代码示例,用于使用网格交易策略测试上证指数。在这个示例中,我们将使用 3% 的幅度作为网格交易的标准,以 3000 点为基础,每次交易 10000 元。
import numpy as np
import pandas as pd
import yfinance as yf
# 设置参数
symbol = "^GSPC" # 上证指数代码
step = 3000 # 网格步长
capital = 10000 # 每次交易金额
GridSize = 10 # 网格大小
# 获取历史数据
的历史数据 = yf.download("^GSPC", start="2020-01-01", end="2022-03-15")
历史数据 = 历史数据.dropna()
历史数据["Date"] = pd.to_datetime(历史数据["Date"])
历史数据 = 历史数据.set_index("Date")
# 计算网格交易点数
GridSize = int((历史数据.max() - step) / step) + 1
GridSize = max(GridSize, 1)
历史数据["Grid"] = (历史数据 - step) // step + 1
历史数据["Grid"] = np.clip(历史数据["Grid"], 1, GridSize)
# 初始化交易记录和资金曲线
交易记录 = pd.DataFrame(columns=["Date", "Action", "Amount", "Price"])
资金曲线 = pd.Series(0, name="Total Capital")
# 循环进行网格交易
for 日期, 数据 in 历史数据.iterrows():
日期 = 日期.strftime("%Y-%m-%d")
价格 = data["Open"]
网格编号 = data["Grid"] - 1
if 价格 > step * (网格编号 + 0.5):
交易方向 = "买入"
交易金额 = capital / (价格 / step)
else:
交易方向 = "卖出"
交易金额 = capital / (step / 价格)
交易金额 = int(round(交易金额))
交易记录.loc[交易记录["Date"] != 日期, ["Date", "Action", "Amount", "Price"]] = [日期, 交易方向, 交易金额, data["Close"]]
资金曲线 += trade_amount * price_change