交作业

来源:4-12 【实战作业】:尝试创建基于布林道的择时策略

慕粉17780521093

2021-08-08

def bull_strategy(code, start_date, end_date, window):
    # 获取股票代码在指定时间段的价格数据
    data = st.get_cvs_data(code, 'price', start_date, end_date)
    # 计算上(upper)、中(mid)、下(lower)轨线值
    data['std'] = data['close'].rolling(window).std()
    data['mid'] = data['close'].rolling(window).mean()
    data['upper'] = data['mid'] + 2 * data['std']
    data['lower'] = data['mid'] - 2 * data['std']
    # 生成交易信号:买入open>lower>close;卖出open<upper<close
    data['buy_signal'] = np.where((data['open'] > data['lower']) & (data['lower'] > data['close']), 1, 0)
    data['sell_signal'] = np.where((data['open'] < data['upper']) & (data['upper'] < data['close']), -1, 0)
    # 整理信号,计算收益率
    data_adj = data[
        (data['buy_signal'] != 0) |
        (data['sell_signal'] != 0)].copy()  # 去除无买卖日期的信号(compose_signl处理连续买卖信号时,要求连续的买卖信号中间不能有间隔)
    data_adj = base.compose_signal(data_adj)  # 整理信号
    data_adj = base.calculate_profit_pct(data_adj)  # 计算单次收益率
    data_adj = base.calculate_cum_profit_pct(data_adj)  # 计算累计收益率
    # 存储收益率数据,可视化bull线
    data_adj.to_csv('/Users/zhongbo/Desktop/data_adj.csv')
    data['upper'].plot(label='upper')
    data['mid'].plot(label='mid')
    data['lower'].plot(label='loser')
    data['close'].plot(label='close')
    plt.legend()
    plt.show()


if __name__ == '__main__':
    code = '000001.XSHE'
    bull_strategy(code, '2017-01-01', '2021-08-08', 20)


http://img.mukewang.com/szimg/610f9a23094cbc2317920728.jpg

写回答

2回答

逆天而行Gavin

2022-01-10

牛逼,学到了

0
0

DeltaF

2021-08-09

优秀,祝学习愉快

0
0

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

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

1986 学习 · 405 问题

查看课程

相似问题

交作业

回答 2

交作业

回答 1

交作业

回答 2

交作业

回答 3