期权量化学习(1)
学习量化个人认为最主要的还是底层策略,但是量化的工具还是比不可少。
学习量化工具,编程知识和平台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
1 2 3 4 | 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
开始事件OnStart(context)
在回测、模拟/实盘策略启动时会触发一次,比其他事件都更早触发。一般会用于初始化一些变量,例如策略使用的账号等。
1 2 3 4 5 6 7 8 9 | #开始时间,用于初始化一些参数 def OnStart(context) : context.myacc = None print ([context.accounts]) #登录交易账号 if context.accounts[ "回测期货" ].Login() : context.myacc = context.accounts[ "回测期货" ] print (context.accounts[ "回测期货" ].IsLogined()) |
context对象,里面包含上下文信息,在各个事件响应函数中会作为参数传入,里面主要包含以下信息。
我们print accounts时,会返回自己的帐号信息
1 | print ([context.accounts]) |
登录帐号—Account.Login, bool型,登录成功True,登录失败返回False
检查登陆—Account.IsLogined,检查账号是否已登录,返回True或False
1 2 | context.accounts[ "回测期货" ].Logout() print (context.accounts[ "回测期货" ].IsLogined()) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)