上饶有哪些做网站的店,网络维护是什么职业,可视化网站模板,游戏网站开发难度上一章节《MACD金死叉策略回测》中#xff0c;对平安银行这只股票#xff0c;按照金死叉策略进行了回测。
但通常我们的股票池中有许多股票#xff0c;每完成一个交易策略都需要对整个股票池进行回测。
下面使用简单的轮询#xff0c;对整个股票池进行回测。
# 计算单只…上一章节《MACD金死叉策略回测》中对平安银行这只股票按照金死叉策略进行了回测。
但通常我们的股票池中有许多股票每完成一个交易策略都需要对整个股票池进行回测。
下面使用简单的轮询对整个股票池进行回测。
# 计算单只股票的策略收益返回收益率。
def backtrader(fcode):sql_query fSELECT tdate as ts, close FROM {db_name}.{table_name} WHERE fcode{fcode} result get_request(sql_query)close_prices [row[1] for row in result]macd_line, signal_line, macd_histogram calculate_macd(close_prices,12,26,9)crossing_points check_macd(macd_line, signal_line)profits calculate_profit(close_prices, crossing_points)capital profits[0]profit profits[-1]pro_rate (profit-capital)*100/capitalreturn pro_rate# 获取所有股票按轮询方式进行测试
pfile open(file,a,encodingUTF-8)
sql_code fselect distinct tbname,fcode,fname from {db_name}.{table_name} order by fcode ;
result get_request(sql_code)
df_code pd.DataFrame(result, columns[tbname,fcode, fname])
prl []
for row in df_code.itertuples(indexFalse):try:profit_rate backtrader(row.fcode)except:profit_rate 0prl.append(profit_rate)pfile.write(fName:{row.fname}\t Code:{row.fcode}\t Pro_Rate:{profit_rate}\n)
df_code[Profit_Rate] prl
pfile.close()以下是部分股票的收益展示
整个程序实现逻辑如下
MACD交易策略回测程序
该程序用于进行MACD交易策略的回测。给定一组股票数据程序会根据MACD指标的金叉和死叉信号进行买入和卖出操作并计算收益率。
程序功能
通过RESTful请求获取股票数据计算MACD指标判断MACD金叉和死叉计算收益率计算所有股票代码的收益率并输出到文件
程序依赖
该程序依赖以下库
requests用于发送RESTful请求json用于解析RESTful请求返回的结果matplotlib用于结果可视化pandas用于数据处理和分析numpy用于数值计算
使用方法
安装所需的Python库在控制台中运行以下命令安装依赖库
pip install requests json matplotlib pandas numpy下载程序文件将程序代码保存为一个Python脚本例如macd_all_code.py。 运行程序在控制台中运行以下命令来执行程序
python macd_all_code.py程序细节
get_request(sql)函数用于发送RESTful请求获取查询结果。calculate_macd(prices, short_period, long_period, signal_period)函数用于计算MACD指标的值。calculate_ema(prices, period)函数用于计算指数移动平均值Exponential Moving AverageEMA。check_macd(macd_line, signal_line)函数用于判断MACD金叉和死叉的发生。calculate_profit(prices, signals)函数用于计算收益率。backtrader(fcode)函数用于执行回测策略并返回收益率。基于给定的股票数据程序使用循环遍历所有股票代码并计算每个股票的收益率。程序将结果以文件形式输出输出文件名为Profit.txt包含股票的名称、代码和收益率。