[量化投资-学习笔记012]Python+TDengine从零开始搭建量化分析平台-策略回测

上一章节《MACD金死叉策略回测》中,对平安银行这只股票,按照金死叉策略进行了回测。

但通常我们的股票池中有许多股票,每完成一个交易策略都需要对整个股票池进行回测。

下面使用简单的轮询,对整个股票池进行回测。

# 计算单只股票的策略收益,返回收益率。
def backtrader(fcode):
    sql_query = f"SELECT 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/capital
    return pro_rate
# 获取所有股票,按轮询方式进行测试
pfile = open(file,'a',encoding='UTF-8')
sql_code = f"select 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(index=False):
    try:
        profit_rate = backtrader(row.fcode)
    except:
        profit_rate = 0
    prl.append(profit_rate)
    pfile.write(f"Name:{row.fname}\t Code:{row.fcode}\t Pro_Rate:{profit_rate}\n")
df_code['Profit_Rate'] = prl
pfile.close()

以下是部分股票的收益展示
[量化投资-学习笔记012]Python+TDengine从零开始搭建量化分析平台-策略回测_第1张图片

整个程序实现逻辑如下:

MACD交易策略回测程序

该程序用于进行MACD交易策略的回测。给定一组股票数据,程序会根据MACD指标的金叉和死叉信号进行买入和卖出操作,并计算收益率。

程序功能

  • 通过RESTful请求获取股票数据
  • 计算MACD指标
  • 判断MACD金叉和死叉
  • 计算收益率
  • 计算所有股票代码的收益率,并输出到文件

程序依赖

该程序依赖以下库:

  • requests:用于发送RESTful请求
  • json:用于解析RESTful请求返回的结果
  • matplotlib:用于结果可视化
  • pandas:用于数据处理和分析
  • numpy:用于数值计算

使用方法

  1. 安装所需的Python库:在控制台中运行以下命令安装依赖库:
pip install requests json matplotlib pandas numpy
  1. 下载程序文件:将程序代码保存为一个Python脚本(例如macd_all_code.py)。

  2. 运行程序:在控制台中运行以下命令来执行程序:

python macd_all_code.py

程序细节

  1. get_request(sql)函数用于发送RESTful请求,获取查询结果。
  2. calculate_macd(prices, short_period, long_period, signal_period)函数用于计算MACD指标的值。
  3. calculate_ema(prices, period)函数用于计算指数移动平均值(Exponential Moving Average,EMA)。
  4. check_macd(macd_line, signal_line)函数用于判断MACD金叉和死叉的发生。
  5. calculate_profit(prices, signals)函数用于计算收益率。
  6. backtrader(fcode)函数用于执行回测策略,并返回收益率。
  7. 基于给定的股票数据,程序使用循环遍历所有股票代码,并计算每个股票的收益率。
  8. 程序将结果以文件形式输出,输出文件名为Profit.txt,包含股票的名称、代码和收益率。

你可能感兴趣的:(笔记,Python,TDengine,学习,笔记,python,量化,AI编程)