学习量化个人认为最主要的还是底层策略,但是量化的工具还是比不可少。
学习量化工具,编程知识和平台API接口又不可避免,而量化平台很多,所以量化平台的API是学习量化的基础。
本文以 PoboAPI 为例进行学习说明,好处是它是免费的。
API文档:https://quant.pobo.net.cn/doc?name=api#api%E6%96%87%E6%A1%A3
注:本API文档中,带★的api可以用参数名=参数值的形式进行调用,不含★的api需要按参数顺序进行调用。
首先自行注册帐号,在此不在赘述。
一个策略正常包括以下四个部分:
头部(引入python库)——>触发事件(登录相应帐号)——>初始化行情——>K线循环与交易(策略底层逻辑)
1、引入常用python库,https://quant.pobo.net.cn/doc?name=api#%E9%99%84%E5%BD%95%E4%B8%80-%E6%94%AF%E6%8C%81%E7%9A%84python%E6%A0%87%E5%87%86%E5%BA%93
from PoboAPI import * import datetime import time import numpy as np
2、触发事件,策略设计应遵循“事件驱动”的开发思路。
当新的“事件”(比如新的价格数据或者账户状态的变化)被推送到策略程序时,程序将调用和这个事件相对应的处理函数来进行相关操作。
这和我们最常使用的顺序式编程略有不同。程序执行各个任务的先后顺序取决于是否监听到了特定事件的发生。
事件驱动型程序在启动后就处在一个循环当中。这个循环就在监听各种事件。
使用事件驱动的设计思想,我们可以通过监听到的各种“消息”和响应函数的各种“指令”将程序的各部件连接起来。
对于事件驱动型程序,我们还可以将其中各个组成部分划分为“元素”和“操作函数”。
常用事件如下:https://quant.pobo.net.cn/doc?name=api#%E8%A7%A6%E5%8F%91%E4%BA%8B%E4%BB%B6
在回测、模拟/实盘策略启动时会触发一次,比其他事件都更早触发。一般会用于初始化一些变量,例如策略使用的账号等。
#开始时间,用于初始化一些参数 def OnStart(context) : context.myacc = None print([context.accounts]) #登录交易账号 if context.accounts["回测期货"].Login() : context.myacc = context.accounts["回测期货"] print(context.accounts["回测期货"].IsLogined())
context对象,里面包含上下文信息,在各个事件响应函数中会作为参数传入,里面主要包含以下信息。
我们print accounts时,会返回自己的帐号信息
print([context.accounts])
登录帐号—Account.Login, bool型,登录成功True,登录失败返回False
检查登陆—Account.IsLogined,检查账号是否已登录,返回True或False
context.accounts["回测期货"].Logout() print(context.accounts["回测期货"].IsLogined())
原文:https://www.cnblogs.com/adam012019/p/14711029.html