首先,我们需要导入easytrader库,并连接我们要使用的券商。在本例中,我们将使用ht_client作为券商。
# 导入easytrader模块
from easytrader import *
# 导入easytrader券商接口
from easytrader.clients.ht_client import HTClient
# 连接华泰证券
user = '123456' # 账户名
password = '654321' # 密码
ht_client = HTClient(user, password)
ht_client.prepare('ht.json')
接下来,我们将复制CR指标计算函数,并在函数中添加CR指标的计算逻辑。对于每个交易日,我们先计算最高价和最低价的平均价,并将它们乘以2,算出当日的B值。根据当日的收盘价、最高价和最低价计算出CR值,通过累加计算出5天和10天的cr指标,并将它们返回。
# 复制CR指标计算函数,并添加CR指标的计算逻辑
def cal_cr(data):
length = len(data)
cr_list = []
b_list = []
for i in range(length):
if i == 0:
b = (data[0]['high'] data[0]['low']) / 2
b_list.append(b)
cr = 0
cr_list.append(cr)
else:
b = (data[i]['high'] data[i]['low']) / 2
b_list.append(b)
if b_list[i] == b_list[i-1]:
cr = 0
else:
cr = (data[i]['close'] - b_list[i]) / (b_list[i] - b_list[i-1]) * 100
cr_list.append(cr)
cr_5 = sum(cr_list[-5:]) / 5
cr_10 = sum(cr_list[-10:]) / 10
return cr_5, cr_10
在主程序中,我们将获取股票数据,并调用CR指标计算函数来得到5天和10天的CR指标。然后,我们判断当前市场趋势,并进行相应的买卖操作。如果5天CR指标大于10天CR指标,则说明市场处于上涨趋势,我们将买入股票;如果5天CR指标小于10天CR指标,则说明市场处于下跌趋势,我们将卖出股票。
# 获取股票数据
stock_code = '600000' # 股票代码
data = ht_client.get_security_bar(code=stock_code, freq="D", count=20)
# 计算CR指标
cr_5, cr_10 = cal_cr(data)
# 判断当前市场趋势,进行相应的买卖操作
portfolio = ht_client.get_portfolio()
if cr_5 > cr_10:
if stock_code not in portfolio.keys():
ht_client.buy(stock_code, price=None, amount=100)
elif cr_5 < cr_10:
if stock_code in portfolio.keys():
ht_client.sell(stock_code, price=None, amount=portfolio[stock_code][‘current_amount’])