以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 金字塔软件在用python时闪退 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=169696) |
-- 作者:qq代人发帖 -- 发布时间:2019/5/6 10:24:14 -- 金字塔软件在用python时闪退 |
-- 作者:yukizzc -- 发布时间:2019/5/6 14:39:03 -- from PythonApi import * def init(context): # 在context中保存全局变量 context.s1 = "J00" # # before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现) def before_trading(context): pass def handle_bar(context): # 开始编写你的主要的算法逻辑 mr=get_indicator(\'J00\',\'均线交叉\',\'MYKD\', \'5,15,20\',\'1d\',30) mc=get_indicator(\'J00\',\'均线交叉\',\'MYKK\', \'5,15,20\',\'1d\',30) pd=get_indicator(\'J00\',\'均线交叉\',\'MYPD\', \'5,15,20\',\'1d\',30) pk=get_indicator(\'J00\',\'均线交叉\',\'MYPK\', \'5,15,20\',\'1d\',30) portfolio=get_portfolio(\'J00\',0) #获取持仓量 a = get_price_change_rate(context.s1,1) print(a[-1].values) # after_trading函数会在每天交易结束后被调用,当天只会被调用一次 def after_trading(context): pass 本地这样测试么有问题,并且有输出值,你那边是什么品种呢?
|
-- 作者:alp -- 发布时间:2019/5/6 17:24:37 -- 闪退问题 我测试的是系统指数,分别按照单个指数,和 遍历填入所有指数,都回出现闪退, |
-- 作者:无为剑 -- 发布时间:2019/5/6 18:28:22 -- 希望提供一下测试代码,以及测试时的相关配置等,方便我们进行问题重现,谢谢您的合作 |
-- 作者:alp -- 发布时间:2019/5/7 9:47:24 -- 测试代码及配置如下 # 本Python代码主要用于策略交易 # 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。 from PythonApi import * import pandas as pd # 参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现) #def parameter(): # input_par("myvalues1",5,1,20,1) # input_par("myvalues2",10,1,20,1) # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现) def init(context): # 在context中保存全局变量 context.s1 = "SZ000001" #平安银行股票 # print("策略启动") #调试打印输出 # before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现) def before_trading(context): pass # 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现) def handle_bar(context): # 获取板块指数实时数据
# 获取指数代码 code_tail_2 = list(range(2000,2071,1)) code_tail_20 = [str(i) for i in code_tail_2] code_tail = code_tail_20 #获取指数对应数据 for code in code_tail: code_pr = \'ZS\' + code bar_len=1 a = history_bars(code_pr,bar_len,\'tick\',\'close\') b = get_price_change_rate(code_pr,1) print(("板块代码:",code_pr,"实时点位:",a)) print(b) # 开始编写你的主要的算法逻辑。 #使用buy_open、sell_close等方法下单 #下单示例: #buy_open(context.s1, "Market", volume = 100) # 市价开多 #buy_open(context.s1, "Limit", 25.45, 100) # 限价开多 pass # after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现) def after_trading(context): pass # order_status当委托下单,成交,撤单等与下单有关的动作时,该方法就会被调用。---(选择实现) #def order_status(context,order): # pass # order_action当查询交易接口信息时返回的通知---(选择实现) #def order_action(context,type, account, datas) # pass # exit函数会在测评结束或者停止策略运行时会被调用。---(选择实现) #def exit(context): # pass handle_bar("SZ000001") 电脑配置如下: 电脑概览 电脑型号 联想 20DFA04ACD 操作系统 Microsoft Windows 10 家庭中文版 (64位) CPU (英特尔)Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz(2394 MHz) 主板 联想 20DFA04ACD 内存 16.00 GB ( 1600 MHz) 主硬盘 240 GB ( AD72700J 已使用时间: 2580小时) 显卡 AMD Radeon R7 M265 Series 显示器 联想 N156HGE-EAB 32位真彩色 50Hz 声卡 Conexant SmartAudio HD 网卡 Intel(R) Ethernet Connection (3) I218-V |
-- 作者:yukizzc -- 发布时间:2019/5/8 9:53:53 -- 情况看到了,是中间2015没有数据所以出的问题,奔溃的情况已经和开发那反馈过了 另外你在取数据时候可以考虑加上数量判断,或者isnul判断,或者直接用try来进行异常处理。否者大部分都会报错,空对象执行操作报错 try: context.code = get_blocks("沪深300样本股",1) context.to_buy = chose_stock(context.code) except: pass [此贴子已经被作者于2019/5/8 10:00:02编辑过]
|