一、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量化学习笔记】:API基本方法相关推荐

  1. 【金字塔Python量化学习笔记】01课:利用Python导出价格数据

    作为一个交易员,一直都想学Python量化,无奈文科生一个,根本不懂编程,看了vn.py的教程头大了,买了课但一直都学不下去.最近看了看金字塔的Python量化系统,感觉还可以,代码编写没那么难,我P ...

  2. python金字塔函数_Pyramid Python量化学习笔记:API的基本方法,金字塔

    一.init(必须实现) init(context) context对象是全文对象,我也不懂是啥意思,以前学掘金量化也有这个,大概是连接上下文通用的意思吧. 用法是context.xx,整个函数都可以 ...

  3. Python量化学习笔记03——量化投资——以Python为工具 Part01-C03

    这一章主要讲Python的对象类型. 大体的知识点结构图 如下: 赋值 对象,Object,是Python中最基本的概念. 变量 = 某种类型的对象 使用 "=" 进行赋值 创建一 ...

  4. Python量化学习笔记02——量化投资——以Python为工具 Part01-C02

    C002 Python代码的编写与执行 开篇2个示例 1.在控制栏中打印"Hello Python!" print("Hello Python!") 2.写一个 ...

  5. Python学习笔记Task11.魔法方法

    Python学习笔记Task11.魔法方法 魔法方法格式__init__ 1.基本 init(self[,-]) new(cls[,-]) del(self) str(self) repr(self) ...

  6. Python基础学习笔记之(一)

    Python基础学习笔记之(一) zouxy09@qq.com http://blog.csdn.net/zouxy09 前段时间参加微软的windows Azure云计算的一个小培训,其中Pytho ...

  7. python自动化测试学习笔记合集

    python自动化测试学习笔记-1 一.什么是自动化 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.直白的就是为了节省人力.时间或硬件资源,提高测试效率,便引入了通过软件或程序自动化执行 ...

  8. python自动化测试学习笔记合集二

    python自动化测试学习笔记-4内置函数,处理json 函数.全局变量 写代码时注意的几点事项: 1.一般写代码的时候尽量少用或不用全局变量,首先全局变量不安全,大家协作的情况下,代码公用容易被篡改 ...

  9. python自动化测试学习笔记合集三

    上次我们学到了redis的一些操作,下面来实际运用以下. 这里我们先来学习一下什么是cookie和session. 什么是Cookie 其实简单的说就是当用户通过http协议访问一个服务器的时候,这个 ...

最新文章

  1. 巧妙启用Windows 2003的远程桌面
  2. Swift 4官方文档中文版 The Basic(上)
  3. Spark算子总结版
  4. css 让div 的高度和屏幕的高度一样
  5. python mount回调函数_让Python脚本暂停执行的几种方法(小结)
  6. HBase phoenix二级索引
  7. libcurl库的安装和使用
  8. 采购订单单价金额屏蔽
  9. 漫步微积分二十四——定积分引言
  10. Xilinx FIFO IP核使用
  11. HTTPS 互联网世界的安全基础
  12. 除了html 还有什么页面,HTML页面布局有哪些?
  13. 二维点云数据椭圆拟合算法及C++实现
  14. iOS 本地自动打包工具
  15. 无线安全审计工具FruityWifi初体验
  16. GmId设计方法介绍及曲线仿真
  17. Android 学习笔记(5)之RxJava解析1
  18. 【转】如何设置服务器网卡千兆变万兆
  19. ReactOS实践(一) ReactOS 源代码编译以及VMWare下运行
  20. 机智云AIoT开发平台,让物联网产品开发和运营有迹可循

热门文章

  1. 自己写的html编辑器
  2. 文件大小(bit,bytes,KB,MB,GB,TB)换算
  3. 互联网协议的RFC编号
  4. python好用的软件_mac系统中都有什么python开发工具好用?
  5. 杰理之·充电模块电源设计【篇】
  6. ADS129X芯片中文资料(三)——数字功能部分介绍
  7. 知网文件怎么转pdf
  8. torch.backends.cudnn.benchmark=True 的效果和坑
  9. matlab环面,基于Matlab和UG8.0一次包络环面蜗杆建模方法研究
  10. 邻家的百万富翁(二)