with closing(api): try: while True: while not api.is_changing(klines.iloc[-1], "datetime"): # 等到达下一个交易日 api.wait_update() while True: api.wait_update() # 在收盘后预测下一交易日的涨跌情况 if api.is_changing(quote, "datetime"): now = datetime.datetime.strptime(quote.datetime, "%Y-%m-%d %H:%M:%S.%f") # 当前quote的时间 # 判断是否到达预定收盘时间: 如果到达 则认为本交易日收盘, 此时预测下一交易日的涨跌情况, 并调整为对应仓位 if now.hour == close_hour and now.minute >= close_minute: # 1- 获取数据 x_train, y_train, x_predict = get_prediction_data(klines, 75) # 参数1: K线, 参数2:需要的数据长度 # 2- 利用机器学习算法预测下一个交易日的涨跌情况 # n_estimators 参数: 选择森林里(决策)树的数目; bootstrap 参数: 选择建立决策树时,是否使用有放回抽样 clf = RandomForestClassifier(n_estimators=30, bootstrap=True) clf.fit(x_train, y_train) # 传入训练数据, 进行参数训练 predictions.append(bool(clf.predict([x_predict]))) # 传入测试数据进行预测, 得到预测的结果 # 3- 进行交易 if predictions[-1] == True: # 如果预测结果为涨: 买入 print(quote.datetime, "预测下一交易日为 涨") target_pos.set_target_volume(50) else: # 如果预测结果为跌: 卖出 print(quote.datetime, "预测下一交易日为 跌") target_pos.set_target_volume(-50) break else : turtle.strategy()
大佬,我想是把官方示例的两个结合起来收盘用随机森林预测然后在盘中用海龟,我这个代码为什么在回测的时候只执行else中的代码不执行if中的代码呢
李思恒 已回答的问题 2024年4月10日