当前位置:文档之家› 期货程序化交易——交易开拓者(TradeBlazer)公式详细介

期货程序化交易——交易开拓者(TradeBlazer)公式详细介

期货程序化交易——交易开拓者(TradeBlazer)公式详细介
期货程序化交易——交易开拓者(TradeBlazer)公式详细介

交易开拓者(TradeBlazer)公式详细介绍

概述

本章节内容是TradeBlazer公式的全面参考手册,详细介绍了TradeBlazer公式的结构、语法、特点、使用方法及功能等。

通过阅读该参考手册,您能够了解TradeBlazer公式的基本语法、操作符、表达式及控制语句等,通过手册提供的各种示例程序,掌握各种TradeBlazer公式的编写要领,最终达到能够熟练将自己的思想转化为TradeBlazer公式,并在交易开拓者中应用。

什么是TradeBlazer公式?

TradeBlazer公式是一种专为分析金融数据-时间序列而设计的高级语言,它提供直接、强大的框架将交易思想转化为用户函数、用户字段、技术分析,交易指令等计算机能够识别的代码。

TradeBlazer公式是一门语法简单但是功能强大的语言,它能帮助您创建自己的交易和技术分析工具。通过组合普通的交易指令和简单的语句,TradeBlazer公式使您能够很容易并且直接的用简单语句表达自己的交易规则和行为。

交易开拓者能够读取您开发的TradeBlazer公式,在历史价格数据基础上进行评估,并能自动执行特定的交易动作,将您的交易思想转化为实际的交易操作。

TradeBlazer公式能做什么?

通过TradeBlazer公式,您能够创建自己的交易指令、技术指标、K线型态、特征走势、用户函数以及用户字段。您也可以拷贝,修改并使用系统内置几百个函数、字段、技术分析和交易指令。

TradeBlazer公式包含的公式类型如下:

?用户函数:用户函数是能够通过函数名称进行引用的指令集,它执行一系列操作并返回一个值。

您可以在其他任何公式中使用用户函数进行计算;

?用户字段:用户字段是TradeBlazer公式为交易开拓者报价类窗体提供的一项数据输出公式,通过用户字段执行一系列语言指令,给报价窗体返回一个特定的显示值;

?技术指标:技术指标是基于基础数据,通过一系列的数学运算,在每个Bar返回相应的结果值

的一类公式,这些值在图表模块中输出为线条、柱状图、点等表现形式;

?K线型态:K线型态是类似于技术指标的一类公式,它主要着重于反映一段K线的特定型态,并

通过不同的技术指标的方式输出到图表;

?特征走势:特征走势是类似于技术指标的一类公式,它主要着重于反映整个价格曲线的趋势、变化特征,并通过特定的表达方式输出到图表;

?交易指令:交易指令是包含买、卖、平仓,头寸,仓位控制的并执行交易指令的一类公式,它

主要帮助您将您的交易思想转化为计算机的操作。

通过调用TradeBlazer公式,您可以在交易开拓者中进行技术分析、交易策略优化测试、公式报警、自动交易等操作。

各类数据

Bar数据

在介绍Bar数据之前,首先,我们需要讨论一下TradeBlazer公式的计算方法,针对上面介绍的各种公式类型,包含用户函数,技术分析,交易指令等,在公式进行计算时,都是建立在基本数据源(Bar数据)之上,我们这里所谓的Bar数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间。期货等品种还有持仓量等数据。

所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar 数据。

以下列出所有的Bar数据系统函数:

计算方法

TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。如下图箭头所示,公式执行从上至下,Bar从左到右执行。

例如,现在有如下语句需要执行,Bar数据如下表所示:

Value1 = Close - Open;

CurrentBar Date Time Open High Low Close Vol Value1 02005/04/0415:002970297929512974184

12005/04/0515:002960296029462960140

22005/04/0615:0029512980295129633012

32005/04/0715:003048304829682995120-57

42005/04/0815:002985298729852987102

...........................

如上表所示,从CurrentBar = 0 开始,依次计算每个Bar进行计算;

在公式的编写中,经常会遇到当前Bar的数据和上一个Bar,上N个Bar数据进行比较,计算的情况,针对这种情况,TradeBlazer公式提供了一种处理机制:回溯。即对数据的向前引用,比如,获取上一个Bar 的收盘价:Close[1],获取10天前的成交量:Vol[10]。以下提供一个简单的例子来说明如何进行回溯处理。

假定有如下语句:

以上公式执行一个简单的操作,当前Bar的收盘价大于上一个Bar的收盘价,即执行按照当前收盘价买入1手的动作。根据上表的数据,公式将在CurrentBar为2和3的时候调用Buy指令。

如果您足够仔细的话,您会发现:对于上面的一段公式的执行,有一个小小的问题,当第一次计算公式时,即CurrentBar = 0时,这个时候需要获取上一个Bar的数据,但是当前Bar已经是第一个Bar,这个时候就存在着问题,如何来获取此时的Close[1]呢,TradeBlazer公式将默认Close[1]为无效值,即系统函数中的InvalidNumeric,Close > Close[1]的表达式计算结果是一个Bool值,其结果也是一个无效值,对于Bool 值,我们将False作为其无效值。因此,第一个Bar计算时,Buy指令不会被执行。

对于技术分析这类公式来说,假定Bar数据的总数共有100,相同的代码将从CurrentBar = 0到CurrentBar = 99 共执行100遍,分别输出公式中的结果值。

注意:在执行TradeBlazer公式时,可能出现数据不存在的情况,可通过系统函数HistoryDataExist进行判断,如果该函数返回True,即为Bar数据有效。

叠加数据

交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据,针对这样的需求,TradeBlazer公式提供了叠加数据的支持。

假定,我们新建一个超级图表模块,其主数据对应的商品为:cu0503,在此基础上,我们叠加了cu0504和cu0505。此时,根据叠加操作的先后顺序,cu0503为Data0,cu0504为Data1,cu0505为Data2,在TradeBlazer公式中,我们可以通过Data1.Close(),Data2.Vol()类似方法调用叠加Bar数据,叠加Bar数据的函数和Bar数据一样,只是需要在调用的时候加上数据源。

我们也可以使用Data0.Open()来调用Bar数据,默认情况下,可以省略对主数据源的指定,为了方便,一般直接使用Open()来代替Data0.Open()。

行情数据

除了Bar数据之外,TradeBlazer公式还可以支持实时行情数据的调用,行情数据是指当前商品最新的报价数据,该数据和Bar无关,行情数据的回溯没有意义。

行情数据只在最后Bar是有意义的,其他Bar会返回无效值。因此,在调用行情数据函数时,为了提高效率,最好按照以下方法:

行情数据函数都按照以下格式命名Q_XXXXX,比如Q_Close,Q_BidPrice。在调用行情数据的时候,需要判断当前行情数据是否有效,系统提供函数QuoteDataExist来对有效性进行判断。如果行情数据已经准备好,返回True,否则,返回False。

属性数据

除了以上的各项数据之外,TradeBlazer公式还提供一组重要的属性数据,反映了该商品的一些基本信息,比如当前数据周期,买卖盘个数、保证金设置等信息。在所有的Bar上面获取的市场属性数据都是一样的,属性数据的回溯没有意义。

关于属性数据的详细说明参见帮助文件附录。

数据类型

TradeBlazer公式支持有三种基本数据类型:数值型、字符串、布尔型。

为了通过用户函数返回多个值,我们对三种数据类型进行了扩展,增加了引用数据类型。另外,为了对变量,参数进行回溯,我们增加了序列数据类型。因此,我们的数据类型共有九种,如下表所示:

命名规则

公式名称规则:

?不区分大小写;

?不能超过32个英文字符;

?每一类公式不能出现相同的名称;

?公式名称不能出现字母、数字、下划线以外的其他字符;

?公式名称不能和系统保留字,系统函数等重名。

变量,参数规则:

?不区分大小写;

?不能超过32个英文字符;

?每一个公式内部能不能重复命名;

?名称不能出现字母、数字、下划线以外的其他字符;

?名称不能和系统保留字,系统函数等重名;

?不能使用已定义的用户函数名。

注意:建议采取匈牙利命名规则命名变量,匈牙利命名规则是Charles Simonyi 发明的一种给变量取名字的方式。他在变量前加上变量的类型,这样,看看变量的名字就知道变量的类型了。

语句

一个语句代表一个完全的指示或描述,语句中包含有保留字、操作符、符号。并且语句总是以";"作为语句结束的标志。

以下为语句的一些例子:

1.This is one statement;

2.This is another statement;

3.This is

one statement;

4.This is

another

statement

;

5.This is yet another;

6.This is one statement;This is another;

赋值语句

赋值语句用于给公式变量指定一个具体的值的语句,赋值语句使用赋值操作符(=)进行处理。

以下为赋值语句的一些例子:

变量在赋值的时候忽略其扩展数据类型,只考虑其基本数据类型,即NumericSeries,NumericRef,Numeric 之间可以相互赋值。此时序列数据类型只是对当前Bar的值进行操作。

保留字

保留字都有自己独特的意思或用途,主要是一些功能关键字,系统函数,以及数据类型等。

下面分类列举出系统主要的保留字。

数据类型

包含3种基本类型,共9种数据类型能够,详细说明参见数据类型。

运算符

功能关键字

数据源

数据输出

操作符

操作符是一些象征具体操作运算行为的符号,例如操作符"+"代表对两个数求和,这些操作符适用于数值型、字符串、布尔型的数据。

TradeBlazer公式为您提供了多种操作运算符,便于您对保留字的操作和生成更复杂的数据类型、逻辑型、字符串类型的值。下面有四种不同类型的操作符可用于逻辑表达式、数值表达式、字符串表达式中。

数学操作符

数值型表达式的操作符有几种,如下表所示:

这些数学操作按其特定的优先级来进行计算,"^"(求幂)最先,其次是"*"(乘法),"/"(除法)和"%"(求模),加和减最后,如果有多个乘法/除发(或者是加法或减法),那么计算顺序是从左边到右边。

例如,在数值型的表达式中:

它首先计算的是range(此处range是指High-Low)与2的积,接着计算与2的商(除法),最后求2*range/2与最高价(High)的和。

如果要找到一个Bar的中间位置,可以尝试写成如下语句:

然而在上面语句中,首先运算的是以最低价(Low)除于2,然后再与最高价求和。最后的值不是我们所需要的,并且和原来预想中的值是不一致的。

为了处理上述这样的情况,我们在运算符号中引入了括号"()",可以用括号来操作和控制运算的规则,先计算括号里面的表达式,不考虑外面的操作符和常量。因此,获取某一个Bar上的中间位置(MidPoint)的语句可如下:

该语句就是返回最高价和最低价之和的1/2,即Bar的中间位置。

对于除法,有一些特别的提示,众所周知,0不能作为除数,否则将会导致系统溢出。TradeBlazer公式在对脚本进行执行时,碰到除法符号时,都需要对除数进行是否为0的检查,以保证脚本能够正确的执行下去,当遇到除数为0的情况下,我们将会返回一个无效值。

上面描述到求中间位置(MidPoint)的表达式,其实我们可以用另外一种形式来代替它:

对于A/B这样的一个表达式,因为不知道B是否为0,所以总是需要对其进行有效性验证,计算的速度会受到一定的影响,因此,对于除法表达式,我们强烈建议使用时尽可能转换为乘法处理,即提高执行速度,也可以避免未知的错误发生。

字符串操作符

"+"是唯一的可以应用于控制字符串表达式的数学操作符,它可用于连接两个文本字符串为一个字符串。如下:

上面字符串表达式的输出值,应该是"这是一个字符串表达式,返回值为数值型。"和"This is expression A and this is expression B."。

关系操作符

逻辑运算符使用下列标准的比较符号,大于、小于、等于、小于等于、大于等于和不等于。

下列的关系操作符号都可以应用到逻辑表达式中。

应用上述的关系运算符,我们可以对两个数值或字符串表达式进行对比,在下列的语句中,我们就是找到一个Bar,它的前一个Bar收盘价要高于前一个Bar最高价:

在字符串的比较运算中,首先是把每一个字符用它的ASCII来代替,其次对两个表达式中的字符逐一比较其ASCII值,从第一个开始,直到两个表达式中的所有字符都已经被计算完为止。例如:

在这个例子中,我们对把第一个字符串表达式中的字符和第二个表达式中的字符进行比较运算,字母"a"的ASCII值是小于"z"的,同样其它的字符也是一样,所有该表达式的值为True。

逻辑操作符

逻辑运算符常常用于比较两个True/False的表达式,共有三个逻辑操作符:AND(&&),OR(||),NOT(!)。下表列出AND逻辑操作符的应用情况:

下表列出OR逻辑操作符的应用情况:

下表列出NOT逻辑操作符的应用情况:

在上面的表格中,应用OR可以增加表达式的值为True的可能性,仅仅只要两个表达式中,只要有一个的值为True,那么整个表达式的值就为True。

其实在应用的过程中,还包含有一些复杂的组合运算。为了获得一个的关键反转Bar,可以使用如下的表达式:

在上面的表达式中,我们使用了AND逻辑运算符,因而要表达式的值为True,那么当前Bar的最低价一定要小于前一个Bar的最低价,而且当前Bar的收盘价还必须高于前一个Bar的最高价。只有当这两个条件都满足的时候,表达式的值才为True。

再看下面一个例子:

在上面的表达式中,如果要其值为True,那么只需要任意一个条件满足即值为True,那么表达式的值便为True,如果当前bar的最高价大于10,或者成交量大于5000,那么表达式的值便为True。而如果需要表达式的值为False时,则两个条件都必须为False,表达式的值才为False。

逻辑操作符的优先级低于数学操作符和关系操作符。逻辑操作符也遵循先括号的原则,如果没有括号,那么其运算顺序也是从左边到右边。

对于逻辑表达式中不同条件的先后顺序,可能会产生不同的运算逻辑,执行的效率也会有所不同。

以Con1 AND Con2这样的表达式举例,系统从左到右进行逻辑判断,当Con1为True时,需要继续判断Con2是否为True,只有当Con1,Con2都为True时,整个表达式才为True。但是只要当Con1为False 时,就不再需要判断Con2的值,而是直接返回False。

因此,以下的两个表达式在执行效率方面是有差异的:

第一条语句的执行速度大部分情况下都比第二条要快。

对于Con1 OR Con2表达式,情况也比较类似,当Con1为False时,需要继续判断Con2是否为False,只有当Con1,Con2都为False时,整个表达式才为False。但是只要当Con1为True时,就不再需要判断Con2的值,而是直接返回True。

以下两条语句的执行效率也是不一样的:

通过上述的说明,我们应该知道,逻辑表达式的组合时,应该尽可能的把容易判别整个表达式逻辑的条件放在前面,以减少整个表达式的计算时间。

表达式

表达式是操作符和保留字的有机组合,任意表达式都代表了一个值,表达式的值只能是以下的三种类型:?数值型: 即Numeric,NumericRef,NumericSeries三种数据类型。

?布尔型: 即Bool,BoolRef,BoolSeries三种数据类型。

?字符串: 即String,StringRef,StringSeries三种数据类型。

当您使用TradeBlazer公式的过程中,便可应用三种广泛数据类型的表达式,来完成您自己的程序。

数值型的表达式可以是一个数字,当然,他们也可以是一个数值型的保留字,例如:保留字"Close"。或者是通过运算符号组合的一个计算表达式,该表达式的结果是数值型。下文中的例子都是数值型的表达式。

布尔型的表达式能够返回一个值True/False,或者说它可以对表达式的值进行评估,然后返回其值,要么为True,要么为False。逻辑表达式永远要涉及到比较运算,下面我们有一些逻辑表达式,它也就是对一个表达式的值是True还是False进行判断。

字符串的表达式可以是单个字符串,也可以字符串的组合,或者返回值为字符串的系统函数,如下,就是一个字符串的表达式:

使用注释

注释可以标注解释语句,公式在编译执行时会忽略注释语句。

注释分为单行注释和多行注释。

单行注释

在单行中对需要注释部分之前通过添加//,使//之后的语句形成注释。以下是注释的例子:

多行注释

在需要注释的部分之前添加/*,之后添加*/,形成注释。以下是注释的例子:

系统函数

TradeBlazer公式的系统函数,可根据使用范围在相应类型的公式中直接调用,计算后返回结果值。

目前的系统函数支持四种数据类型,除了TradeBlazer公式中定义的三种基本数据类型:Bool,Numeric,String之外,新加入Long(长整型)类型,使系统函数能够更加快捷的进行计算,TradeBlazer公式在处理的时候自动将Numeric和Long进行转化,用户无需进行特别的处理。

TradeBlazer公式现有的系统函数主要分为:数据函数、时间函数、数学函数、其它函数、交易函数、属性函数、账户函数、颜色函数、字符串函数等。每个系统函数都有自己的适用范围和使用规范,详细说明参见附录。

标点符号

通常,在写语句的过程中,会用到很多的标点符号。可用来定义参数、定义变量、创建规则的优先权。

例如,TradeBlazer公式用";"来标注一个语句结束。标点符号也是一个保留字,因为符号也是语言结构的一部分,在下表中列出了TradeBlazer公式中所用到的标点符号,和该标点符号所表达的意思:

控制语句

TradeBlazer公式支持两大类的控制语句:条件语句和循环语句。

条件语句

条件语句包括以下四类表达方式:

If

If语句是一个条件语句,当特定的条件满足后执行一部分操作。

语法如下:

Condition是一个逻辑表达式,当Condi t ion为True的时候,TradeBlazer公式语句将会被执行,Condition 可以是多个条件表达式的逻辑组合,Condition必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,您可以计算图表中上升缺口(当前Bar的开盘价高于上一个Bar的最高价)出现了多少次,只要在图表中使用If语句,当找到一个满足条件的Bar时,即条件为真时,变量加1,脚本如下:

在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If语句,当条件

满足的时候,在满足条件的Bar上面进行标记。例如,下面的语句就是特征走势的例子:

If语句在不是用括号的情况,只执行下面的第一条语句,如下的语句,Alert不会只在条件为True时执行,而是每次都执行。

要想Alert只在条件为True时执行,您需要按照下面的格式编写:

If-Else

If-Else语句是对指定条件进行判断,如果条件满足执行If后的语句。否则执行Else后面的语句。

语法如下:

Condition是一个逻辑表达式,当Condi t ion为True的时候,TradeBlazer公式语句1将会被执行;Condition 为False时,TradeBlazer公式语句2将会被执行。Condition可以是多个条件表达式的逻辑组合,Condition 必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,比较当前Bar和上一个Bar的收盘价,如果Close > Close[1],Value1 = Value1 + Vol;否则Value1 = Value1 - Vol,脚本如下:

If-Else-If

If-Else-If是在If-Else的基础上进行扩展,支持条件的多重分支。

语法如下:

Condition1是一个逻辑表达式,当Condition1为True的时候,TradeBlazer公式语句1将会被执行,Condition1为False时,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句2将会被执行。Condition2为False时,TradeBlazer公式语句3将会被执行。Condition1,Condi t ion2可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

If-Else-If的语句可以根据需要一直扩展,在最后的Else之后再加If(Condition)和新的执行代码即可。当然您也可以省略最后的Else分支,语法如下:

If-Else的嵌套

If-Else的嵌套是在If-Else的执行语句中包含新的条件语句,即一个条件被包含在另一个条件中。

语法如下:

Condition1是一个逻辑表达式,当Condition1为True的时候,将会继续判断Condition2的值,当Condi t ion2为True时,TradeBlazer公式语句1将会被执行。Condition2为False时,TradeBlazer公式语句2将会被执行。当Condition1为False的时候,将会继续判断Condition3的值,当Condition3为True时,TradeBlazer 公式语句3将会被执行。Condi t ion3为False时,TradeBlazer公式语句4将会被执行。Condition1,Condi t ion2,Condition3可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,在一个交易指令中,条件设置如下:当前行情上涨的时候,如果收盘价高于开盘价时,则产生一个以收盘价买入1张合约;否则产生一个以开盘价买入1张合约。当前行情没有上涨的时候,如果收盘价高于开盘价,则产生一个以收盘价卖出1张合约;否则产生一个以开盘价卖出1张合约。脚本如下:

循环语句

循环语句包括两种表达方式:For和While。

For

For语句是一个循环语句,重复执行某项操作,直到循环结束。

语法如下:

循环变量为在之前已经定义的一个数值型变量,For循环的执行是从循环变量从初始值到结束值,按照步长为1递增,依次执行TradeBlazer公式语句。结束值必须大于或等于初始值才有意义,初始值和结束值可以使用浮点数,但是在执行过程中会被直接取整。只计算其整数部分。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

第一次执行时,首先将循环变量赋值为初始值,然后判断循环变量是否小于等于结束值,如果满足条件,则执行TradeBlazer公式语句,同时循环变量加1。接着重新判断循环变量是否小于等于结束值,一直到条件为False,退出循环。

例如,以下的用户计算Price最近Length周期的和。

如果希望For语句从大到小进行循环,可以使用以下的语法:

For-DownTo让循环变量从结束值每次递减1直到等于结束值,依次调用TradeBlazer公式语句执行,初始值必须大于或等于结束值才有意义。

For语句是比较常用的一种循环控制语句,它应用于知道循环次数的地方,很多内建用户函数中都使用For 语句来完成相应的功能,比如Summation,Highest,Lowest,LinearReg等。

While

While语句在条件为真的时候重复执行某一项操作。即,只要条件表达式的值为真(True)时,就重复执行某个动作。直到行情信息改变以致条件为假(False)时,循环才结束。

语法如下:

Condition是一个逻辑表达式,当Condi t ion为True的时候,TradeBlazer公式语句将会被循环执行,Condition 可以是多个条件表达式的逻辑组合,Condition必须用()括起来。

TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。

例如,以下的公式用来计算要产生大于100000成交量需要最近Bar的个数:

交易开拓者函数一览表文华对照)

交易开拓者函数一览表(文华对照) 交易开拓者文华 数学函数 绝对值Abs ABS(X)反余弦值Acos ACOS(X)反双曲余弦值Acosh 反正弦值Asin ASIN(X)反双曲正弦值Asinh 反正切值Atan ATAN(X)给定的X及Y坐标值的反正切值Atan2 反双曲正切值Atanh 沿绝对值增大方向按基数舍入Ceiling

从给定数目的对象集合中提取若干对 Combin 象的组合数 余弦值Cos COS(X)双曲余弦值Cosh 余切值Ctan 沿绝对值增大方向取整后最接近的偶 Even 数 e的N次幂Exp EXP(X)数的阶乘Fact 沿绝对值减少的方向去尾舍入Floor 实数舍入后的小数值FracPart 实数舍入后的整数值IntPart 自然对数Ln LN(X)

对数Log LOG(X) 余数Mod MOD(A,B)负绝对值Neq 指定数值舍入后的奇数Odd 返回PI Pi 给定数字的乘幂Power POW(A,B) 随机数Rand 按指定位数舍入Round 靠近零值,舍入数字RoundDown 远离零值,舍入数字RoundUp 数字的符号Sign SGN(X) 正弦值Sin

双曲正弦值Sinh SIN(X) 平方Sqr SQUARE(X)正平方根Sqrt SQRT(X) 正切值Tan TAN(X) 双曲正切值Tanh 取整Trunc INTPART(X)字符串函数 测试是否相同Exact 返回字符串中的字符数Len 大写转小写Lower 数字转化为字符串Text 取出文本两边的空格Trim

小写转大写Upper 文字转化为数字Value 颜色函数 黑色Black COLORBLACK 蓝色Blue COLORBLUE 青色Cyan COLORCYAN 茶色DarkBrown 深青色DarkCyan 深灰色DarkGray 深绿色DarkGreen 深褐色DarkMagenta 深红色DarkRed

期货套利的方法和结算

期货套利的方法和结算 期货市场的套利主要有三种形式,即跨交割月份套利、跨市场套利及跨商品套利。 ①、跨交割月份套利(跨月套利) 投机者在同一市场利用同一种商品不同交割期之间的价格差距的变化,买进某一交割月份期货合约的同时,卖出另一交割月份的同类期货合约以谋取利润的活动。其实质,是利用同一商品期货合约的不同交割月份之间的差价的相对变动来获利。这是最为常用的一种套利形式。比如:如果你注意到 5 月份的大豆和7 月份的大豆价格差异超出正常的交割、储存费,你应买入 5 月份的大豆合约而卖出7 月份的大豆合约。过后,当7 月份大豆合约与 5 月份大豆合约更接近而缩小了两个合约的价格差时,你就能从价格差的变动中获得一笔收益。跨月套利与商品绝对价格无关,而仅与不同交割期之间价差变化趋势有关。 具体而言,这种套利又可细分为三种:牛市套利,熊市套利及蝶式套利。 ②、跨市场套利(跨市套利) 投机者利用同一商品在不同交易所的期货价格的不同,在两个交易所同时买进和卖出期货合约以谋取利润的活动。 当同一种商品在两个交易所中的价格差额超出了将商品从一个交易所的交割仓库运送到另一交易所的交割仓库的费用时,可以预计,它们的价格将会缩小并在未来某一时期体现真正的跨市场交割成本。比如说小麦的销售价格,如果芝加哥交易所比堪萨斯城交易所高出许多而超过了运输费用和交割成本,那么就会有现货商买入堪萨斯城交易所的小麦并用船运送到芝加哥交易所去交割。 ③、跨商品套利 所谓跨商品套利,是指利用两种不同的、但是相互关联的商品之间的期货价格的差异进行套利,即买进(卖出)某一交割月份某一商品的期货合约,而同时卖出(买入)另一种相同交割月份、另一关联商品的期货合约。 期货结算方法 一、结算的概念与制度 (一)结算的概念 结算是指根据交易结果和交易所有关规定对会员交易保证金、盈亏、手续费、交割货款和其他有关款项进行的计算、划拨。结算包括交易所对会员的结算和期货经纪公司会员对其客户的结算,其计算结果将被计入客户的保证金账户。

交易开拓者止损止盈

TB源码: Params Numeric Length1(10); // 短均线周期 Numeric Length2(20); // 长均线周期 Numeric InitialStop(20); // 初始止损比例*1000 Numeric BreakEvenStop(30); // 保本止损比例*1000 Numeric TrailingStop(50); // 追踪止损比例*1000 Numeric Lots(1); // 头寸大小 Vars NumericSeries MA1; NumericSeries MA2; BoolSeries condBuy(false); // 做多条件 BoolSeries condSell(false); // 做空条件 Numeric MinPoint; Numeric MyPrice; NumericSeries LowerAfterEntry; // 空头盈利峰值价 BoolSeries bShortStoped(false); // 当前均线空头趋势下是否有过一次进场Numeric StopLine(0); Begin // 把上一根bar的出场状况传递过来 if (BarStatus > 0) { bShortStoped = bShortStoped[1]; } Commentary("bShortStoped="+IIFString(bShortStoped,"true","false")); // 传递或比较盈利峰值价 If(BarsSinceEntry >= 1) { LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]); } Else { LowerAfterEntry = LowerAfterEntry[1]; } Commentary("LowerAfterEntry="+Text(LowerAfterEntry)); // 过滤集合竞价 If((BarType==1 or BarType==2) && date!=date[1] && high==low) return; If(BarType==0 && CurrentTime<=0.09 && high==low) return; MinPoint = MinMove * PriceScale; MA1 = AverageFC(Close,Length1); MA2 = AverageFC(Close,Length2); PlotNumeric("MA1",MA1); PlotNumeric("MA2",MA2);

期货从业资格考试计算题重点公式

期货从业资格考试计算题重点公式总结 1.有关期转现的计算(期转现与到期交割的盈亏比较): 首先,期转现通过“平仓价”(一般题目会告知双方的“建仓价”)在期货市场对冲平仓。此过程中,买方及卖方(交易可不是在这二者之间进行的哦!)会产生一定的盈亏。 第二步,双方以“交收价”进行现货市场内的现货交易。 则最终,买方的(实际)购入价=交收价-期货市场盈亏---------------在期转现方式下; 卖方的(实际)销售价=交收价+期货市场盈亏--------------在期转现方式下; 另外,在到期交割中,卖方还存在一个“交割和利息等费用”的计算,即,对于卖方来说,如果“到期交割”,那么他的销售成本为:实际销售成本=建仓价-交割成本------------------在到期交割方式下; 而买方则不存在交割成本。 2.有关期货买卖盈亏及持仓盈亏的计算: 细心一些,分清当日盈亏与当日开仓或当日持仓盈亏的关系: 当日盈亏=平仓盈亏+持仓盈亏=平历史仓盈亏+平当日仓盈亏+历史持仓盈亏+当日开仓持仓盈亏 3.有关基差交易的计算: A弄清楚基差交易的定义; B买方叫价方式一般与卖期保值配合;卖方叫价方式一般与买期保值配合; C最终的盈亏计算可用基差方式表示、演算。 4.将来值、现值的计算:(金融期货一章的内容):将来值=现值*(1+年利率*年数) A. 一般题目中会告知票面金额与票面利率,则以这两个条件即可计算出: 将来值=票面金额*(1+票面利率)----假设为1年期 B. 因短期凭证一般为3个月期,计算中会涉及到1年的利率与3个月(1/4年)的利率的折算 5.中长期国债的现值计算:针对5、10、30年国债,以复利计算 P=(MR/2)*[1-.............................(书上有公式,自己拿手抄写吧,实在是不好打啊,偷个懒); M为票面金额,R为票面利率(半年支付一次),市场半年利率为r,预留计息期为n次。 6.转换因子的计算:针对30年期国债 合约交割价为X,(即标准交割品,可理解为它的转换因子为1),用于合约交割的国债的转换因子为Y,则买方需要支付的金额=X乘以Y(很恶劣的表达式)。个人感觉转换因子的概念有点像实物交割中的升贴水概念。 7.短期国债的报价与成交价的关系:成交价=面值*[1-(100-报价)/4] 8.关于β系数: A. 一个股票组合的β系数,表明该组合的涨跌是指数涨跌的β倍;即β=股票涨跌幅/股指涨跌幅 B. 股票组合的价值与指数合约的价值间的关系:β=股指合约总价值/股票组合总价值=期货总值/现货总值 9.远期合约合理价格的计算:针对股票组合与指数完全对应(书上例题) 远期合理价格=现值+净持有成本=现值+期间内利息收入-期间内收取红利的本利和; 如果计算合理价格的对应指数点数,可通过比例来计算:现值/对应点数=远期合理价格/远期对应点数。 10.无套利区间的计算:其中包含期货理论价格的计算

赢智程序化交易系统使用说明书 2.

赢智程序化交易系统使用说明书 目录 目录 (2 一、登录软件 (7 (一如何登录软件 (7 (二如何选择服务器 (9 (三如何保存交易密码 (9 (四如何使用动态备份 (10 (五如何矫正本机时间与服务器时间一致 (10 二、常用窗口基本操作 (11 (一、自选报价列表 (11 (二、分时走势图 (15 (三、K线图窗口 (19 (四当日分钟K线 (34 (五、OX图 (34 (六、价量运行趋势图 (37 (七、三线反转图 (38 (八、TICK闪电图 (40 (九、盘口报价 (40

(十、逐笔成交表 (42 (十一、大单成交表 (43 (十二、分笔统计 (44 (十三、分价统计 (45 (十四、分笔+分价 (46 (十五、新闻 (46 三、行情模块使用案例 (53 (一如何设置起始页面 (53 (二如何调入行情报价页面 (53 (三如何创建页面 (58 (四如何保存页面 (60 (五如何调出页面 (61 (六如何还原修改后的页面 (62 (七如何设置书签并将个人重要页面设置在书签上,方便调用 (64 (八如何修改报价窗口回撤在分时——K线图循环切换 (67 (九如何保存扩展分析模板 (67 (十如何自定义快捷访问工具条 (69 (十一鼠标滚轴操作如何切换合约 (70 (十二如何区分系统页面和普通页面 (71

(十三如何利用我的指标区保存多组指标参数 (71 (十四如何进行指标设置周期化 (73 (十五如何设置坐标显示方式 (73 (十六如何在数据出现问题时重新申请数据 (74 (十七如何申请更多数据及设置K线显示密度 (75 (十八如何设置报价列表排序 (77 (十九如何设置盘口报价买卖横竖排列 (77 (二十如何设定报价红绿定义 (78 (二十一如何设定成交明细红绿定义 (78 (二十二如何显示小报价框 (79 (二十三如何显示持仓成本线 (79 (二十四如何调出信息灯塔 (80 (二十五如何显示技术分析图上的十字光标 (81 (二十六如何设置今天昨天分割线 (81 (二十七如何设置K线形状 (82 (二十八如何调整报价页面的字体及字体大小 (82 (二十九如何进行颜色字体风格的设置 (83 (三十如何进行合约代码、指令快捷键、分析周期快捷键的设置 (84 (三十一如何进行涨跌停定义的设置 (85

期货及衍生品公式总结

1、 当日盈亏 a) 商品期货 当日盈亏=∑(卖出价-当日结算价)×卖出量+∑(当日结算价-买入价)×买入量+(上日结算价-当日结算价)×(上日卖出持仓量-当日买入持仓量) b) 金融期货 当日盈亏=∑(卖出价-当日结算价)×合约乘数×卖出量+∑(当日结算价-买入价)×合约乘数×买入量+(上日结算价-当日结算价)×(上日卖出持仓量-当日买入持仓量)×合约乘数 2、 结算准备金余额 当日结算准备金余额=上日结算准备金余额+上日交易保证金余额-当日交易保证金余额+当日盈亏+入金-出金-交易手续费 3、 国债期货理论价格 国债期货理论价格=现货价格+持有成本=现货价格+资金占用成本-利息收入 4、 股指期货理论价格 F(t ,T)=S(t)+S(t)(R-D )×(T-t )/365 =S(t)[1+R-D )×(T-t )/365] F(t ,T)为t 时买入的T 时交割的股指期货理论价格 S(t)为t 时股票指数 R 为资金市场年利率 D 为股指年股息率 5、 股指期货最优套期保值比率 买卖套期合约数量=?× 现货总价值期货指数点×每点乘数 6、 逐日盯市结算公式 (1) 当日结存=上日结存+当日盈亏+入金-出金-手续费 (2) 客户权益=当日结存 (3) 商品期货的保证金占用=∑(当日结算价×交易单位×持仓手数×公司的保证金比 例) (4) 股指期货的保证金占用=∑(当日结算价×合约乘数×交易单位×持仓手数×公司 的保证金比例) (5) 风险度= 保证金占用客户权益 ×100% 7、 现货多头、空头定义 (1)现货多头(2个):持有商品或资产、已按固定价格约定在未来购买某商品或资产 (2)现货空头(1个):已按固定价格约定在未来出售某商品或资产 8、 基差=现货价格-期货价格

交易开拓者(TB)编程初级篇

交易开拓者(TB)期货程序化交易编程 本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。 TB里面代码执行 1,代码从第一根K线开始执行,一直到最后一根K线; 2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行; 我们就写个输出每日的收盘价的例子; 打开TB,在左边的TB公式里面,点击新建技术指标, 然后在出来的公式编辑器里面输入 Begin End 注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间 我们再在Begin和End之间输入一些代码,完整的就是: Begin FileAppend("c:\\",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"); FileAppend("C:\\",Text(Close)); End 我们再说说这两行代码是什么意思 File就是文件,Append就是添加,现在明白了吧 FileAppend就是添加一个文件,文件名是什么呢就是你后面写的,这个文件的路径在哪里呢就是c:\\里面的C盘,且在这个文件里面添加一行东西, 这行东西的内容就是你后面所写的Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于" 当然,如果这个文件已经存在,他就不会添加文件了,仅仅在这个文件的后面添加一行上面你写的内容 好了,再看看Text,Text的意思就是把那些不是字符串的东西如数字啊,等变成字符串.而Year,Month,Day就代表了正在执行你写的代码的那一根K线的年,月,日,年月日是数字,我们当然要用Text把它搞成字符串 CloseK线的收盘价啊,如果代码执行到最后的那根K线 我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,就OK了 我们在回到K线图里面,TB把K线图叫做超级图表 在K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超级图表里面仅仅显示5条K线,点确定后,你就看到在K线图里面只显示了5跟K线, 当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的 我们上面说了,我们这个例子仅仅是把每日的收盘价写到文件里面去啊,那么我们找一找文件在什么地方咯FileAppend("c:\\",很明显,文件是在c盘的,文件的名字是 好了,我们到c盘找到文件,双击打开,我们就会看到下面的内容: 2007年9月24日的收盘价等于 67280 2007年9月25日的收盘价等于 67800 2007年9月26日的收盘价等于 67160 2007年9月27日的收盘价等于 67300 2007年9月28日的收盘价等于 68020

商品期货交易策略的数学模型.

商品期货交易策略的数学模型 摘要 商品期货交易在当前中国的经济体系中占据着很重要的作用,投资者都希望从大量的期货交易中获取一定的利润,但是期货交易作为一种投机行为,交易者置身其中往往要承担很大的风险,本文研究了商品期货交易中的一些问题,给出了获取较大收益的交易方式。 问题一:我们首先利用SPSS中的模型预测方法给出了橡胶期货交易各项指标在9月3号这天随时间推移的波动图,又给出了利用Matlab软件作出的成交价与各个指标的相关性图表。分析所作的图得出的结论是商品期货的成交价与B1价、S1价具有显著相关性,与成交量、持仓增减、B1量、S1量也具有相关性而与总量不具有相关性。最后利用SPSS软件双变量相关分析进一步确认其相关性指标。为了对橡胶期货价格的这些变化特征进行分类,我们作出了成交价19天的波动图,并以持仓量为例分析其他指标的变化特征,将七项指标分成了上涨和周期波动两类。 问题二:本文采用了回归分析的方法建立价格波动预测模型。首先介绍回归分析的基本原理与内容,叙述了回归分析中用到的最小二乘法,之后在第一问的基础上建立回归分析的数学模型,得出函数关系,算得价格的波动趋势并与实际数据对比,再分析模型中的残差数据,验证所建立的回归模型合理性。 问题三:为建立收益最大化的交易模型,本题我们分析价格的波动数据后,借助移动平均线的理论方法,再分析价格的“高位”与“低位”,得出买点卖点。建立交易模型后,利用MATLAB 软件分析出合适的交易时机,并画出图形,利用所给数据根据建立的模型计算收益。 关键词:期货交易波动 SPSS软件回归分析

我国商品期货交易的品种迅速增加,吸引了大量交易者的参与,如何从商品期货的交易中获取相对稳定的收益成为交易者非常关注的问题。商品期货交易实行T+0的交易规则,所开的“多单或空单”可以马上平仓,从而完成一次交易,这样就吸引了大量的投机资金进行商品期货的日内高频交易。某种商品价格在低位时开“多单”,当价格高于开“多单”的价格时平仓,或者,价格在高位时开“空单”,当价格低于开“空单”的价格时平仓,差价部分扣除手续费后就是交易者的盈利;反之则是亏损。 现在题中给出了2012年9月相关商品期货交易的成交数据,让你以所给数据为基础,建立数学模型解决下面的问题: 1、通过数据分析,寻找价格的波动和哪些指标(仅限于表中列出的数据,如持仓量、成交 量等指标)有关,并对橡胶期货价格的波动方式进行简单的分类。(提示:这里的波动方式是指在某一时间段内(简称周期)价格的涨跌、持仓量的增减、成交量的增减等指标的变化特征。周期的选取可以短到几秒钟,长到几十分钟甚至是以天为单位,具体时长通过数据分析确定,较优的周期应该是有利于交易者获取最大的盈利)。 2、在实时交易时,交易者往往是根据交易所提供的实时数据,对价格的后期走势做出预测 来决定是开“多单”还是开“空单”。请在第1问的基础上建立合理的橡胶价格波动预测模型; 3、橡胶期货交易的手续费是20元/手,保证金为交易额的10%,设初始资金为100万。请 利用前面已经得到的相关结果,建立交易模型,使交易者的收益最大; 4、试分析确定合理的评价指标体系,用以评价你的交易模型的优劣。(这一问为选做) 2.模型假设与符号说明 2.1模型的假设 1.由于题中所给指标外的其他因素对期货价格波动影响较小,可以忽略,认为价格的波动只受所给指标影响。 2.假设所给的19天的数据能准确反映期货交易中出现的各种变化特征情况。 3.假设不考虑交易模型中交易者的主观因素。 2.2符号说明 B1价指的是买1价、B1量是指买1量、S1价指卖1价、S1量指卖1量。在问题二的回归分析中,x1指成交量,x2指总量,x3指属性,x4指b1价,x5指s1价,x6指b1量,x7指s1量。

程序化初级交易模型总结

阶段涨幅:(CLOSE-REF(CLOSE,N)/REF(CLOSE,N); 再创新高:HIGH=HHV(HIGH,N); 放量上攻:CLOSE/REF(CLOSE,5)> &&VOL>MA(VOL,5)*3; 窄幅整理:(HHV(CLOSE,20)-LLV(CLOSE,20))/CLOSE,; 均线多头排列:MA(CLOSE,5)>MA(CLOSE,10) && MA(CLOSE,10)>MA(CLOSE,20);前期高点及其位置:HHV(HIGH,20) HHVBARS(HIGH,20); 60天前到40天前的最高价格: REF(HHV(HIGH,20),40) 动态平均EMA(X,N) SMA(X,N,M) SMA(CLOSE,VOL) 点到面转化 COUNT SUM HHV LLV 面到点转化 CROSS 线性回归 SLOPE(CLOSE,10)/REF(CLOSE,10)>; 之字转向 PEAK TROUGH PEAKBARS TROUGHBARS 大阳线 LOW=OPEN &&CLOSE=HIGH&&CLOSE/OPEN>; 穿头破脚 C/O> &&OPENREF(OPEN,1); 吊颈 O=H && (OPEN-CLOSE)/(HIGH-LOW)<1/3 && (HIGH-LOW)/HIGH>; 低开大阳线 OPEN ; 跳空缺口 LOW>REF(HIGH,1) && LOW/REF(HIGH,1)>;

MA普通金叉 CROSS(MA(CLOSE,5),MA(CLOSE,10)) && MA(CLOSE,5)>MA(CLOSE,10) && MA(CLOSE,10)>MA(CLOSE,20) 3条均线多头排列持续3天CC:= MA(CLOSE,5)>MA(CLOSE,30) && MA(CLOSE,10)>MA(CLOSE,30); EVERY(CC,3)=1 ; 均线死叉 CROSS(MA(CLOSE,10),(CLOSE,5)); 当日成交量放大2倍的金叉 CROSS(MA(CLOSE,5),MA(CLOSE,10)) && VOL/REV(VOL,1)>2 KDJ指标RSV:=(CLOSE-LLV(LOW,N1))/(HHV(HIGH,N1)-LLV(LOW,N1))*100; K:=SMA(RSV,N2,1); D:=SMA(K,N3,1); 综合判断条件 CROSS(K,D)&&D ; RSI指标N1[ N2[ := REF(CLOSE,1); RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100; RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100; WR指标N[ 综合判断条件 CROSS(WR,80) CROSS(WR,20) MACD指标L1[ L2[ L3[ DEA:EMA(DIFF,L1); MACD:2*(DIFF-DEA),COLORSTICK;

程序化交易系统建设及相关研究

程序化交易系统建设及相关研究 程序化交易系统建设及相关研究 本文选自《交易技术前沿》第十七期(2014年12月)。 目录程序化交易系统建设及相关研究1 前言2 程序化交易简介及主要策略2.1 久期平均(duration averaging)2.2 组合保险(portfolio insurance)2.3 指数套利(Index Arbitrage)2.4 数量化交易(Quantitative trading)3 国外程序化交易系统建设及应用情况4 我国程序化交易系统建设及应用情况4.1 基于CEP的开放式程序化交易系统4.2 商业专用程序化交易系统4.3 国内软件厂商开发的程序化交易系统4.4 机械化交易系统4.5 其它程序化交易相关软件5 我司程序化交易系统建设及应用6 程序化交易策略开发技术规范与建议思考 程序化交易 上海市证券同业公会信息技术专业委员会 程序化交易研究课题组

光大证券股份有限公司 Email:zhouzhaoyang@https://www.doczj.com/doc/848915200.html,1 前言 随着计算机技术的飞速发展,程序化交易已成为信息技术与投资管理的最佳结合点。由于完全凭借投资经理经验以及手工操作的资产管理模式受到了资金规模扩大、市场风险加剧、波动频繁等问题的挑战,引入程序化交易系统可解决操作效率、风险管理等难题。因此,各大投资机构纷纷投入研究,去开发专门的交易系统。这使程序化交易在交易决策、交易辅助方面发挥了巨大的作用。因此,现在程序化交易泛指利用计算机技术制定交易策略、自动或半自动交易、实行风险控制等行为。 程序化交易得以发展的原因是多方面的:首先,因其参与者主要为机构或资金量较为庞大的个人,他们的交易操作总量大,对交易成本、交易效率提出了更高的要求,对引入更先进的交易技术有内在的需求;其次,市场有效性理论盛行,简单的指数套利空间越来越小,交易者转而在交易频率上寻求突破;最后,借助程序化交易系统的分析功能,

开拓者函数集

数学函数 Abs: 返回参数的绝对值。 Acos: 返回参数的反余弦值。 Acosh: 返回参数的反双曲余弦值。 Asin: 返回参数的反正弦值。 Asinh: 返回参数的反双曲正弦值。 Atan: 返回参数的反正切值。 Atan2: 返回给定的X及Y坐标值的反正切值。 Atanh: 返回参数的反双曲正切值。 Ceiling: 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数Significance的最小倍数。 Combin: 计算从给定数目的对象集合中提取若干对象的组合数。 Cos: 返回给定角度的余弦值。 Cosh: 返回参数的双曲余弦值。 Ctan: 返回给定角度的余切值。 Even: 返回沿绝对值增大方向取整后最接近的偶数。 Exp: 返回e的Number次幂。 Fact: 返回数的阶乘。 Floor: 将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 Significance 的倍数。 FracPart: 返回实数舍入后的小数值。 IntPart: 返回实数舍入后的整数值。 Ln: 返回一个数的自然对数。 Log: 按所指定的底数,返回一个数的对数。

Mod: 返回两数相除的余数。 Neg: 返回参数的负绝对值。 Odd: 返回对指定数值进行舍入后的奇数。 Pi: 返回数字3.1415926535898。 Power: 返回给定数字的乘幂。 Rand: 返回位于两个指定数之间的一个随机数。 Round: 返回某个数字按指定位数舍入后的数字。RoundDown: 靠近零值,向下(绝对值减小的方向)舍入数字。RoundUp: 远离零值,向上(绝对值增大的方向)舍入数字。Sign: 返回数字的符号。 Sin: 返回给定角度的正弦值。 Sinh: 返回某一数字的双曲正弦值。 Sqr: 返回参数的平方。 Sqrt: 返回参数的正平方根。 Tan: 返回给定角度的正切值。 Tanh: 返回某一数字的双曲正切值。 字符串函数 Exact: 该函数测试两个字符串是否完全相同。 Left: 返回文本串的前lCount位。 Len: 返回文本串中的字符数。 Lower: 将一个文字串中的所有大写字母转换为小写字母。Mid: 返回文本串的后lCount位。

文华程序化交易说明文档

国海良时期货 文华财经 程序化交易系统 使用说明书

程序化交易是一种在计算机和网络技术的支持下,瞬间完成你预先设置好的组合交易指令的一种交易手段。您可以将您的交易思路,通过文华提供的函数、语法及编辑平台,编写成交易模型,实现自动开仓、自动止损、自动止赢。程序化交易在投资实战中不仅可以提高下单速度,而且可以帮助投资者在交易过程中避免受到情绪波动的影响,实现理性投资。 Mytrader2009的程序化交易功能在Webstock2008的基础上增加了追踪止损功能、在全自动状态下系统默认按照最后的信号方向执行,解决了交易指令消失不做任何处理的问题、使用算法交易确保下单成交、并且升级了效果测试和参数优化的功能,使程序化交易又前进了一步,让投资更加的轻松和快乐。 启动程序化交易进行自动交易 打开交易软件,输入账号和密码 启动自动交易模型,选择模型后点击加载或新建模型。

使用算法交易 可以选择是否启用“追价下单”“分批下单”“超价下单” 追价下单: 如果下单没有成交,可以设置追价下单,单子在几秒钟之内没有成交,系统会自动撤单并按市场最新价追价下单,直至预设手数全部成交(也可设置追价范围,防范风险)。(模型触发、价格价格条件单、画线条件单都可以支持追价下单)

分批下单: 如果下单手数过大,启动分批下单,系统会根据默认的分批下单手数,将总手数分批下单超价下单:在市价基础上调整[ ]最小变动价位,以提高成交几率。 算法交易参数的设置 点击图中程序化交易窗口的红色方框可以对算法交易功能进行设置 在下图中对算法交易参数进行设置

“程序化交易自动下单”的其他设置说明: “按市价下单,下单手数” :模型每次下单的数量 “只进行多头交易”:选择此项设置后,模型自动过滤掉卖开和买平的交易指令,只进行多头交易。 “只进行空头交易”:选择此项设置后,模型自动过滤掉买开和卖平的交易指令,只进行空头交易。 “双向交易”:选择此项设置后,模型可以发出买开、卖平、卖开和买平指令,进行双向交易。 “下单方式”:可以选择全自动(不需要确认)、半自动(需要确认)或者只显示信号。 “信号确认”:可以设置信号出现后几秒钟发出委托。 在全自动状态下,系统默认使用“程序化交易按最后信号方向执行”来解决指令反复的问题,设置如下图:

程序化交易系统大全

程序化交易系统大全 (收集了主流程序化交易系统) 一、趋势跟踪类 1、海龟交易系统 2、趋势线突破交易系统 3、波动性突破交易系统 4、通道突破交易系统 5、四周规则 6、NEWS交易系统 7、MACD交易系统 8、EMA交易系统 9、均线交易系统 、三重滤网交易系统 1010、三重滤网交易系统 1111、、SAR交易系统 1212、、OBV交易系统 (另有 克罗均线系统、、时间价格 双均线交易系统、、克罗均线系统 (另有::双均线交易系统 单均线交易系统、、趋势跟踪类全套多空强弱、、单均线交易系统 突破 突破、、LSS多空强弱 鳄鱼法则等系统)) 浮动波动性突破、、鳄鱼法则等系统产品 产品、、不动如山SAR SAR、、浮动波动性突破 二、反趋势振荡类 1、网格交易法 2、海岸线交易系统 3、假突破交易系统

5、薛斯通道交易系统 6、经典K线交易系统 7、RSI交易系统 8、KDJ交易系统 9、乖离率交易系统 、江恩回调带交易系统 1010、江恩回调带交易系统 、技术背离交易系统 1111、技术背离交易系统 、量价背离交易系统 1212、量价背离交易系统 BOLL通道交易、反四周 法则、BOLL (另有:维克多123法则、 规则 单摆震荡原理、、LSS轴点封套 轴点封套、、BIAS交易SLOWKD、、单摆震荡原理 规则、、SLOWKD 动能震荡、、分形交易系统等系价格通道交易、、ROC动能震荡 系统、、价格通道交易 系统 统) 三、波段交易类 1、海浪交易系统 2、天堂地狱交易系统 3、矩形交易系统 4、旗形交易系统 5、楔形交易系统 6、三角形交易系统 7、八段交易系统 8、波浪理论交易系统

期货交易模型编写经典教程

一、程序化交易的编写 ㈠、交易模型编写规范和一般原则 1、编辑平台支持的操作符 操作符意义例 CLOSE+OPEN 表示求收盘价及开盘价的+加法 和。 CLOSE-OPEN 表示求收盘价及开盘价的-减法 差。 CLOSE*OPEN 表示求收盘价及开盘价的* 乘法 积。 CLOSE/OPEN 表示求收盘价及开盘价的/ 除法 商。 AND 与(并且),也可简写为&& OR 或(或者), 也可简写为|| CLOSE>OPEN 表示判断当前周期是否收> 大于 阳。 CLOSE=OPEN 表示判断当前周期是否平< 小于 盘。 >= 大于等于 <= 小于等于 <> 不等于 = 等于

:= 只定义一个局部变量 (这个变量在画图时是不画的) TMP1:=(OPEN+CLOSE)/2; :MA(TMP1,10); 上面的公式的第一个语句定义了一个局部变量TMP1,在下面一行中引用了这个局部变量,但是要注意的是这个公式在画图的时候只画了第二条语句MA10所求出的结果。相反下面这个公式则需要画出两条线,第一条是自己定义的均价线,同时显示了均价的名称为A VP,第二条线是均价的简单移动平均线。 A VP:(OPEN+CLOSE)/2; MA(A VP,10); :声明了一个变量, 在画图时画出它并且按这个名字显 示。 2、编辑平台支持的函数 ⑴引用数据 A VPRICE 引用均价(在盘后对于国内三个期货交易 所指结算价) SETTLE 引用结算价(只有在日线周期盘后才能引 用当日的结算价) CLOSE 引用收盘价(在盘中指最新价),也可简写 为 C HIGH 引用最高价,也可简写为H 。 LOW 引用最低价,也可简写为L 。 OPEN 引用开盘价,也可简写为O 。 OPI 引用持仓量 REF(X,N) 引用X在N个周期前的值 例:REF(CLOSE,5);表示引用当前周期前 第5个周期的收盘价 REFX(X,N) 引用N个周期后的数据。(N为大于等于 1的整数)『未来函数』 例:REFX(CLOSE,5);表示引用自当前周 期后第5个周期的收盘价

C17027S_程序化交易系统研究与风险防范

1 . 下列不属于程序化交易优点的是()。 ? A.根据规则自动交易,有利于克服人性弱点 ? B.突破人的生理极限,大幅提高投资效率 ? C.系统性的交易、资金和仓位管理,有利于投资的组合优化管理和风险控制 ? D.交易者只要拥有一套好的交易系统,利用程序化交易平台就可以稳步盈利https://https://www.doczj.com/doc/848915200.html,/view/9b8934810029bd64783e2c7b.html 2 . ()交易策略是指套利者利用程序化交易系统在指数现货市场与指数衍生产品市场之 间,利用两类产品在不同市场上出现的瞬间定价的不同来迅速实现贱买贵卖的交易,并从中获得价差收益。 ? A.组合保险 ? B.久期平均 ? C.指数套利 ? D.算法交易 ?指数套利(Index Arbitrage)交易策略是指是套利者利用程序化交易在指数现货市场与指数衍生产品市场之间,利用两类产品在不同市场上出现的瞬间定价的不同来迅速实现贱买贵卖的交易,并从中获得价差收益[5]。它一般发生在股票指数的现货市场和与其相对应的股票指数期货市场。当股票指数现货与股票指数期货的价差大到足以超过无风险利率并能够抵补所有的交易费用时,从理论上讲,就可以进行指数套利 3 . ()交易策略是运用较为复杂的数学模型来确定订单最佳的执行路径、执行时间、执 行价格及执行数量的交易方法。 ? A.组合保险 ? B.久期平均 ? C.指数套利 ? D.算法交易

算法交易是指使用计算机来确定订单最佳的执行路径、执行时间、执行价格及执行数量的交易方法。 多选题(共4题,每题10分) 1 . 明确禁止的程序化交易包括()。 ? A.进行股指期货套期保值交易 ? B.频繁报撤且成交较低 ? C.影响收盘价、误导他人交易 ? D.制造趋势以影响价格 https://www.doczj.com/doc/848915200.html,/content/2015-10/10/content_3939157.htm ?《办法》明确列举了禁止的程序化交易,主要包括证券自买自卖、期货自成交、频繁报撤且成交较低、影响收盘价、误导他人交易、制造趋势以影响价格等。 ? 2 . 在国外程序化交易系统建设及应用中,使用完全自主开发的程序化交易系统具有哪些特 点? ? A.高速、安全、稳定、灵活 ? B.重视界面友好、人机交互 ? C.开发工作量大,业务与技术紧密结合 ? D.策略的技术实现风险和业务管理风险高 3 . 目前开设程序化交易的交易所主要包括()。 ? A.纽约股票交易所 ? B.纳斯达克市场 ? C.芝加哥期货交易所 ? D.芝加哥期权交易所

期货程序化交易策略研发

.. .. .. 期货程序化交易策略研发 .专业资料.

.. .. .. .专业资料. 摘要 期货程序化交易起源于欧美国家,随着计算机技术的发展,程序化交易得到了快速的发展。程序化交易主要通过阿拉法模型、交易成本模型和风险控制模型三个模型构成,通过对历史数据的分析寻找阿拉法策略,通过多策略组合实现能够收益稳定回撤可控的程序化策略组。本文主要是通过对程序化交易各个环节的特点进行剖析,实现通过数量模型就能稳定盈利的方法。 关键词:阿拉法模型,交易成本模型,风险控制模型,数据,多策略组合

.. .. .. .专业资料. Abstract Futures program trading originated in Europe and the United States, with the development of computer technology, program trading has been rapid development. Program trading is mainly constituted by alpha model, transaction cost model and risk control model of three model, by finding the Alpha strategy for the analysis of historical data, the combination of strategies can yield stable retracement controllable program strategy group. This paper is mainly through the analysis of characteristics of every part of the transaction on the program, through the method of quantitative model can stable profit. Key Words:Alpha model, Transaction cost model, Risk control model, Data, Multiple strategies

上海期货交易所结算细则

上海期货交易所结算细则 第一章总则 第一条 为规范上海期货交易所(以下简称交易所)期货交易的结算行为,保护期货交易当事人的合法权益和社会公众利益,防范和化解期货市场的风险,根据《上海期货交易所交易规则》制定本细则。 第二条 结算是指根据交易结果和交易所有关规定对会员保证金、盈亏、手续费、交割货款及其它有关款项进行计算、划拨的业务活动。 第三条 交易所的结算实行保证金制度、当日无负债结算制度和风险准备金制度等。 第四条 交易所只对会员进行结算,期货公司会员对客户进行结算。 第五条 本细则适用于交易所内的一切结算活动,交易所及其工作人员、交易所会员及其工作人员、客户和交易所指定期货保证金存管银行(以下简称存管银行)及其相关工作人员应当遵守本细则。 第二章结算机构 第六条 结算机构是指交易所内设置的结算部门。结算机构负责交易所期货交易的统一结算、保证金管理及结算风险的防范。

第七条 结算机构的主要职责: (一)控制结算风险; (二)登录和编制会员的结算账表; (三)办理资金往来汇划业务; (四)统计、登记和报告交易结算等情况; (五)处理会员交易中的账款纠纷; (六)办理交割结算等业务; (七)按规定管理保证金。 第八条 所有在交易所交易系统中成交的合约应当通过结算机构进行统一结算。 第九条 交易所可以检查会员的结算资料、财务报表及相关的凭证和账册,会员应当予以配合。 第十条 会员应当设立结算部门。期货公司会员结算部门负责会员与交易所、会员与客户之间的结算工作;非期货公司会员结算部门负责会员与交易所之间的结算工作。 结算部门应当妥善保管结算资料、财务报表及相关凭证、账册,以备查询和核实。 第十一条

详细谈谈期货交易模型如何设计

河北稳升软件科技有限公司制作 期货全自动交易软件序化交易与高频交易,你了解多少? 高频交易或者说程序化交易的主要卖点是什么?既是给市场带来了流动性。随着国内期货市场迈入金融期货时代,有关股指期货程序化交易的议论也随之升温。 这是一个新的交易理念、交易技术、交易产品均可与金融期货挂钩的时代,价格的快速发现与财富的快速集结,让程序化交易被誉为从数学界来到金融市场的天使。可是,相对于一些弱势投资者来说,这个备受对冲基金、投行等机构投资者欢迎的天使,竟然是可怕的黑天鹅,这是引入程序化交易的欧美市场以实践告诉我们的。许多投资者朋友对于程序化交易和高频交易有一定误区,认为程序化交易既是高频交易,本文就讨论下如何看待高频交易与程序化交易。 美国股市道琼斯指数盘中在2010年5月6日瞬间下跌998.5点,重挫9.2%,事后调查发现是程序化卖出指令和止损指令集中触发所导致的大幅下挫,并不是交易员“乌龙指”所引发的。而1987年10月19日是上一次类似的“黑天鹅“事件发生的时候,交易所电脑系统线路由于当天美国股市开盘后大量股票被抛出而变慢,实际交易情况与电脑显示的情况不符。装有比较股票现价与期货价格程序的电脑非常多,这些电脑在显示期货价格低于基础股票价格20%以上时,发出了无止尽的止损命令,最终酿成“黑色星期一”。虽然发生这种事件的几率很小,也足以造成无法弥补的灾难,之所以被监管机构申斥,正是因为高频交易对金融市场可能带来系统性风险。 高频交易按照目前并不完全的分类方法,大概有以下五类: 1.闪电交易或闪单交易。美国期货交易所特有的闪单指令导致了闪单交易方式,而闪电交易方式主要依托于市场制度,而人尽皆知的高盛软件工程师阿列尼可夫事件更让闪单策略基本原理加速了普及,使闪单高频交易进入白炽化竞争阶段。当然,这些在国内市场并未成形。 2.赚取成交量回扣或通道费,其特点有点类似做市商,国外大型交易商通过在不同的交易通道上挂单提供流动性,相应补偿则由各大电子交易所提供。可是此类高频交易在国内没有市场基础,因为目前就国内情况来看,并不具备交易所竞争的态势,所以为吸引交易者而提供回扣的可能也就不存在了。 3.算法交易。将大单指令通过计算机算法分割成众多小单指令的交易模式,被称为“幽灵单”,可以有效地控制交易商平仓过程或大额建仓的冲击成本。 4.定量化交易模型。主要依据各种金融理论、统计实证或传统技术分析指标来实现自动交易。 5.“炒手”交易模式。一天的总体成交量中,国内炒手的单个品种成交量大概可以占到5%—20%不等,往往是500毫秒成交一次,一定程度上来说,频繁的挂撤单实现价差获取加速了期货市场博弈生态的恶化。 目前,从掌握的资料上看,国内较为流行的程序化交易方式是第三、四、五种模式,一般中大型私募机构运用第三种模式,由大量的“海龟”派主导的是第四种模式,而第五种模式正在从传统手工操作转向计算机自动化。这三种计算机交易模式随着股指期货市场的不断壮大,机构占比的提高与参与群体的多元化,相信在不远的将来发展空间会越来越大。 综上所述,我们可以发现程序化交易与监管层诟病的高频交易区别较为明显,程序化交易中集计算机与策略优势的高阶模式是高频交易,偏重于上述第四类中的短周期是传统的程序化交易,并且更注重模型研究,其中的动量模型、定价模型、套利模型等均起到了增强市场流动性、填补市场非理性漏洞的作用。 事物都有两面性,对于弱势群体来说,程序化交易中的高阶模式会不断弱化其交易胜算和空间,可是,结合了传统交易理念与高新技术的程序化交易,也在一定程度上显示了市场的成熟度和参与群体的专业度。

相关主题
文本预览
相关文档 最新文档