python金字塔函数_Pyramid Python量化学习笔记:API的基本方法,金字塔
一、init(必须实现)
init(context)
context对象是全文对象,我也不懂是啥意思,以前学掘金量化也有这个,大概是连接上下文通用的意思吧。
用法是context.xx,整个函数都可以调用这个东西,可以是对象,方法,属性。
按金字塔的话说这个是各种初始化配置,方便算法中所有方法之间传递。
注意事项:
1、在回测模式backtest和实盘模式paper_trading中回测和实时交易都只会在启动时触发一次,仅一次!
2、pel_call被pel公式调用时,在公式初次加载时被触发一次。
例子:
def init(context):
context.cash.limit = 5000
你可以定义各种初始对象,属性,方法。
反正记住这个基本方法是初始化用的就行。
二、handle_bar(必须实现)
bar数据更新,就会自动触发这个方法的调用。
策略的具体逻辑就在这个方法内实现,在实时交易中,该函数在交易时间内会更具选择运行模式被触发。
注意事项:
尽量不要在这个方法底下放入查询类函数,因为可能会不断被触发,我的理解是有bar更新就会触发。
api说查询类逻辑尽量在init()中执行
总的来说,把策略整体比作文章,那这个方法底下写的就是主段落,写的是策略本身逻辑。
必须实现的基本方法就两个,一个是init(context),另一个就是handle_bar(context)
其他的方法都可以选择实现,可选。
三、before_trading(选择实现)
before_trading(context)
这个函数在基准合约开盘前30分钟会被调用,不能在这个函数中发送订单。
注意事项:
这个函数的触发时间取决于用户当前基准合约的交易时间。只有在交易状态下有效,如backtest和paper_trading下。
我不太懂基准合约是指什么,可能是要交易的那个合约。后面再看吧。
这个方法,可以在开盘前调用,但是不能发订单,也就是不能用交易指令,应该可以用来算一些东西吧。我也不懂
啊!
例子:
def before_trading(context):
#获取平安银行EPS财务字段数据
detaval = fin_indicator('SZ000001','EPS',1,0,0)
#将查询的财务数据保存到context对象中
context.eps = dataval
看了这个例子,大概知道,可以用这个函数,在开盘前调取一些数据,做一些初始化,或者属性更新。
原来context.xx这个函数,在全文都是可以用的,无论什么基本方法下,但是应该有先后顺序吧。
后面再看。
四、after_trading(选择实现)
after_trading(context)
这个函数,不用看就知道了吧!
意思是在交易后实现。字面意思哈哈哈,怎么用还没看,现在我们来看看。
这个基本方法呢,每天在基准合约收盘后5分钟被调用。那就是说3点收盘,15:05被触发。
同样的,不能在这个函数中发送订单,也就是不能用交易函数。
它说我可以在这个方法下进行当日收盘后的一些计算。也只能在回测backtest和paper_trading下能用。
这个函数下没有例子。一脸懵逼。
大概知道就行了吧。这个函数当日只会被调动一次。我不理解,早盘收盘算不算呢?再看吧。
五、order_status(选择实现)
order_status(context,order)
这个函数,除了context外,还有一个order,第一次见哦,啥意思呢。
它说当委托下单,成交,撤单等与下单有关动作时,该方法就会被调用。仅在回测backtest和paper_trading下可以。
context对象我们知道了,那么order对象是什么呢。这里说用于捕获处理交易过程中产生的各种下单动作,根据捕获的信息,进行相应的处理。
不懂,我们先看看例子。
def order_status(context,order):
#判断柜台汇报信息,是否为全部成交。
if order.status == 'filler':
pring('全部成交')
原来这个是成交状态,下单状态的意思哦。
这个order对象有很多属性,这里不列出来,我看了一下。
order.status属性有7个:
submitted 订单状态,已报单但是未成交
tradeing 已成交(ps:妈的怎么这样写单词呢,直接加个ing,秀啊!)
filled 全部成交
cancelled 已撤单
inactive 无效单(可能是不在开盘时间,资金不足之类的导致无效)
connected 已连接(应该是连接柜台)
disconnected 连接断开
六、order_action(选择实现)
order_action(context,type,account,datas)
第二次看到属性方法超过一个的了。
注意事项:
这个函数只在融资融券,新股申购操作刷新动作时才会触发,一般账户无效。
也就是股票账户才有的。
type是int类型,这里返回的是数字
type = 1 表示科荣券品种查询完成
type = 2 表示当日可申购新股查询完成
type = 3 表示中签查询完成
account是str,输入的是账户名
datas是int,type=1时是可融券品种数量,2是新股数量,3是中签新股数量
这个没有例子,不懂怎么用。
七、exit(选择实现)
exit(context)
用户可以在这个函数中处理一些退出后需要做的事情,比如记录一些变量到硬盘等。
注意事项:
1、backtest回测模式下,当评测结束时,这个函数被调用
2、paper_trading下,停止策略运行是,该函数被调用
3、pel_call被pel公式调用时,在pel公式关闭时被调用
我看了一个策略,这个函数的作用可以画图,在这个方法下,画曲线图啊,分布图之类的。高级哦!
def exit(context):
test_report_none()
#读取数据文件
#data = pd.read_csv(r'C:\a\201808.csv')
data = context.data
data.drop(data.columns[0], axis=1,inplace=True)
plt.figure(figsize=(5,5))
plt.imshow(data.corr(), cmap=plt.cm.hot, vmin=0, vmax=1)
plt.xticks(np.arange(19),data.columns,rotation=60)
plt.yticks(np.arange(19),data.columns)
plt.colorbar()
plt.show()
我就不懂,反正用法是那样。
八、parameter(选择实现)
parameter()
最后一个基本方法了。
这个是参数定义区,这里定义的参数,可以直接在context对象中获取。(选择实现)
注意事项:
1、参数定义区定义的变量,可以用于策略运行中动态调整参数。(不懂)
2、必须使用iput_par函数,定义变量,并且此函数仅支持在parameter()方法内使用。
3、parameter方法仅对backtest回测和paper_trading模式有效。
第一点应该是说,可以在handle_bar之类的方法中修改这个参数区,或者获取参数区的参数。
例子:
def parameter():
#使用input_par函数定义变量'myvalues1',默认值5,最小值1,最大值100,步长1
input_par("myvalues1",5,1,20,1) #玩我呢,这不是最大值20吗。它上面应该写错了
# 使用input_par函数定义变量"myvalues2",默认值10,最小值1,最大值100,步长1。
input_par("myvalues2",10,1,20,1)
……
def handle_bar(context):
print(context.myvalues1+context.myvalues2)
噢,原来是可以在其他方法下调用呢,实际上就是设置参数的基本方法,牛哦。
应该在其他方法下也可以修改这些参数的。
九、模式说明
金字塔中的Python策略分为三类:Python策略、Python引用、Python模块
Python策略:Python运行策略(支持paper_trading,backtest)
Python引用:编写可用于PEL调用Python的模块(支持pel_call,仅此模式支持pel_history,log_debug_info,settimer,killltimer这四个函数的调用,其他的API函数均不可以)
Python模块:供Python调用的用户模块或供VBA调用的模块
不太懂,反正用第一个就行了。
我看到很多策略范例中都有自己写的函数,自己定义的函数,可是我不会写啊,Python没学完,一直停留在类似于学英语abandon的状态,就很离谱!
不打算又从头学了,因为大概率又是abandon。
就这样一边看一边学吧,学到不会的,什么迭代器,什么什么器之类的再去翻廖雪峰看看算了。
python金字塔函数_Pyramid Python量化学习笔记:API的基本方法,金字塔相关推荐
- python 魔法函数 __add___PythonI/O进阶学习笔记_2.魔法函数
前言: 本文一切观点和测试代码是在python3的基础上. Content: 1.什么是魔法函数,魔法函数__getitem__在python中应用. 2.python的数据模型和数据模型这种设计对p ...
- python自定义函数复制字符串_Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝...
python中的对象和类型 在python中,认为系统中的每一个"东西"都是一个对象,在python中,"对象"有着特殊的意义,python中的对象有: 一个标 ...
- python用函数绘制椭圆_Python学习笔记——opencv绘制椭圆
在Python环境下使用opencv绘制椭圆,需要用到cv2.ellipse() 函数. 下面一段示例程序就是用该函数在黑色背景下,绘制一个圆心在(260,240).长轴170.短轴130.线宽为3的 ...
- Python的dict字典结构操作方法学习笔记
Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...
- 23神经网络 :唐宇迪《python数据分析与机器学习实战》学习笔记
唐宇迪<python数据分析与机器学习实战>学习笔记 23神经网络 1.初识神经网络 百度深度学习研究院的图,当数据规模较小时差异较小,但当数据规模较大时深度学习算法的效率明显增加,目前大 ...
- 《深度学习入门-基于Python的理论与实现》学习笔记1
<深度学习入门-基于Python的理论与实现>学习笔记1 第一章Python入门 Python是一个简单.易读.易记的编程语言,可以用类似于英语的语法进行编写程序,可读性高,且能写出高性能 ...
- map函数的用法python,详解Python map函数及Python map()函数的用法
python map函数 map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list ...
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...
- C++常函数和常对象学习笔记
C++常函数和常对象学习笔记 一.友元的概述 二.友元的语法 三.友元类 3.1 通过传入参数来访问类的私有成员 3.2 通过类内指针来访问类的私有成员 四.类的友元成员函数 五.友元类的注意 一.友 ...
最新文章
- 程序员,是否应该有自己的职业规划?
- BZOJ 3884 上帝与集合的正确用法 (欧拉定理)
- Java GC日志查看和分析
- python remove函数_python中remove函数的用法是什么?
- SLAM 学习与开发经验分享
- React开发(125):ant design学习指南之form中的hasFeedback
- 堆排序不稳定的例子_【译】Python中的堆排序
- 前端开发-认识前端开发-0226
- UI设计中的图标分为哪些类型?
- 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)...
- jBPM Designer 2.4.0.Final版发布
- 数据结构(计算机存储、组织数据方式)
- deprecate(反对) 关于依赖版本低的问题
- Strings Mix
- linux-文件系统
- python 框架 scrapy_python之框架篇(scrapy)
- 160809310袁韬淳
- 腾讯外包抢5元红包被组长要回!格局决定高度。
- 机器学习-sigmoid函数
- java socat_linux – socat两个串口一起