这个是虚坏叔叔的主站。牢记域名: [xuhss.com](拼音首字母)。首页可以搜索或: 虚幻账号

Python量化交易实战-28基于策略,寻找最优周期对

auto-trade 虚幻 631℃ 0评论

创建一个文件find_best_param.py用于寻找最优参数。

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

import Data.Stock as st
import Strategy.ma_strategy as ma

# 参数1:股票池
code = '000001.XSHE'
data = st.get_single_price(stock_code=code, timefrequency='daily', start_date='2016-01-01', end_date='2021-01-01')
# 参数2:周期参数
params=[5, 10, 20, 60, 120, 250]

# 匹配,并计算不同的周期参数对:5-10,5-20,...120-150
for short in params:
    for long in params:
        if long > short:
            print("当前周期参数对:", short, long)
            ma.ma_strategy(data=data, short_window=short, long_window=long)

运行

20210626213430 - Python量化交易实战-28基于策略,寻找最优周期对

我们得到了一支股票,在所有的周期对的收益率。可以看到越到周期越长的时间,交易的次数越少。

这里我想直接看到最终的周期对对应的收益,而不是打印出这么多数据,应该怎么实现呢?

其实就是提取dataframe的cum_profit的最后一个数据。

直接来提取:

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

import Data.Stock as st
import Strategy.ma_strategy as ma
import pandas as pd

# 参数1:股票池
code = '000001.XSHE'
data = st.get_single_price(stock_code=code, timefrequency='daily', start_date='2016-01-01', end_date='2021-01-01')
# 参数2:周期参数
params=[5, 10, 20, 60, 120, 250]

#存放参数与收益
res = []

# 匹配,并计算不同的周期参数对:5-10,5-20,...120-150
for short in params:
    for long in params:
        if long > short:
            print("当前周期参数对:", short, long)
            df = ma.ma_strategy(data=data, short_window=short, long_window=long)
            # 获取周期参数,及其对应的累计收益率
            cum_profit = df['cum_profit'].iloc[-1]
            #将参数放入结果列表
            res.append([short, long, cum_profit])

# 将结果李彪转换为df,并找到最优参数
res = pd.DataFrame(res,columns=['short_win', 'long_win', 'cum_profit'])
# 按收益倒叙排列
res = res.sort_values(by='cum_profit', ascending=False)
print(res)

运行

20210626215118 - Python量化交易实战-28基于策略,寻找最优周期对

从这个最后的收益来看,10天对应20天的收益是最高的,这能不能说明双均线策略适合10天对20天呢?当然不可以,因为这只是针对这一支股票,个股是由极大的特殊性的。所以需要跑大量的A股,你发现百分之80的情况下,都是10天对20天收益最高,你才能说这个周期对对应的收益是最好的。

你发现这个打印出来的dataframe的索引是乱序的,这是因为排序了,你可以直接忽视掉。

转载请注明:虚坏叔叔 » Python量化交易实战-28基于策略,寻找最优周期对

喜欢 (4)

您必须 登录 才能发表评论!