Python的异常处理技巧

论坛 期权论坛 期权     
真格量化   2019-8-16 09:40   5725   0
我们在真格量化中编写策略时,会需要在一些比较容易出错的地方自定义报错的信息,以及设定错误出现后的处理方式,而Python已经提供了许多用于异常处理的方法,可以方便地调用。



异常如何捕获


当函数内发生异常,异常实例对象对被抛给该函数的调用者,如果该函数的调用者没有捕获和处理,则继续抛给上一层的调用者,这样一直向上抛,最后会被Python解释器捕获。


在异常实例对象被向上抛的过程中,可以选择合适的层对异常实例对象进行捕获和处理,而不需要在每一层进行捕获和处理。


错误的详细信息


Traceback,它指的是异常调用堆栈的跟踪信息,其中列出了程序中的相关行数对应的异常类对象的名称,以及异常的错误信息。


比如一个可以导致错误的语句(输出1/0):







系统日志里可以看到报错信息,程序也会因为这个错误被终止:






try-except-else-finally


Python内置了很多异常类对象,所有内置异常类对象的基类是Exception。我们可以使用try-except语句来捕获和处理异常。如果有多个except来处理异常,则按顺序匹配得第一个异常将会被处理并返回。




在用户日志,输出了匹配的第一个异常(0作为除数),且输出了Finally中的信息:



有了try-except-else,出现我们预期的错误后,回测仍可以完成:

另一个try-except-else例子如下:

系统会捕捉到异常,运行except Exception as ex条件下的语句:

如果没有异常就运行else条件下的语句,比如当我们将x=0改为x=1/2:

这时没有异常,程序就运行else条件下的语句:



使用raise手动抛出异常
我们还可以用raise 关键字引发一个异常,让程序终止。

系统会报出我们自己指定的错误信息:



当我们觉得系统默认的报错方式不够精准时,不妨试试这些异常处理方法。



— — — — — — E N D — — — — — —



真格量化可访问:
https://quant.pobo.net.cn


真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887






往期文章:
Numpy处理tick级别数据技巧
真正赚钱的期权策略曲线是这样的
多品种历史波动率计算
如何实现全市场自动盯盘
AI是怎样看懂研报的
真格量化策略debug秘籍
真格量化对接实盘交易
常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法
如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

活用订单类型规避频繁撤单风险

真格量化回测撮合机制简介

如何调用外部数据

如何处理回测与实盘差别

如何利用趋势必然终结获利

常见量化策略介绍

期权交易“七宗罪”

波动率交易介绍

推高波动率的因素

波动率的预测之道

趋势交易面临挑战
如何构建知识图谱
机器学习就是现代统计学

AI技术在金融行业的应用

如何避免模型过拟合

低延迟交易介绍

架构设计中的编程范式

交易所视角下的套利指令撮合

距离概念与特征识别

气象风险与天气衍生品

设计量化策略的七个“大坑”

云计算在金融行业的应用

机器学习模型评估方法
真格量化制作期权HV-IV价差
另类数据介绍

TensorFlow中的Tensor是什么?

机器学习的经验之谈

用yfinance调用雅虎财经数据

容器技术如何改进交易系统
Python调用C++
如何选择数据库代理
统计套利揭秘

[h1]一个Call搅动市场?让我们温习一下波动率策略[/h1][h1]如何用真格量化设计持仓排名跟踪策略[/h1][h1]还不理解真格量化API设计?我们不妨参考一下CTP平台[/h1][h1]理解同步、异步、阻塞与非阻塞[/h1][h1]隐波相关系数和偏度——高维风险的守望者[/h1]Delta中性还不够?——看看如何设计Gamma中性期权策略

[h1]Python的多线程和多进程——从一个爬虫任务谈起[/h1]线程与进程的区别
皮尔逊相关系数与历史K线匹配

Python2和Python3的兼容写法
Python代码优化技巧

理解Python的上下文管理器

如何写出更好的Python代码?这是Python软件基金会的建议
评估程序化模型时我们容易忽视的指标

看看如何定位Python程序性能瓶颈

什么是Python的GIL

投资研究中的大数据分析趋势及应用

理解CTP中的回调函数

如何围绕隐含波动率设计期权交易策略                    
看看如何用Python进行英文文本的情感分析
算法交易的分类

Python编码的最佳实践总结

什么是波动率锥?如何用波动率锥设计期权策略?
期权的波动率策略与时间价值收集策略对比

期权用于套期保值和无风险套利

隐含波动率对期权策略的影响

卖出期权交易的风险管理原则和技巧
期权交易中的“大头针”风险
期权做市商策略简介

精细化您的交易——交易成本评估与交易执行策略
海外市场交易执行策略的实践
设计期权套期保值方案时应注意的问题
美式期权、欧式期权比较分析——定价与风险管理
构建您的AI时代武器库——常用的机器学习相关Python库
期权波动率“微笑曲线”之谜
运算任务愈发繁重,如何加速Python程序运行?
证券市场微观结构理论模型是什么

是瞬间成交还是漫长等待?——如何衡量市场流动性
波动率指数及其衍生品介绍






























































分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:870
帖子:180
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP