欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 金字塔软件在用python时闪退

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2939人关注过本帖树形打印复制链接

主题:金字塔软件在用python时闪退

帅哥哟,离线,有人找我吗?
qq代人发帖
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
金字塔软件在用python时闪退  发帖心情 Post By:2019/5/6 10:24:14 [只看该作者]

使用这个函数时闪退,去掉该函数可以运行,这是什么问题呢?

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:42 积分:0 威望:0 精华:0 注册:2019/3/4 17:32:00
闪退问题  发帖心情 Post By:2019/5/6 17:24:37 [只看该作者]

我测试的是系统指数,分别按照单个指数,和 遍历填入所有指数,都回出现闪退,

 回到顶部
帅哥哟,离线,有人找我吗?
无为剑
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2019/5/6 18:28:22 [只看该作者]

希望提供一下测试代码,以及测试时的相关配置等,方便我们进行问题重现,谢谢您的合作

 回到顶部
帅哥哟,离线,有人找我吗?
alp
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:42 积分:0 威望:0 精华:0 注册:2019/3/4 17:32:00
测试代码及配置如下  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By: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编辑过]

 回到顶部