交作业

来源:4-11 双均线策略:寻找最优参数

慕粉17780521093

2021-08-07

输入正

import pandas as pd
import data.stock as st
import data.strategy.ma_strategy as ma
# 参数1:日期参数
start_date = '2016-01-01'
end_date = '2021-01-01'
# 参数2:获取所有股票代码
codes = list(st.get_all_securities('stock').index)
# codes=['000024.XSHE']
# 参数3:周期参数
params = [5, 10, 20, 60, 120, 250]
# 存放股票代码、名称和最优参数的窗口参数以及对应的累计收益
res = []
# 匹配并计算不同周期参数对的双均线策略收益
for code in codes:
    data = st.get_cvs_data(code, None, start_date, end_date)
    buff = []  # 存放单只股票的窗口参数和对应的累计收益
    for short_win in params:
        for long_win in params:
            if long_win > short_win:
                data_res = ma.ma_strategy(data, short_win, long_win)
                if len(data_res['cum_profit_pct']) != 0:
                    buff.append([short_win, long_win, data_res['cum_profit_pct'][-1]])
    # 用dataframe来存储单只股票的参数及对应累计收益
    df = pd.DataFrame(buff, columns=['short_win', 'long_win', 'cum_profit_pct'])
    # 按累计收益降序排序,第一行收益最高
    df.sort_values(by='cum_profit_pct', ascending=False, inplace=True, ignore_index=True)
    # print(df)
    # 将该股票收益最高的收益率,以及对应的参数存入res
    if not df.empty:
        res.append([code, st.get_single_stock_name(code),
                    df['short_win'][0], df['long_win'][0], df['cum_profit_pct'][0]])
res = pd.DataFrame(res, columns=['股票代码', '股票名称', '短均线', '长均线', '累计收益'])
print(res)

输出

            股票代码    股票名称  短均线  长均线       累计收益

0     000001.XSHE    平安银行   10   20   0.878808

1     000002.XSHE     万科A    5   10   0.632045

2     000004.XSHE    国华网安   60  120   0.000360

3     000005.XSHE    ST星源  120  250  -0.120735

4     000006.XSHE    深振业A   20  120   0.025180

5     000007.XSHE   *ST全新   10   20   0.074555

6     000008.XSHE    神州高铁    5  250  -0.225289

7     000009.XSHE    中国宝安   10  120   0.266550

8     000010.XSHE    美丽生态  120  250  -0.081638

9     000011.XSHE    深物业A    5   20   1.444595

10    000012.XSHE     南玻A    5   20   0.279840

11    000014.XSHE    沙河股份  120  250  -0.154316

12    000016.XSHE    深康佳A   10  120   0.349102

13    000017.XSHE    深中华A   60  120  -0.189555

14    000018.XSHE    神城A退    5  120  -0.440542

15    000019.XSHE    深粮控股   20  120   0.097367

16    000020.XSHE    深华发A  120  250   0.041104

17    000021.XSHE     深科技   60  120   1.165259

18    000022.XSHE    深赤湾A   20   60   0.621248

19    000023.XSHE    深天地A   60  120  -0.054055

20    000025.XSHE     特力A  120  250  -0.148175

21    000026.XSHE     飞亚达   20   60   0.498781

22    000027.XSHE    深圳能源   60  120   0.009304

23    000028.XSHE    国药一致  120  250  -0.054146

24    000029.XSHE    深深房A    5  120  -0.216234

25    000030.XSHE    富奥股份   60  120   0.796940

26    000031.XSHE     大悦城    5  250  -0.155478

27    000032.XSHE    深桑达A   60  120   1.383074

28    000033.XSHE     新都退    5  120   0.000000

29    000034.XSHE    神州数码    5   10   1.129487

30    000035.XSHE    中国天楹    5   20  -0.020243

31    000036.XSHE    华联控股   10  120   0.285607

32    000037.XSHE    深南电A   10   20   2.623502

33    000038.XSHE     深大通   10   20   0.278797

34    000039.XSHE    中集集团   10   20   0.686582

35    000040.XSHE    东旭蓝天   10   20  -0.071977

36    000042.XSHE    中洲控股    5   60  -0.173137

37    000043.XSHE    中航善达    5   20   1.056848

38    000045.XSHE    深纺织A  120  250  -0.279975

39    000046.XSHE    泛海控股   10   20  -0.146458

40    000048.XSHE    京基智农    5   10   0.124720

41    000049.XSHE    德赛电池    5   20   0.476313

42    000050.XSHE    深天马A  120  250  -0.116892

43    000055.XSHE    方大集团   10   20   0.369630

44    000056.XSHE    皇庭国际   60  250  -0.228437

45    000058.XSHE     深赛格    5   10  -0.088041

46    000059.XSHE    华锦股份    5   20   0.507233

47    000060.XSHE    中金岭南   20   60  -0.028813

48    000061.XSHE     农产品   20  120   0.443802

49    000062.XSHE    深圳华强  120  250  -0.188833

50    000063.XSHE    中兴通讯   60  120   2.490996

51    000065.XSHE    北方国际    5   20   0.905172

52    000066.XSHE    中国长城   10   20   1.077278

53    000068.XSHE    华控赛格   60  120  -0.005351

54    000069.XSHE    华侨城A   20  250   0.188573

55    000070.XSHE    特发信息    5   10   0.309951

56    000078.XSHE    海王生物   10   60   0.180446

…………

4146  688608.XSHG    恒玄科技    5   10        NaN

4147  688699.XSHG    明微电子    5   10        NaN

4148  688777.XSHG    中控技术    5   10  -0.001402

4149  688788.XSHG    科思科技    5   20   0.013390

4150  688981.XSHG    中芯国际    5   20  -0.038237

4151  689009.XSHG    九号公司    5   10   0.274107

Process finished with exit code 0


写回答

3回答

慕容3139001

2023-01-11

请问,为什么要有这行代码“if not df.empty”,会有空的df吗?df怎么会为空呢?谢谢

0
0

慕容3139001

2023-01-11

你是买了巨宽的会员吗?不然怎么能够获取这么多数据的啊?

0
0

DeltaF

2021-08-09

优秀,祝学习愉快

0
0

程序员理财课 Python量化交易系统实战

打造一个自动交易平台,新手也能提升理财收益

1987 学习 · 405 问题

查看课程

相似问题

交作业

回答 2

交作业

回答 1

交作业

回答 1

交作业

回答 2