
以下用于展示如何使用BOLL和CII指标结合的组合交易策略:
import numpy as np
import pandas as pd
import talib
# 读取历史价格数据
data = pd.read_csv('historical_data.csv') # 假设价格数据存储在historical_data.csv文件中
# 计算BOLL指标
data['upper_band'], data['middle_band'], data['lower_band'] = talib.BBANDS(data['close'], timeperiod=20)
# 计算CII指标
cii = talib.CMO(data['close'], timeperiod=14)
# 初始化交易信号
data['signal'] = 0
# 制定交易策略
for i in range(1, len(data)):
# 判断CII指标,确认交易方向
if cii[i] > 0:
trend = 'up'
else:
trend = 'down'
# 在上涨趋势中,当股价触及布林带下轨时,买入
if trend == 'up' and data['close'][i] < data['lower_band'][i]:
data['signal'][i] = 1 # 买入信号为1
# 在下跌趋势中,当股价触及布林带上轨时,卖出
elif trend == 'down' and data['close'][i] > data['upper_band'][i]:
data['signal'][i] = -1 # 卖出信号为-1
# 根据交易信号计算持仓和收益
data['position'] = data['signal'].diff()
data['returns'] = np.log(data['close']/data['close'].shift(1))
data['strategy_returns'] = data['position'].shift(1) * data['returns']
# 统计收益
total_returns = data['strategy_returns'].cumsum()
annualized_returns = total_returns[-1] * 252 / len(data)
sharpe_ratio = np.sqrt(252) * (data['strategy_returns'].mean() / data['strategy_returns'].std())
print("年化收益率:", annualized_returns)
print("夏普比率:", sharpe_ratio)
# 可以进一步进行结果的可视化和参数的优化等操作

请注意,以上代码仅为示例,实际使用时需要根据具体的数据和策略进行参数的优化和调整。另外,需要安装TA-Lib库来计算BOLL和CII指标,可以使用pip install TA-Lib进行安装。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/77215
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!