程序员的量化交易之路(6)-Esper之处理模型(5)

3 处理模型(Processing Model)

Esper的处理模型是持续的:更新监听器listener和订阅者subscriber,当事件到来时,根据声明对事件流、视图、过滤和输出等。

 

监听器的接口是com.espertech.esper.client.UpdateListener,必须实现update方法,这个函数会在结果到来时触发。

 

3.2 插入流(Insert Stream)

我们来看一个非常简单的EPL语句:

 

Select * from Withdrawal

 

这条语句没有附加任何过滤、视图等条件。这条语句会当Withdrawal或者其子类对象到来时触发。

下面是是一个例子。

图3.1 Output example for a simple statement

 

上面这个简单的例子中只有new events被提交到语句的监听器中,oldevents没有。

 

3.3 插入和删除流

一个长度窗口是让引擎只保留最近的N个事件。下面的语句给Withdrawal事件流一个长度窗口。这条语句用于说明数据窗口,一个事件有进就有出的数据窗口。

 

select * from Withdrawal.win:length(5)

 

下面这幅图就是数据窗口的一个例子:

它保有5个时间,所以当窗口满了后,最先的w1事件就会被删除,做old events送给监听器。

和长度窗口类似的还有事件窗口。

 

3.4 过滤和where语句

过滤器会过滤掉那些不符合条件的事件,这些事件就不会被投递到语句的监听器中。例如:

 

select * fromWithdrawal(amount>=200).win:length(5)

 

任何amount值小于200的Withdrawal对象都不会被投到监听器的回调函数里面。下图是说明。

上述图可以看到,事件还没有进入到窗口就被过滤了。

Where和having语句则不一样,它是在事件进入到窗口之后再过滤。

 

select * from Withdrawal.win:length(5)where amount >= 200

 

3.5 时间窗口(Time Window)

这一节我们说明时间窗口以及时间批处理窗口

3.5.1 时间窗口

时间窗口就是保留特定事件间隔内的事件。

下面是一个示例:

 

select account, avg(amount)

from Withdrawal.win:time(4 sec)

group by account

having amount > 1000

 

下面是一个更为简单的例子:

 

select * from Withdrawal.win:time(4 sec)

 

下面图示是解释其原理:

 

3.5.2 Time Batch 事件批处理

就是每隔设定的时间才会去触发一次监听器。

 

例如如下语句:

 

select * from Withdrawal.win:time_batch(4sec)

 

其运行原理如图:

 

 

时间: 2024-07-31 03:50:39

程序员的量化交易之路(6)-Esper之处理模型(5)的相关文章

程序员的量化交易之路(2)----Esper文档学习之技术概览(1)

转载请注明出处:http://blog.csdn.net/minimicall/ 在接下来的20个工作日中,我将坚持翻译或者略翻译Esper的官方文档. 为什么需要学习Esper,因为我们需要理解复合事件处理 Complex Event Processing (CEP).在量化交易系统中,CEP是必不可少的.它负责处理海量的实时事件. 关于CEP更多知识,大家可以翻阅网络相关资料.我这里集中在学习开源的CEP系统,Esper.. 今天开始第一篇:技术概览. 1. CEP和事件序列分析 Esper

程序员的量化交易之路(1)----规划开篇

其实,一直对量化交易有一定的理解和情节.早在中大读研究生的时候实验室师兄,已经去了中国平安核心投资团队,做高频交易研究的国源师兄的影响,就开始对金融世界产生了浓厚的兴趣.看了丁磊编著的<量化投资--策略与技术>和艾琳.奥尔德里奇的<高频交易>,反复的看,但是都入不了味,现在回过头来想,一个连股都不炒的人怎么可能入味呢.对一些金融的基本概念都不懂. 2013年7月出社会工作后,在10月份确立目标.需要炒股,而且需要一个深入的理解金融的世界.所以确定去考一个证券从业考试,选了证券基础和

程序员的量化交易之路(11)--命令参数解析库JCommonder学习

转载须注明出处:http://blog.csdn.net/minimicall?viewmode=contents,http://cloudtrade.top 在学习量化交易平台的过程中,接触到一个参数解析的库,JCommander.今天把它记录一下. 它的官网为:http://www.jcommander.org/ 1. 概述 Jcommander是一个非常小的框架,用于解析命令行参数. 可以通过注解来描述你的参数选项: import com.beust.jcommander.Paramete

程序员的量化交易之路(13)--Cointrader类图(1)

转载须注明出处:http://blog.csdn.net/minimicall?viewmode=contents, htpp://cloudtrader.top 今天开始正式切入到Cointrader的源码分析学习中,其主页为:https://github.com/timolson/cointrader. 它是基于Esper的一个比特币云交易托管平台.和我想做的事情比较相近.而且虽然现在没什么功能,但代码量相对少,对于学习非常好. 下面是它的一个类图.: 后面我们会根据这个类图一步步的剖析整个

程序员的量化交易之路(38)--Lean之实时事件处理接口IRealTimeHandler和RealTimeEvent6

转载需注明出处:http://blog.csdn.net/minimicall?viewmode=contents,http://cloudtrade.top/ 这节开始我们要开始说明另外一个模块:实时事件处理模块. 这个模块的工作是什么呢.它就是用来设置一些在特定时间需要执行的任务.比如,每天开盘的时候,你可以做一个什么动作,比如每天收盘的时候你也可以做一个动作.当然还有更为广泛的运用. 在Lean中,是开启一个单独的线程来处理这种定时任务的. 实时事件:RealTimeEvent 实时事件处

程序员的量化交易之路(36)--Lean之数据读取SubscriptionDataReader4

转载需注明出处:http://blog.csdn.net/minimicall?viewmode=contents,http://cloudtrade.top 数据读取需要定义一个读者.直接见下面代码: namespace QuantConnect.Lean.Engine.DataFeeds { /******************************************************** * CLASS DEFINITIONS ***********************

程序员的量化交易之路(35)--Lean之DataFeed数据槽3

转载需注明出处:http://blog.csdn.net/minimicall,http://cloudtrade.top/ Lean引擎的模块划分非常的规范.其中DataFeed是数据槽,就是供应数据的模块. 1. IDataFeed 接口 模块的接口为: namespace QuantConnect.Lean.Engine.DataFeeds { /// <summary> /// Datafeed interface for creating custom datafeed source

程序员的量化交易之路(29)--Cointrader之Tick实体(16)

转载需注明出处:http://blog.csdn.net/minimicall,http://cloudtrade.top Tick:什么是Tick,在交易平台中非常常见,其实就 单笔交易时某只证券的基本数据. 我们通过代码来学习吧: package org.cryptocoinpartners.schema; import javax.annotation.Nullable; import javax.persistence.Entity; import javax.persistence.M

程序员的量化交易之路(30)--Cointrader之ConfigUtil(17)

转载须注明出处:http://blog.csdn.net/minimicall?viewmode=contents,http://cloudtrade.top/ 一个完整的系统,必然会涉及到配置文件.配置文件可以是xml.属性文件等形式.大多数而言我们并不需要重写配置读取解析模块,只需要使用开源的即可,这里使用的是apapche.commons.configuration的. 我们这里要说的是Cointrader的ConfigUtil类,它涉及到配置和注解成员之间的赋值等问题. 下面通过代码学习

程序员的量化交易之路(23)--金融概念Margin保证金

转载需要注明出处:http://blog.csdn.net/minimicall?viewmode=contents,http://cloudtrade.top Margin:保证金 英文解释:http://www.investopedia.com/terms/m/margin.asp 我们把它贴上,并加上我个人的翻译.(翻译不好莫怪) DEFINITION OF 'MARGIN'(margin的定义) 1. Borrowed money that is used to purchase sec