返回列表 发布新帖

【done】我从迅投知识库里复制过来的模型怎么通过不了?

870 3
发表于 2024-3-19 18:01:23 | 显示全部楼层 阅读模式
我从迅投知识库里复制的双均线模型怎么通过不了?错误原因是第四行,paddas没有属性,我的python库已经下载了,而且在其它模型上pandas等用在其它模型上也没有问题。#coding:gbk

#导入常用库
import pandas as pd
import numpy as np
import talib
#示例说明:本策略,通过计算快慢双均线,在金叉时买入,死叉时做卖出 点击回测运行 主图选择要交易的股票品种

def init(C):
        #init handlebar函数的入参是ContextInfo对象 可以缩写为C
        #设置测试标的为主图品种,初始化股票代码,格式为"股票代码.市场代码“
        C.stock= C.stockcode + '.' +C.market
        #line1和line2分别为两条均线期数
        C.line1=10   #快线参数
        C.line2=20   #慢线参数
        #accountid为测试的ID 回测模式资金账号可以填任意字符串
        C.accountid = "testS"  

def handlebar(C):
        #当前k线日期,将时间戳转换成日期时间格式
        bar_date = timetag_to_datetime(C.get_bar_timetag(C.barpos), '%Y%m%d%H%M%S')
        #获取指定时间段的市场数据,回测不需要订阅最新行情使用本地数据速度更快 指定subscribe参数为否. 如果回测多个品种 需要先下载对应周期历史数据
        local_data = C.get_market_data_ex(['close'], [C.stock], end_time = bar_date, period = C.period, count = max(C.line1, C.line2), subscribe = False)
        close_list = list(local_data[C.stock].iloc[:, 0])#获取收盘价列表
        #将获取的历史数据转换为DataFrame格式方便计算
        #如果目前未持仓,同时快线穿过慢线,则买入8成仓位
        if len(close_list) <1:
                print(bar_date, '行情不足 跳过')
        line1_mean = round(np.mean(close_list[-C.line1:]), 2)#计算快线均值
        line2_mean = round(np.mean(close_list[-C.line2:]), 2)#计算慢线均值
        print(f"{bar_date} 短均线{line1_mean} 长均线{line2_mean}")#输出均线值
        account = get_trade_detail_data('test', 'stock', 'account')#获取持仓信息
        account = account[0]
        available_cash = int(account.m_dAvailable)#可用资金
        holdings = get_trade_detail_data('test', 'stock', 'position')#获取持仓信息
        holdings = {i.m_strInstrumentID + '.' + i.m_strExchangeID : i.m_nVolume for i in holdings}#持仓股票及数量
        holding_vol = holdings[C.stock] if C.stock in holdings else 0#当前股票持仓量
        #如果未持仓且快线大于慢线,则下单开仓。
        if holding_vol == 0 and line1_mean > line2_mean:
                vol = int(available_cash / close_list[-1] / 100) * 100#计算可买入股票数量
                #下单开仓
                passorder(23, 1101, C.accountid, C.stock, 5, -1, vol, C)
                print(f"{bar_date} 开仓")
                C.draw_text(1, 1, '开')#在图表上标记开仓
        #如果目前持仓中,同时快线下穿慢线,则全部平仓
        elif holding_vol > 0 and line1_mean < line2_mean:
                #状态变更为未持仓
                C.holding=False
                #下**仓
                passorder(24, 1101, C.accountid, C.stock, 5, -1, holding_vol, C)
                print(f"{bar_date} 平仓")
                C.draw_text(1, 1, '平')#在图标上标记平仓

1.png

评论3

rzp
发表于 2024-3-19 20:40:46 | 显示全部楼层
重启客户端,如果重启后问题还存在,可以重新下载python库
鹦鹉洲楼主
发表于 2024-3-19 21:45:33 | 显示全部楼层
今天是拿到账号第5天,我之前装的是D盘,刚才老师让我重新下载PYTHON库,我重新下载以后还是不行。我索性就把软件卸载了,在一个大容量的G盘重新安装。重新安装登录以后连pyrhon库都无法下载,显示“未知的错误”,这是什么意思?电脑重启,账号重新登录也下载不了,这是什么原因? image.png
鹦鹉洲楼主
发表于 2024-3-20 07:09:36 | 显示全部楼层
今天早上重新下载python库,又可以了,也许是python库当时正好在维护。python库下载以后,模型也能正常运转了。谢谢老师,问题解决了。

回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表