第一章 模型开发简介

恒盈量化交易系统提供两种模型开发环境,即“快速模型开发功能”与“高级模型开发功能”。 “快速模型开发功能”适用于所有用户,“高级策略开发功能”是为有.Net开发经验的用户提供的高级模型开发功能,用户可以利用.NetIDE开发功能更强大的策略。

模型开发包,即SDK,是量化交易系统为量化交易策略开发者提供的开发工具、开发类库的集合,包含基本函数和辅助功能。

第二章 快速模型开发功能

快速模型开发功能是为大众用户,提供了简单模型开发工具,集成在客户端,方便易用快捷.

快速模型开发:

1.打开客户端“菜单栏”->“模型开发”->“创建模型”

2.模型开发向导

3. 模型编译器

第三章 高级模型开发功能

高级模型开发功能主要针对有一定.Net基础,熟悉C#语言的用户。使用Virtual Studio 2012(简称VS2012) 进行模型开发。使用该功能,首先要在电脑上安装有VS2012.

高级模型开发功能可以使用C#语言特性,利用.Net提供强大功能,开发出更高级的策略。并且可以利用VS2012对运行中的策略进行断点调试。

如果快速模型开发功能已经满足您的需求,可以跳过该章节直接进入下一章节。

3.1 VS2012及插件安装

Visual Studio恒盈编程插件提供了通过VS编辑器直接编译成恒盈模型。

注:所有本文档设计的Visual Studio插件,可以安装在VS2010和VS2012上,必须安装有.NET Framework 4.5. 因此,在安装此插件之前必须确保计算机上已经安装VS2010或VS2012与.NET Framework 4.5。 (VS2012中已经包含.NET Framework 4.5,如果使用的是VS 2010 则需要自行安装.NET Framework 4.5)

安装方法:

双击打开插件文件StrategyAddin.vsi,打开插件安装程序。

2 点击“下一步”。

3 点击完成,完成插件安装。

3.2示例开发包使用方法

量化交易系统提供了两个Visual Studio项目开发模板, 分别为Strategy Project Template.vsi和Technical Analysis Project Template.vsi,为策略项目和技术分析指标项目的模板。


安装过程如下:

1 双击VSI安装文件。

2 点击“下一步”。

3 完成安装。


使用方法。

1 打开StrategyDeveloper.sln (在客户端文件夹下à StrategyDeveloperà StrategyDeveloper.sln)。新建项目。选择策略模板项目(如下图)。

2 显示如下项目模板。

3 点击“OK”,出现以策略开发项目模板生成的策略项目。

1 选中策略项目,右键, 点击“发布策略模型”。

2 生成策略完成后,窗口左下角显示“保存成功到本机”。

3 通过VS菜单中“工具”(“TOOLS”)——“恒盈插件配置”可以对生成策略进行设置

4 从服务器下载策略,在“量化交易客户端”的菜单项中选择“策略编制管理”——“指标策略管理器”

打开“指标策略管理器”后选中所需要的策略,点击“下载”按钮就可以从服务器下载所需要的策略

第四章 基本概念

本章介绍了和量化分析策略相关的一些基本概念,帮助策略开发者理解量化交易系统的运行机制。

4.1 量化分析

量化分析,是技术分析的延伸,通过对市场行情实时和历史数据的分析,进行交易时机、价格, 数量的决策,并进行真实交易,从而获利。量化分析主要分为技术指标分析和交易策略两种。本系统提供的均是基于K线图的量化分析。

技术指标

技术指标是公式应用最常用的功能,它通过在K线图计算一系列的数学公式,每个K线Bar都有返回值,这些值在图表模块中输出为线条,通过分析图形特点、趋势和曲线帮助客户分析行情走势,得出合理的交易判断。

交易策略

交易策略是量化交易的核心。用于更加细致的进行完整的开平仓规则以及头寸控制、风险控制。 交易策略和技术指标的最明显差别在于,交易策略有买卖行为,而技术指标没有买卖行为。

4.2 K线图历史数据读取


图表1-1

由于本系统的在策略运行时,如果需要读取历史数据,可以使用本系统提供的回溯机制,进行读取。

图表 1‑1是IF1411的1分钟K线图。策略对该K线图进行分析。当前的指针指向该图的最后一条K线。

如果想要获取当前K线的收盘价,可使用代码“Contract.Close”,如果想要获取前一条K线的收盘价,可使用代码“Contract.Close[1]”。方括号中数字表示向前回溯多少条K线。获取其他K线数据,可以以此类推。

第五章 策略示例SampleStrategy

首先安装策略开发模板,内含SampleStrategy的策略代码。并按照第三章的方法,新建SampleStrategy项目。 由于本系统的策略使用C#进行开发,所以每个策略的代码实现都是一个继承了KLineStrategy基类的C#类实现。 下面是SampleStrategy的代码,它是从区间买卖策略衍生简化而成的。

FastLength和SlowLength是输入参数,可以通过量化交易系统客户端在应用策略的时候进行设定。AvgValue1和AvgValue2是内部变量,用于策略进行计算时存储中间计算值。

OnBarUpdate () 方法是基于K线图表策略的核心。由于量化交易策略是报价驱动的,所以每当有新的报价数据更新时,OnBarUpdate ()方法就会被调用一次。

OnBarOpen () 与OnBarClose () 由Bar驱动,当一个Bar开始或结束时,OnBarOpen () 或OnBarClose () 方法就会被调用一次。 根据代码的逻辑,当条件时满足时就会建仓,从而在买卖过程中实现交易,并获利。

PlotNumeric方法可以在客户端的K线图表上画出当前的值,如上面代码所示,K线图表会标出当前的合约K线收盘价,以及当前合约的持仓量。

注: 关于叠加多个品种时,指定下单的品种时,可以直接采用Bars1.Close \ Bars2.Close这种形式来实现,默认的Bars0.Close表示应用于第一个添加的商品上。

第六章 开发包提供的函数/属性

本章介绍了量化交易系统策略开发包提供的函数与属性。可以在策略编写时直接调用。

6.1 交易函数

EntryPrice

说明 获得当前持仓的第一个建仓价格。
语法 double EntryPrice
参数
示例 获得当前持仓的第一个建仓价格,返回值为浮点数。 只有当MarketPosition() != PositionType.NET时,即有持仓的状况下,该函数才有意义,否则返回0。

AvgEntryPrice

说明 获得当前持仓的平均建仓价格。
语法 double AvgEntryPrice
参数
示例 获得当前持仓的平均建仓价格,返回值为浮点数。

BarsSinceEntry

说明 获得当前持仓的第一个建仓位置到当前位置的Bar计数。
语法 int BarsSinceEntry
参数
示例 获得当前持仓的第一个建仓位置到当前位置的Bar计数,返回值为整型。 只有当MarketPosition() != PositionType.NET时,即有持仓的状况下,该函数才有意义,否则返回0。 注意:在开仓Bar上为0。

BarsSinceExit

说明 获得最近平仓位置到当前位置的Bar计数。
语法 int BarsSinceExit
参数
示例 获得最近平仓位置到当前位置的Bar计数,返回值为整型。 只有当MarketPosition() = PositionType.NET时,即没有持仓的状况下,该函数才有意义,否则返回0。 注意:在平仓Bar上为0。

Buy

说明 产生一个多头建仓操作。
语法 void Buy(double quantity, double price)
参数 quantity买入数量,为整型值,不传入该参数时为使用系统设置参数; price买入价格,为浮点数,不传入该参数时为使用现价(非最后Bar为Close)。
示例 产生一个多头建仓操作,返回值为布尔型,执行成功返回True,否则返回False。 该函数仅用于多头建仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition()= PositionType.NET时,该函数按照参数进行多头建仓。 如果当前持仓状态为空仓,即MarketPosition ()= PositionType.SHORT时,该函数平掉所有空仓,同时按照参数进行多头建仓,两个动作同时发出。 如果当前持仓状态为多仓,即MarketPosition ()= PositionType.LONG时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。 当委托价格超出k线的有效范围,在历史数据上,将会取最接近的有效价格发单;在实盘中,将会按照实际委托价格发单。 例如:当前k线有效价格为50-100,用Buy(1,10)发单,委托价将以50发单。

BuyToCover

说明 产生一个空头平仓操作。
语法 void BuyToCover(double quantity, double price)
参数 quantity买入数量,为整型值,不传入该参数时为使用系统设置参数; price买入价格,为浮点数,不传入该参数时为使用现价 (非最后Bar为Close)。
示例 产生一个空头平仓操作,返回值为布尔型,执行成功返回True,否则返回False。 该函数仅用于空头平仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition()= PositionType.NET时,该函数不执行任何操作。 如果当前持仓状态为多仓,即MarketPosition ()= PositionType.LONG时,该函数不执行任何操作。 如果当前持仓状态为空仓,即MarketPosition ()= PositionType.SHORT时,如果此时quantity使用默认值,该函数将平掉所有空仓,达到持平的状态,否则只平掉参数quantity的空仓。

Sell

说明 产生一个多头平仓操作。
语法 void Sell(double quantity, double price)
参数 quantity卖出数量,为整型值,不传入该参数时为使用系统设置参数; price卖出价格,为浮点数,不传入该参数时为使用现价 (非最后Bar为Close) 。
示例 产生一个多头平仓操作,返回值为布尔型,执行成功返回True,否则返回False。 该函数仅用于多头平仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition()= PositionType.NET 时,该函数不执行任何操作。 如果当前持仓状态为空仓,即MarketPosition ()= PositionType.SHORT时,该函数不执行任何操作。 如果当前持仓状态为多仓,即MarketPosition ()= PositionType.LONG时,如果此时quantity使用默认值,该函数将平掉所有多仓,达到持平的状态,否则只平掉参数quantity的多仓。 在MarketPosition ()= PositionType.LONG的情况下: Sell(50,10.2) 表示用10.2的价格卖出50张合约。 Sell(10,Close) 表示用当前Bar收盘价卖出10张合约,马上发送委托。 Sell(5,0) 表示用现价卖出5张合约,马上发送委托。 Sell(0,0) 表示用现价按交易设置中的设置,马上发送委托。

SellShort

说明 产生一个空头建仓操作。
语法 void SellShort(double quantity, double price)
参数 quantity卖出数量,为整型值,不传入该参数时为使用系统设置参数; price卖出价格,为浮点数,不传入该参数时为使用现价 (非最后Bar为Close)。
示例 产生一个空头建仓操作,返回值为布尔型,执行成功返回True,否则返回False。 该函数仅用于空头建仓,其处理规则如下: 如果当前持仓状态为持平,即MarketPosition()= PositionType.NET时,该函数按照参数进行空头建仓。 如果当前持仓状态为多仓,即MarketPosition ()= PositionType.LONG时,,该函数平掉所有多仓,同时按照参数进行空头建仓,两个动作同时发出 如果当前持仓状态为空仓,即MarketPosition ()= PositionType.SHORT时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。 SellShort(50,10.2) 表示用10.2的价格空头卖出50张合约。 SellShort(10,Close) 表示用当前Bar收盘价空头卖出10张合约,马上发送委托。 SellShort(5,0) 表示用现价空头卖出5张合约,马上发送委托。 SellShort(0,0) 表示用现价按交易设置中设置的手数,马上发送委托。 在MarketPosition=1的情况下:(当前持有多头持仓) SellShort(10,Close) 表示平掉所有多头仓位,并用当前Bar收盘价空头卖出10张合约,马上发送委托。

ContractProfit

说明 获得当前持仓位置的每手浮动盈亏。
语法 double ContractProfit
参数
示例 获得当前持仓位置的每手浮动盈亏,已考虑交易费用,返回值为浮点数。 只有当MarketPosition ()!= PositionType.NET时,即有持仓的状况下,该函数才有意义,否则返回0。

CurrentEntries

说明 获得当前持仓的建仓次数。
语法 int CurrentEntries()
参数
示例 获得当前持仓的建仓次数,返回值为整型。 只有当MarketPosition() != PositionType.NET时,即有持仓的状况下,该函数才有意义,否则返回0。

CloseD

说明 求N天前的收盘价
语法 double CloseD(int daysAgo)
参数 daysAgo 最近N天,0为当天,1为昨天,依次类推。
示例 CloseD (3); 得到3天前的收盘价。
CloseD (1); 得到昨日收盘价。
CloseD (0); 得到当天最新的收盘价。

EntryDate

说明 获得当前持仓的第一个建仓位置的日期。
语法 int EntryDate
参数
示例 获得当前持仓的第一个建仓位置的日期,返回值为int值 只有当MarketPosition() != PositionType.NET时,即有持仓的状况下,该函数才有意义,否则返回无效值。

EntryTime

说明 获得当前持仓的第一个建仓位置的时间。
语法 double EntryTime
参数
示例 获得当前持仓的第一个建仓位置的时间。例如:9点30分50秒100毫秒,返回0.093050100 只有当MarketPosition() != PositionType.NET时,即有持仓的状况下,该函数才有意义,否则返回无效值。

ExitDate

说明 获得最近平仓位置Bar日期。
语法 int ExitDate
参数
示例 获得最近平仓位置Bar日期,返回值为int值。 只有当MarketPosition() = PositionType.NET时,即没有持仓的状况下,该函数才有意义,否则返回””。

ExitPrice

说明 获得最近平仓位置的平仓价格。
语法 double ExitPrice
参数
示例 获得最近平仓位置的平仓价格,返回值为浮点数。 只有当MarketPosition() = PositionType.NET时,即没有持仓的状况下,该函数才有意义,否则返回0。

ExitTime

说明 获得最近平仓位置Bar时间。
语法 double ExitTime
参数
示例 获得最近平仓位置Bar时间,返回值为doube值。 只有当MarketPosition() = PositionType.NET时,即没有持仓的状况下,该函数才有意义,否则返回””。

GrossLoss

说明 获得累计的总亏损。
语法 double GrossLoss
参数
示例 获得累计的总亏损,已考虑交易费用,返回值为浮点数。注:该值为负数。

GrossProfit

说明 获得累计的总利润。
语法 double GrossProfit
参数
示例 获得累计的总利润,已考虑交易费用,返回值为浮点数。。

MarketPosition

说明 获得当前持仓状态。
语法 PositionType MarketPosition
参数
示例 if(MarketPosition==PositionType.LONG)判断当前是否持多仓 if(MarketPosition!= PositionType.NET)判断当前是否有持仓,无论持空仓或多仓

NetProfit

说明 获得累计的净利润。
语法 double NetProfit
参数
示例 获得累计的净利润,已考虑交易费用,返回值为浮点数。 NetProfit = GrossProfit + GrossLoss

PositionProfit

说明 获得当前持仓位置的浮动盈亏。
语法 double PositionProfit
参数
示例 获得当前持仓位置的浮动盈亏,已考虑交易费用,返回值为浮点数。 只有当MarketPosition() != PositionType.NET时,即有持仓的状况下,该函数才有意义,否则返回0。

PortfolioTotalProfit

说明 获得投资组合的累计交易盈亏。
语法 double PortfolioTotalProfit
参数
示例

6.2 数学函数

Abs

说明 返回参数的绝对值。
语法 double Abs(double Number)
参数 Number 需要计算其绝对值的实数。
示例 Abs (2) = 2;
Abs (-2) = 2;
Abs (0) = 0;
Abs (-5.3) = 5.3;
Abs (10.43) = 10.43。

Ceiling

说明 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数Significance的最小倍数。
语法 double Ceiling(double Number, double Significance)
参数 Number 待舍入的数值。
Significance 基数。
示例 将参数 Number 沿绝对值增大的方向,舍入为最接近的整数或基数Significance的最小倍数。例如,如果您不愿意使用像"分"这样的零钱,而所要购买的商品价格为 $4.42,可以用公式 = Ceiling (4.42,0.1) 将价格舍入为以"角"表示。 如果参数为非数值型,Ceiling返回无效值。 无论数字符号如何,都按远离 0 点方向舍入。如果数字已经为 Significance 的倍数,则不进行舍入。 如果 Number 和 Significance 符号不同,Ceiling返回无效值。 Ceiling (2.5, 1) = 3; Ceiling (-2.5, -2) = -4; Ceiling (-2.5, 2) = 无效值; Ceiling (1.5, 0.1) = 1.5; Ceiling (0.234, 0.01) = 0.24。

Cos

说明 返回给定角度的余弦值。
语法 double Cos(double Number)
参数 Number 为需要求余弦的角度,以弧度表示。如果参数的单位是度,则可以乘以Pi ()/180 将其转换为弧度。
示例 Cos (1.047) = 0.500171;Cos (60*Pi()/180) = 0.5,即 60 度的余弦值。

Even

说明 返回沿绝对值增大方向取整后最接近的偶数。
语法 int Even(double Number)
参数 Number 所要取整的数值。
示例 Even (1.5) = 2;
Even (3) = 4;
Even (2) = 2;
Even (-1) = -2。

Exp

说明 返回e的Number次幂。
语法 double Exp(double Number)
参数 Number 为底数e的指数。
示例 Exp (1) = 2.718282(e 的近似值);
Exp (2) = e2 或 7.389056;
Exp (Ln(3)) = 3。

Fact

说明 返回数的阶乘。
语法 int Fact(double Number)
参数 Number 要计算其阶乘的非负数。如果输入的Number不是整数,则截尾取整。
示例 Fact (1) = 1;
Fact (1.9) = Fact (1) 等于 1;
Fact (0) = 1;

Floor

说明 将参数 Number 沿绝对值减小的方向去尾舍入,使其等于最接近的 Significance 的倍数。
语法 double Floor(double Number, double Significance)
参数 Number 所要舍入的数值。Significance 基数
示例 Floor (2.5, 1) = 2;
Floor (-2.5, -2) = -2;
Floor (-2.5, 2) = 无效值;
Floor (1.5, 0.1) = 1.5;
Floor (0.234, 0.01) = 0.23。

FracPart

说明 返回实数舍入后的小数值。
语法 double FracPart(double Number)
参数 Number 需要计算其小数值的实数。
示例 FracPart (2.49) = 0.49;
FracPart (-8.93) = 0.07。

IntPart

说明 返回实数舍入后的整数值。
语法 int IntPart(double Number)
参数 Number 需要进行取整处理的实数。
示例 IntPart (8.9) = 8;
IntPart (-8.9) = -9。

Ln

说明 返回一个数的自然对数。
语法 double Ln(double Number)
参数 Number 所要取整的数值。
示例 Ln (86) = 4.45437;
Ln (2.7182818) = 1;
Ln (Exp (3)) = 3;
Exp (Ln (4)) = 4。

Log

说明 按所指定的底数,返回一个数的对数。
语法 double Log(double Number, double Base)
参数 Number 为用于计算对数的正实数。Base 为对数的底数。
示例 Log (10,10) = 1;
Log (8, 2) = 3;
Log (86, 2.7182818) = 4.454347。

Mod

说明 返回两数相除的余数。
语法 int Mod(int Number,int Divisor)
参数 Number 为被除数。Divisor 为除数。如果Divisor为零,函数Mod返回无效值。
示例 Mod (3, 2) = 1;
Mod (-3, 2) = 1;
Mod (3, -2) = -1;
Mod (-3, -2) = -1.

Odd

说明 返回对指定数值进行舍入后的奇数。
语法 Int Odd(double Number)
参数 Number 要舍入求奇数的数值。
示例 Odd (1.5) = 3;
Odd (3) = 3;
Odd (2) = 3;
Odd (-1) = -1;
Odd (-2) = -3。

Pi

说明 返回数字3.1415926535898。
语法 double Pi()
参数
示例 返回数字3.1415926535898,即数学常数pi,精确到小数点后 13 位。

Power

说明 返回给定数字的乘幂。
语法 double Power(double Number, double Power)
参数 Number 底数,可以为任意实数。Power 指数,Number按该指数次幂乘方。
示例 Power (5,2) = 25;
Power (98.6,3.2) = 2401077;
Power (4,5/4) = 5.656854。

Round

说明 返回某个数字按指定位数舍入后的数字。
语法 double Round(double Number,int Num_digits)
参数 Number 为需要向上舍入的任意实数。Num_digits 舍入后的数字的位数。
示例 Round (2.15, 1) = 2.2;
Round (2.149, 1) = 2.1;
Round (-1.475, 2) = -1.48;
Round (21.5, -1) = 20。

RoundDown

说明 靠近零值,向下(绝对值减小的方向)舍入数字。
语法 double RoundDown(double Number,int Num_digits)
参数 Number 为需要向上舍入的任意实数。Num_digits 舍入后的数字的位数。
示例 RoundDown (3.2, 0) = 3;
RoundDown (76.9,0) = 76;
RoundDown (3.14159, 3) = 3.141;
RoundDown (-3.14159, 1) = -3.1。

RoundUp

说明 远离零值,向上(绝对值增大的方向)舍入数字。
语法 double RoundUp(double Number,int Num_digits)
参数 Number 为需要向上舍入的任意实数。Num_digits 舍入后的数字的位数。
示例 RoundUp (3.2,0) = 4;
RoundUp (76.9,0) = 77;
RoundUp (3.14159, 3) = 3.142;
RoundUp (-3.14159, 1) = -3.2;
RoundUp (31415.92654, -2) = 31,500。

Sign

说明 返回数字的符号。
语法 Int Sign(double Number)
参数 Number 为任意实数。
示例 返回数字的符号。当数字为正数时返回 1,为零时返回 0,为负数时返回 -1。
Sign (10) = 1;
Sign (4-4) = 0;
Sign (-0.00001) = -1。

Sin

说明 返回给定角度的正弦值。
语法 double Sin(double Number)
参数 Number 为需要求正弦的角度,以弧度表示。如果参数的单位是度,则可以乘以 Pi ()/180 将其转换为弧度。
示例 Sin (Pi()) = 1.22E-16,近似于 0。即 pi 的正弦值为 0;。
Sin (Pi ()/2) = 1;。
Sin (30* Pi ()/180) = 0.5,即 30 度的正弦值。。
Sign (-0.00001) = -1。

Sqr

说明 返回参数的平方。
语法 double Sqr(double Number)
参数 Number 需要计算其平方的实数。
示例 Sqr (2) = 4;
Sqr (-2) = 4;
Sqr (0) = 0;
Sqr (-5.3) = 28.09;
Sqr (10.43) = 108.7849。

Sqrt

说明 返回参数的正平方根。
语法 double Sqrt(double Number)
参数 Number 为需要求平方根的数字,如果该数字为负,则函数Sqrt返回无效值。
示例 Sqrt (16) = 4;
Sqrt (-16) = 无效值;
Sqrt (Abs(-16)) = 4.

Tan

说明 返回给定角度的正切值。
语法 double Tan(double Number)
参数 Number 为需要求正切的角度,以弧度表示。如果参数的单位是度,则可以乘以 Pi()/180,将它转换为弧度。
示例 Tan (0.785) = 0.99920;
Tan (45*Pi()/180) = 1。

Trunc

说明 返回给定实数的整数值。
语法 int Trunc (double Number)
参数 Number 为需要求整的实数。
示例 Trunc (0.785) = 0;
Trunc (45.1) = 45;
Trunc (-45.1) = -45;

6.3 时间函数

CurrentDate

说明 获取量化交易系统的当前日期。
语法 int CurrentDate()
参数
示例 如果当前日期为2004-1-24,CurrentDate返回值为20040124。

CurrentTime

说明 获取量化交易系统(操作系统)的当前时间。
语法 double CurrentTime()
参数
示例 如果当前时间为11:34:21,CurrentTime返回值为0.113421。

DateTimeToString

说明 将日期时间值转化为字符串类型。
语法 string DateTimeToString(double dtDateTime)
参数 dtDateTime 要进行转化的参数值,为浮点数,整数部分表示日期,小数部分表示时间值。
示例 DateTimeToString (20040612.114323) = "2004-06-12 11:43:23"。
DateTimeToString (195402.1363) = "1954-02-01 13:00:00"。

DateToString

说明 将日期值转化为字符串类型。
语法 string DateToString(int nDate)
参数 nDate 要进行转化的参数值,为19000000-99991231之间的整数。
示例 DateTimeToString (20040612.114323) = "2004-06-12 11:43:23"。
DateTimeToString (195402.1363) = "1954-02-01 13:00:00"。

Day

说明 获得当前Bar的日信息。
语法 int Day
参数 nDate 要进行转化的参数值,为19000000-99991231之间的整数。
示例 如果当前Bar日期为2004-1-24,Day返回值为24。

Monday

说明 获得星期一的值。
语法 int Monday()
参数
示例 获得星期一的值:1。

Tuesday

说明 获得星期二的值。
语法 int Tuesday()
参数
示例 获得星期二的值:2。

Wednesday

说明 获得星期三的值。
语法 int Wednesday()
参数
示例 获得星期三的值:3。

Friday

说明 获得星期五的值。
语法 int Friday()
参数
示例 获得星期五的值:5。

Saturday

说明 获得星期六的值。
语法 int Saturday()
参数
示例 获得星期六的值:6。

Sunday

说明 获得星期日的值。
语法 int Sunday()
参数
示例 获得星期日的值:0。

Hour

说明 获得当前Bar的小时信息。
语法 int Hour
参数
示例 如果当前Bar的时间为11:34:21,Hour返回值为11。

MakeDate

说明 将参数生成日期值。
语法 int MakeDate(int nYear, int nMonth, int nDay)
参数 nYear 要进行转化的年信息,为1900-9999的整数。
nMonth 要进行转化的月信息,为1-12的整数。
nDay 要进行转化的日信息,为1-31的整数。
示例 MakeDate (2004,4,23) = 20040423;
MakeDate (343,23,25) = 19000125。

MakeDateTime

说明 将参数生成日期时间值。
语法 double MakeDateTime(int nDate, double fTime)
参数 nDate 要进行转化的日期信息,为19000101-99991231之间的整数。
fTime 要进行转化的时间信息,为0.0-0.235959之间的浮点数。
示例 MakeDateTime (20030323, 0.123456) = 20030323.123456;
MakeDateTime (30323, 0.1456) = 30320101.145600。

MakeTime

说明 将参数生成日期时间值。
语法 double MakeDateTime(int nDate, double fTime)
参数 nDate 要进行转化的日期信息,为19000101-99991231之间的整数。
fTime 要进行转化的时间信息,为0.0-0.235959之间的浮点数。
示例 MakeDateTime (20030323,0.123456) = 20030323.123456;
MakeDateTime (30323, 0.1456) = 30320101.145600。

Minute

说明 获得当前Bar的分钟信息。
语法 int Minute
参数
示例 如果当前Bar的时间为11:34:21,Minute返回值为34。

Month

说明 获得当前Bar的月信息。
语法 int Month
参数
示例 如果当前Bar日期为2004-1-24,Month返回值为1。

Second

说明 获得当前Bar的秒信息。
语法 int Second
参数
示例 如果当前Bar的时间为11:34:21,Second返回值为21。

StringToDate

说明 将字符串转化为日期。
语法 int StringToDate(string str)
参数
示例 StringToDate ("2003-02-23") = 20030223。

StringToDateTime

说明 将字符串转化为日期时间。
语法 double StringToDateTime(string str)
参数 str 需要转化的字符串。
示例 StringToDateTime ("2003-02-23 12:24:55") = 20030223.122455。

StringToTime

说明 将字符串转化为时间。
语法 double StringToTime(string str)
参数 str 需要转化的字符串。
示例 StringToTime ("12:24:55") 等于 0.122455。

SystemDateTime

说明 获取系统的当前日期时间。
语法 double SystemDateTime()
参数
示例 如果当前日期为2004-1-24,当前时间为11:34:21,SystemDateTime返回值为20040124.113421。

TimeToString

说明 将时间值转化为字符串类型。
语法 string TimeToString(double fTime)
参数 fTime 要进行转化的参数值,为0.0-0.235959的浮点数。
示例 TimeToString (0.114323) 等于 "11:43:23";
TimeToString (0.1363) 等于 "13:00:00"。

Weekday

说明 获得当前Bar的周信息。
语法 int Weekday()
参数
示例 如果当前Bar日期为2004-1-24,Weekday返回值为6,即为周六。

Year

说明 获得当前Bar的周信息。
语法 int year()
参数
示例 如果当前Bar日期为2004-1-24,Year返回值为2004。

6.4 数据函数

C

说明 当前公式应用商品在当前Bar的收盘价。
语法 DoubleSeries C
参数
示例 当前公式应用商品在当前Bar的收盘价,返回值为浮点数,Close的简写。

Close

说明 当前公式应用商品在当前Bar的收盘价。
语法 DoubleSeries Close
参数
示例 当前公式应用商品在当前Bar的收盘价,返回值为浮点数。

CurrentBar

说明 当前公式应用商品在当前Bar的索引值。
语法 int CurrentBar
参数
示例 当前公式应用商品当前Bar的索引值,第一个Bar返回值为0,以下其他Bar递增。

D

说明 当前公式应用商品在当前Bar的日期。
语法 DateSeries D
参数
示例

Date

说明 当前公式应用商品在当前Bar的日期。
语法 DateSeries Date
参数
示例

H

说明 当前公式应用商品在当前Bar的最高价。
语法 DoubleSeries H
参数
示例 当前公式应用商品在当前Bar的最高价,Tick时为当时的委卖价,返回值为浮点数,High的简写。

High

说明 当前公式应用商品在当前Bar的最高价。
语法 DoubleSeries High
参数
示例 当前公式应用商品在当前Bar的最高价,Tick时为当时的委卖价,返回值为浮点数。

L

说明 当前公式应用商品在当前Bar的最低价。
语法 DoubleSeries L
参数
示例 当前公式应用商品在当前Bar的最低价,Tick时为当时的委买价,返回值为浮点数序列,Low的简写。

Low

说明 当前公式应用商品在当前Bar的最低价。
语法 DoubleSeries Low
参数
示例 当前公式应用商品在当前Bar的最低价,Tick时为当时的委买价,返回值为浮点数序列。

O

说明 当前公式应用商品在当前Bar的开盘价。
语法 DoubleSeries O
参数
示例 当前公式应用商品在当前Bar的开盘价,返回值为浮点数序列,Open的简写。

Open

说明 当前公式应用商品在当前Bar的开盘价。
语法 DoubleSeries Open
参数
示例 当前公式应用商品在当前Bar的开盘价,返回值为浮点数序列。

OpenInt

说明 当前公式应用商品在当前Bar的持仓量。
语法 DoubleSeries OpenInt
参数
示例 当前公式应用商品在当前Bar的持仓量,返回值为浮点数。

T

说明 当前公式应用商品在当前Bar的时间。
语法 DoubleTimeSeries T
参数
示例 如果当前时间为11:34:21,Time.Value返回值为0.113421。

Time

说明 当前公式应用商品在当前Bar的时间。
语法 DoubleTimeSeries Time
参数
示例 如果当前时间为11:34:21.356,Time.Value返回值为0.113421356。

V

说明 当前公式应用商品在当前Bar的成交量。
语法 DoubleSeries V
参数
示例 当前公式应用商品在当前Bar的成交量,返回值为浮点数序列,Vol的简写。

Vol

说明 当前公式应用商品在当前Bar的成交量。
语法 DoubleSeries Vol
参数
示例 当前公式应用商品在当前Bar的成交量,返回值为浮点数序列。

OpenD

说明 N天前的开盘价。
语法 Double OpenD(int N)
参数 N: N天前
示例 OpenD(1),昨天的开盘价

HighD

说明 N天前的最高价。
语法 Double HighD(int N)
参数 N: N天前
示例 HighD(1),昨天的最高价

LowD

说明 N天前的最低价。
语法 Double LowD(int N)
参数 N: N天前
示例 LowD(1),昨天的最低价

CloseD

说明 N天前的收盘价
语法 Double CloseD(int N)
参数 N: N天前
示例 CloseD(1),昨天的收盘价

6.5 属性函数

BarInterval

说明 当前公式应用商品数据的周期数值。
语法 int BarInterval
参数
示例 当前公式应用商品数据的周期数值,返回值为整型,该值通常和BarType一起使用进行数据周期的判别。例:
当前数据周期为1日线,BarInterval等于1;
当前数据周期为22日线,BarInterval等于22;
当前数据周期为60分钟线,BarInterval等于60;
当前数据周期为1TICK线,BarInterval等于1;br> 当前数据周期为5000量线,BarInterval等于5000

BarType

说明 当前公式应用商品数据的周期类型值。
语法 int BarType
参数
示例 当前数据周期为秒线,BarType等于0;
当前数据周期为分钟线,BarType等于1;
当前数据周期为日线,BarType等于2;
当前数据周期为周线,BarType等于3。
当前数据周期为月线,BarType等于4。
当前数据周期为Tick线,BarType等于5。

BidAskSize

说明 当前公式应用商品数据的买卖盘个数。
语法 double BidAskSize()
参数
示例 上海A股当前的买卖盘个数为5个,因此其BidAskSize等于5;
大连期货当前的买卖盘个数为1个,因此其BidAskSize等于1。

BigPointValue

说明 当前公式应用商品数据的一个整数点的价值。
语法 int BigPointValue()
参数
示例 深圳证券交易所A股一个点的价值都为1人民币,因此其BigPointValue等于1;
郑州期货交易所期货品种一个点的价值为1人民币,因此其BigPointValue等于1;
香港联交所恒指期货一个点的价值为50港币,因此其BigPointValue等于50;
芝加哥商业交易所E-MINI一个点的价值为50美元,因此其BigPointValue等于50;
上海证券交易所上证指数为不可交易品种,因此其BigPointValue也等于1。

ContractSize

说明 当前商品的合约大小。
语法 double ContractSize()
参数
示例 当前商品的合约大小,返回值为浮点数,仅对外汇有效。

ContractUnit

说明 当前公式应用商品的每张合约包含的基本单位数量。
语法 int ContractUnit()
参数
示例 当前公式应用商品的每张合约包含的基本单位数量,返回值为整型。对于股票来说, 是1手包含多少股,对于铜铝商品期货来说是1张合约包含多少吨标底物。

ExchangeName

说明 当前公式应用商品的交易所名称。
语法 string ExchangeName
参数
示例 深圳证券交易所下商品的ExchangeName等于" 深圳证券交易所";芝加哥商业交易所下商品的ExchangeName等于" 芝加哥商业交易所"。

MinPrice

说明 当前公式应用商品的最小变动量。
语法 double MinPrice
参数
示例 股指:0.2

Symbol

说明 当前公式应用商品的代码。
语法 string Symbol
参数
示例 例如当前公式插入了ru1101,则Symbol返回字符串“ru1101”。

SymbolName

说明 当前公式应用商品的名称。
语法 string SymbolName
参数
示例 例如当前公式插入m1101,SymbolName返回字符串“豆粕1101”。

SymbolType

说明 当前公式应用商品的小类信息,例如Cu,Ru,SR等。
语法 string SymbolType
参数
示例 沪铜1105,函数返回字符串"Cu"。

Q_AskPrice

说明 当前公式应用商品的最新卖盘价格。
语法 double Q_AskPrice(string instrumentId)
参数 string instrumentId合同编号
示例

Q_AskVol

说明 当前公式应用商品的最新卖盘量。
语法 double Q_AskVol(string instrumentId)
参数 string instrumentId合同编号
示例

Q_BidPrice

说明 当前公式应用商品的最新买盘价格。
语法 double Q_BidPrice(string instrumentId)
参数 string instrumentId合同编号
示例

Q_BidVol

说明 当前公式应用商品的最新买盘量。
语法 double Q_BidVol(string instrumentId)
参数 string instrumentId合同编号
示例

Q_AskPriceFlag

说明 当前公式应用商品的卖盘价格变化标志。
语法 int Q_AskPriceFlag(string instrumentId)
参数 string instrumentId合同编号
示例

Q_BidPriceFlag

说明 当前公式应用商品的买盘价格变化标志。
语法 int Q_BidPriceFlag(string instrumentId)
参数 string instrumentId合同编号
示例

Q_LowerLimit

说明 当前公式应用商品的当日跌停板价。
语法 double Q_LowerLimit(string instrumentId)
参数 string instrumentId合同编号
示例

Q_PreSettlePrice

说明 当前公式应用商品的昨日结算价。
语法 double Q_PreSettlePrice(string instrumentId)
参数 string instrumentId合同编号
示例

Q_PriceChgRatio

说明 当前公式应用商品的当日涨跌幅。
语法 double Q_PriceChgRatio(string instrumentId)
参数 string instrumentId合同编号
示例

Q_AskPriceFlag

说明 当前公式应用商品的卖盘价格变化标志。
语法 int Q_AskPriceFlag(string instrumentId)
参数 string instrumentId合同编号
示例

Q_BidPriceFlag

说明 当前公式应用商品的买盘价格变化标志。
语法 int Q_BidPriceFlag(string instrumentId)
参数 string instrumentId合同编号
示例

Q_BidPriceFlag

说明 当前公式应用商品的当日跌停板价。
语法 Q_LowerLimit(string instrumentId)
参数 string instrumentId合同编号
示例

Q_UpperLimit

说明 当前公式应用商品的当日涨停板价。
语法 double Q_UpperLimit(string instrumentId)
参数 string instrumentId合同编号
示例

6.6账户函数

A_AccountID(暂不支持)

说明 返回当前公式应用的交易帐户ID。
语法 String A_AccountID()
参数
示例 返回当前公式应用的交易帐户ID,返回值为字符串,无效时返回空串。
注:不能使用于历史测试,仅适用于实时行情交易。

A_BrokerID(暂不支持)

说明 返回当前公式应用的交易帐户对应的交易商ID。
语法 String A_BrokerID()
参数
示例 返回当前公式应用的交易帐户对应的交易商ID,返回值为字符串,无效时返回空串。
注:不能使用于历史测试,仅适用于实时行情交易。

A_DeleteOrder(暂不支持)

说明 针对当前公式应用的帐户、商品发送撤单指令。
语法 static void A_DeleteOrder(this Analyzer analyzer, int orderId)
参数 oreerId 单号
示例

6.7金融函数

AdaptiveMovAvg

说明 求卡夫曼自适应移动平均。
语法 double AdaptiveMovAvg(int EffRatioLength, int FastAvgLength, int SlowAvgLength)
参数 EffRatioLength 用于计算效率比的值,为数值型;
FastAvgLength 是快速平均需要的周期数,为整型;
SlowAvgLength 是慢速平均需要的周期数,为整型。
示例 Close.AdaptiveMovAvg (10, 2, 30); 计算收盘价的卡夫曼自适应移动平均值。

Average

说明 求平均。
语法 double Average(int length)
参数 Length 是需要计算的周期数,为整型。
示例 Close.Average ( 12); 计算12周期以来的收盘价的平均值;

AverageFC

说明 快速计算平均值。
语法 double AverageFC(int length)
参数 Length 是需要计算的周期数,为整型.
示例 Close.AverageFC ( 12); 计算12周期以来的收盘价的平均值;

AvgPrice

说明 求平均价格。
语法 double AvgPrice
参数
示例 AvgPrice();计算当前bar开高低收盘价的平均值.。

AvgTrueRange

说明 求平均真实范围。
语法 double AvgTrueRange(int length)
参数 Length 是需要计算的周期数,为整型。
示例 该函数计算当前周期的真实高点和真实低点的Length周期的平均差值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。例:
barSeries.AvgTrueRange (10);计算10周期以来的真实高点和真实低点的平均差值。

CoefficientR

说明 求皮尔森相关系数。
语法 double CoefficientR(DoubleSeries series2, int length)
参数 series2求相关系统的数据源2,必须是可回溯变量;Length 是需要的周期数,为整型.
示例 Close.CoefficientR (Open, 12); 计算12周期以来收盘价和开盘价的皮尔森相关系数。

Correlation

说明 求相关系数。
语法 double Correlation(DoubleSeries series2, int length)
参数 series2求相关系统的数据源2,必须是可回溯变量;length是需要的周期数,为整型.
示例 Close. Correlation (Open, 12); 计算12周期以来的Close价和Data2 Open价的相关系数。

Covar

说明 求协方差。
语法 double Covar(DoubleSeries price2, int length)
参数 price2求协方差的数据源2,必须是可回溯变量;length是需要的周期数,为整型.
示例 Close .Covar (Open, 12); 计算12周期以来的Close价和Open价的协方差。

CrossOver

说明 求是否上穿。
语法 bool CrossOver(DoubleSeries price2)
参数 Price2 求交叉的数据源2。
示例 Close.CrossOver (AvgPrice); 判断上一个Bar的收盘价Close是否上穿AvgPrice.
注意:在使用判断穿越的函数时,要尽量避免使用例如close等不确定的元素,否则会导致信号消失, 一般情况下,Close可以改用High和Low分别判断向上突破(函数CrossOver)和向下突破(函数CrossUnder)。

CrossUnder

说明 求是否下穿。
语法 bool CrossUnder(DoubleSeries price2)
参数 Price2 求交叉的数据源2。
示例 Close.CrossUnder (AvgPrice); 判断收盘价Close是否下破AvgPrice.
注意:在使用判断穿越的函数时,要尽量避免使用例如close等不确定的元素,否则会导致信号消失, 一般情况下,Close可以改用High和Low分别判断向上突破(函数CrossOver)和向下突破(函数CrossUnder)。

DataConvert

说明 跨周期数据转换函数。
语法 double DataConvert(DoubleSeries price, string strPeriodType, int nPeriodNums, string strDataType)
参数 Price 用于进行转换的值,必须是可回溯变量; strPeriodType 转换的目标类型,共有四种类型:"min","day","week","month"; nPeriodNums 转换的目标周期值,比如5分钟,3天,2周; strDataType 数据转换的类型,共有6种方式:"open","high","low","close","vol","openint"。
示例 Value1 = barSeries.DataConvert (Close,"min",5,"close"); 将close转换为5min周期的数据,按照close计算方式。 Value1 = DataConvert (Close,"day", 10,"high"); 将close转换为10day周期的数据,按照high计算方式。

DEMA

说明 求双指数平均。
语法 double DEMA(int length)
参数 Length 是需要计算的周期数,为整型.
示例 该函数计算指定周期内的可回溯变量的双指数平均值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。 例:
Close.DEMA (Close, 12); 计算12周期以来的收盘价的双指数平均值;

Highest

说明 求最高值。
语法 double Highest(int length)
参数 Length 是需要计算的周期数,为整型。
示例 Close.Highest (12); 计算12周期以来的收盘价的最高值;

HighestBar

说明 求最高值出现的Bar。
语法 double HighestBar(int length)
参数 Length 是需要计算的周期数,为整型。
示例 Close.HighestBar (Close, 12); 计算12周期以来的收盘价出现最高值的回溯周期值;

LinearReg

说明 求线性回归。
语法 bool LinearReg(int length, int tgBar, out double lRSlope, out double lRAngle, out double lRIntercept, out double lRValue)
参数 Llength是需要计算的周期数,为整型;
tgBar计算历史或未来的Bar的线形回归值,为整型,只对LRValue有影响。0为当前Bar,>0为历史的Bar,<0为未来的Bar;
lRSlope引用参数,返回线形回归的斜率值。
lRAngle引用参数,返回线形回归的角度;
lRIntercept 引用参数,返回线形回归的Y轴截距;
lRValue 引用参数,返回线形回归的值。
示例 该函数计算指定周期内的可回溯变量的线性回归,返回值为布尔型,表示返回值是否有效;通过引用参数返回线形回归的各项计算值. 当序列值的CurrentBar小于Length时,该函数无效。例:
Close.LinearReg (12, 0, oSlope, oAngle, oIntercept, oValue); 计算12周期以来的收盘价的线性回归,通过4个引用参数返回结果值;

LinearRegAngle

说明 求线性回归的角度。
语法 double LinearRegAngle(int length)
参数 该函数计算指定周期内的可回溯变量的线性回归角度值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。
示例 Close .LinearRegAngle (12); 计算12周期以来的收盘价的线性回归角度值;

LinearRegSlope

说明 求线性回归的斜率。
语法 double LinearRegSlope(int length)
参数 length是需要计算的周期数,为整型。
示例 该函数计算指定周期内的可回溯变量的线性回归斜率值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。例:
Close.LinearRegSlope (12); 计算12周期以来的收盘价的线性回归斜率值;

LinearRegValue

说明 求线性回归值。
语法 ddouble LinearRegValue(int length, int TgtBar)
参数 Length:需要计算的周期数,为整型 tgBar:算历史或未来的Bar的线形回归值,为整型,只对LRValue有影响
示例 该函数计算指定周期内的数值型序列值的线性回归值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。例:
Close.LinearRegValue ( 12, 0); 计算12周期以来的收盘价的线性回归值;

Lowest

说明 求最低。
语法 double Lowest(int length)
参数 length是需要计算的周期数,为整型。
示例 Close.Lowest (Close, 12); 计算12周期以来的收盘价的最低值;

LowestBar

说明 求最低值出现的Bar。
语法 double LowestBar(int length)
参数 length是需要计算的周期数,为整型。
示例 Close.LowestBar (Close, 12); 计算12周期以来的收盘价出现最低值的回溯周期索引

Max

说明 求最大值。
语法 double Max(double p1, double p2)
参数 p1, p2是数值型值;
示例 Max(close,close[1]);计算close和close[1]之间的最大值。

Median

说明 求中位数。
语法 double Median(int length)
参数 Length 是需要计算的周期数,为整型。
示例 该函数计算指定周期内的可回溯变量的中位数,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值; 如果Length为偶数,返回值为两个中位数的平均值,如果Length为奇数,返回值为中位数。 例:
Close.Median (12); 计算12周期以来的收盘价的中位数;

MidPoint

说明 求中点。
语法 Double MidPoint(DoubleRecallable Price,double Length)
参数 用于求中点的值,必须是可回溯变量; Length 是需要计算的周期数,为整型。
示例 该函数计算指定周期内的数值型序列值的中点值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。例:
MidPoint (Close, 12); 计算12周期以来的收盘价的中点值; MidPoint ((Close + High + Low)/ 3, 10); 计算10周期以来高低收价格的平均值的中点值。

Min

说明 求最小值。
语法 double Min(double p1, double p2)
参数 p1, p2是数值型值。
示例 Min(open,open[1]);计算open和open[1]之间的最小值。

Mode

说明 求众数。
语法 double Mode(int length)
参数 Length 是需要计算的周期数,为整型。
示例 该函数计算指定周期内的可回溯变量的众数,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。 例:
Close.Mode (50); 求50个周期以来出现最频繁的收盘价值。

Momentum

说明 求动量。
语法 double Momentum(int length)
参数 Length 是需要计算的周期数,为整型。
示例 该函数计算指定周期内的数值型序列值的动量值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。 例:
Close.Momentum ( 12); 计算12周期以来的收盘价的动量值

NthExtremes

说明 求N极值。
语法 double Momentum(int length)
参数 Length 是需要计算的周期数,为整型。
示例 该函数计算指定周期内的数值型序列值的动量值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。 例:
Close.Momentum ( 12); 计算12周期以来的收盘价的动量值

NthHigher

说明 求第N高。
语法 double NthHigher(int length, int n)
参数 Length 是需要计算的周期数,为整型;当N>Length或者N,Length为非正数时,返回值为-1。 N 为求第N高值;N=1为求最高值,N=2为求第二高值
示例 Close.NthHigher( 12, 5); 计算12周期以来的收盘价的第5高值;

NthHigherBar

说明 求第N高出现的Bar。
语法 double NthHigherBar(int length, int n)
参数 Length 计算指定的周期数; N 求第N高的N值,1为求最大值,2位求第二大的值。
示例 Close.NthHigherBar (8,1); 求最近8个Bar的收盘价最大值出现的Bar据当前Bar的偏离数,假定Close的最大值出现在前面第4个Bar,则返回4。

NthLower

说明 求第N低值。
语法 double NthLower(int length, int n)
参数 Length 是需要计算的周期数,为整型,当N>Length或者N,Length为非正数时,返回值为-1; N 求第N低的N值,1为求最小值,2位求第二小的值。
示例 Close.NthLower(Close, 12, 5); 计算12周期以来的收盘价的第5低值;

NthLowerBar

说明 求第N低出现的Bar。
语法 double NthLowerBar(int length, int n)
参数 Length 是需要计算的周期数,为整型,当N>Length或者N,Length为非正数时,返回值为-1; N 求第N低的N值,1为求最小值,2位求第二小的值。
示例 Close.NthLowerBar (12, 5); 计算12周期以来的收盘价出现第5低值的回溯周期索引;

ParabolicSAR

说明 求抛物线转向。
语法 bool ParabolicSAR(double AfStep, double AfLimit, out double oParClose, out double oParOpen, out double oPosition, out double oTransition)
参数 AfStep 加速因子;
AfLimit 加速因子的限量;
oParClose 引用参数,输出当前Bar的停损值;
oParOpen 引用参数,输出下一个Bar的停损值;
oPosition 引用参数,输出建议的持仓状态,1 - 多头,-1 - 空头;
oTransition 引用参数,输出当前Bar的状态是否发生反转,1 或 -1 为反转,0 为保持不变。
示例 Close.NthLowerBar (12, 5); 计算12周期以来的收盘价出现第5低值的回溯周期索引;

PercentChange

说明 求涨跌幅。
语法 double PercentChange(int length)
参数 Length 是需要计算的周期数,为整型。
示例 该函数计算指定周期内的数值型序列值的涨跌幅,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。例:
Close.PercentChange ( 12); 计算12周期以来的收盘价的涨跌幅。

PercentR

说明 求威廉指标。
语法 double PercentR(int length)
参数 Length是需要计算的周期数,为整型。
示例 该函数计算指定周期内的可回溯变量的威廉指标值,返回值为浮点数; 当序列值的CurrentBar小于Length时,该函数返回无效值。 公式应用中%R=100-PercentR()。例:
barSeries.PercentR; 计算12周期以来的威廉指标值。

Pivot

说明 求转折。
语法 bool Pivot(out double pivotPrice, out int PivotBar, int length = 10, int leftStrength = 1, int rightStrength = 1, int instance = 1, int hilo = 1)
参数 Length 是需要计算的周期数,为整型;
LeftStrength 转折点左边需要的Bar数目,必须小于Length;
RightStrength 转折点右边需要的Bar数目,必须小于Length;
Instance 设置返回哪一个波峰点,1 - 最近的波峰点,2 - 倒数第二个,以此类推;
HiLo 设置求转折的计算类型,1 - 求高点, -1 - 求低点;
PivotPrice 引用参数,转折点的Price值;
PivotBar 引用参数,转折点出现的Bar到当前Bar的回溯周期索引。
示例 Close.Pivot (Close, 10, 1, 1, 1, 1, PivotPrice, PivotBar); 计算Close最近10个周期的波峰点。

PriceOscillator

说明 求振荡。
语法 double PriceOscillator(int fastLength = 9, int slowLength = 18)
参数 FastLength 是需要计算的快线周期数,为整型;
SlowLength 是需要计算的慢线周期数,为整型。
示例 Close.PriceOscillator ( 9,18); 计算9,18周期的收盘价的快慢周期振荡值;

RateOfChange

说明 求振荡。
语法 double RateOfChange(int length)
参数 length是需要计算的周期数,为整型。
示例 Close.RateOfChange (12); 计算12周期以来的收盘价的变动率;

StandardDev

说明 求标准差
语法 double StandardDev(int length, int dataType = 1)
参数 Length 是需要计算的周期数,为整型;
DataType 求估计方差的类型,1 – 求总体方差,2 – 求样本方差。
示例 Close.StandardDev (14, 1); 计算14周期以来收盘价的总体标准差。

Summation

说明 求和。
语法 double Summation(int length)
参数 Length 是需要计算的周期数,为整型.
示例 Close.Summation (12); 计算12周期以来的收盘价的和;

SummationFC

说明 快速求和。
语法 SummationFC(int length)
参数 该函数计算指定周期内的可回溯变量之和,返回值为浮点数;
当序列值的CurrentBar小于Length时,该函数返回无效值;
使用该函数时,第二个参数不能使用变量。如果第二个参数需要使用到变量,请使用Summation函数
示例 Close.SummationFC (12); 计算12周期以来的收盘价的和;

SwingHigh

说明 求波峰点。
语法 double SwingHigh(int instance, int strength, int length)
参数 Instance 设置返回哪一个波峰点,1 - 最近的波峰点,2 - 倒数第二个,以此类推。
Strength 设置转折点两边的需要的周期数,必须小于Length;
Length 是需要计算的周期数,为整型。
示例 Close.SwingHigh (1,,2,10);计算Close在最近10个周期的波峰点的值,最高点两侧每侧至少需要2个Bar。

SwingHighBar

说明 求波峰点出现的Bar。
语法 double SwingHighBar(int instance, int strength, int length)
参数 Instance 设置返回哪一个波峰点,1 - 最近的波峰点,2 - 倒数第二个,以此类推;
Strength 设置转折点两边的需要的周期数,必须小于Length;
Length 是需要计算的周期数,为整型。
示例 Close.SwingHighBar (1,,2,8); 计算Close在最近8个周期的波峰点出现的Bar到当前Bar的回溯周期索引值,最高点两侧需要至少2个Bar

SwingLowBar

说明 求波谷点出现的Bar
语法 double SwingLowBar(int instance, int strength, int length)
参数 Instance 设置返回哪一个波谷点,1 - 最近的波谷点,2 - 倒数第二个,以此类推;
Strength 设置转折点两边的需要的周期数,必须小于Length;
Length 是需要计算的周期数,为整型
示例 Close.SwingLowBar (1,2,8);计算Close在最近8个周期的波谷点出现的Bar到当前Bar的回溯周期索引值,最低点两侧需要至少2个Bar。

SwingLow

说明 求波谷点
语法 double SwingLow(int instance, int strength, int length)
参数 Instance 设置返回哪一个波谷点,1 - 最近的波谷点,2 - 倒数第二个,以此类推;
Strength 设置转折点两边的需要的周期数,必须小于Length;
Length 是需要计算的周期数,为整型。
示例 Close.SwingLow (1,,2,10);计算Close在最近10个周期的波谷点的值,最低点两侧需要至少2个Bar。

TrueHigh

说明 求真实高点
语法 double TrueHigh()
参数
示例 barSeries. TrueHigh();如果当前周期的最高价大于等于昨收盘价,返回值为当前周期的最高价,否则为昨收盘价。

TrueLow

说明 求真实低点
语法 double TrueLow()
参数
示例 barSeries.TrueLow();如果当前周期的最低价小于等于昨收盘价,返回值为当前周期的最低价,否则为昨收盘价。

TrueRange

说明 求真实范围
语法 DoubleSeries TrueRange()
参数
示例 barSeries.TrueRange () ;计算当前周期的真实高点和真实低点的差值。

VariancePS

说明 求估计方差
语法 double VariancePS(int length = 10, int dataType = 1)
参数 Length 是需要计算的周期数,为整型;
DataType 求估计方差的类型,1 – 求总体方差,2 – 求样本方差.
示例 Close.VariancePS ( 14, 1); 计算14周期以来收盘价的总体方差;

WAverage

说明 求权重平均
语法 double WAverage(int length)
参数 Length 是需要计算的周期数,为整型。
示例 Close.WAverage (10); 计算10周期以来收盘价的权重平均值;

XAverage

说明 求指数平均
语法 double XAverage(int length)
参数 Length 是需要计算的周期数,为整型。
示例 Close.XAverage (12); 计算12周期以来的收盘价的指数平均值;

6.8字符串函数

Exact

说明 该函数测试两个字符串是否完全相同
语法 Boolean Exact(string string1, string string2)
参数 String1 待比较的第一个字符串
String2 待比较的第二个字符串
示例

Len

说明 返回文本串中的字符数
语法 int Len(string str)
参数 str是要查找其长度的文本。空格将作为字符进行计数
示例 Len(“China”); 返回值为5

Lower

说明 将一个文字串中的所有大写字母转换为小写字母
语法 istring Lower(string str)
参数 str是要转换为小写字母的文字串
示例 Len(“China”); 返回”china”

Text

说明 将参数中的数字转化为字符串
语法 string Text(double value)
参数 value 将参数中的数字转化为字符串
示例

Trim

说明 除了文本两边所有的空格
语法 string Trim(string str)
参数 str 需要清除文本中头尾的空格
示例 Trim(“ China ”); 返回”China”

Upper

说明 将一个文字串中的所有小写字母转换为大写字母
语法 string Upper(string str)
参数 str 需要清除文本中头尾的空格
示例 Upper (“ China ”); 返回”CHINA”

Value

说明 将代表数字的文字串转换成数字
语法 double? Value(string str)
参数 str为需要进行格式转换的文本字符串
示例 Value ("1,000") = 1,000;
Value ("-30540fdfde") = -30540。

6.9 其它函数

FileAppend

说明 在指定文件中追加一行字符串。
语法 void FileAppend(string savePath, object value)
参数 strPath 指定文件的路径,请使用全路径表示,并使用\\做路径分割符,否则会执行失败strText 输出的字符串内容
示例 FileAppend("C:\\Formula.log","Close = "+Close.Value);

FileDelete

说明 删除指定文件。
语法 Boolean FileDelete(string strPath)
参数 strPath 指定文件的路径,请使用全路径表示,并使用\\做路径分割符,否则会执行失败
示例 FileDelete("C:\\Formula.log");

FormulaName

说明 获得当前执行的公式名称。
语法 string FormulaName()
参数
示例

IIF

说明 执行真假值判断,根据逻辑测试的真假值返回不同的数值。
语法 double IIF(bool condition, double value1, double value2)
参数 Conditon 条件表达式;
TrueValue 条件为True时的返回值;
FalseValue 条件为False时的返回值。
示例 IIF(Close>Open,Close,Open);

IIFString

说明 执行真假值判断,根据逻辑测试的真假值返回不同的字符串。
语法 String IIFString(bool conditon, String trueValue, String falseValue)
参数 Conditon 条件表达式;
TrueValue 条件为True时的返回值;
FalseValue 条件为False时的返回值。
示例 IIFString (Close>Open,"Close","Open");

InvalidInteger

说明 返回整型的无效值,该值 = 2147483647L
语法 long InvalidInteger()
参数
示例

InvalidNumeric

说明 返回数值型的无效值
语法 double InvalidNumeric()
参数
示例

InvalidString

说明 字符串的无效值。
语法 string InvalidString()
参数
示例

PlotBool(暂未实现)

说明 在当前Bar输出一个布尔值。
语法 bool PlotBool(String label, bool bPlot, int locator = 0, Infrastructure.Entity.Message.Strategy.ColorType color = Infrastructure.Entity.Message.Strategy.ColorType.DEFAULT, int barsBack = 0)
参数 Name 输出值的名称,不区分大小写;
bPlot 输出的布尔值;
Locator 输出值的定位点;
Color 输出值的显示颜色,默认表示使用属性设置框中的颜色;
BarsBack 从当前Bar向前回溯的Bar数,默认值为当前Bar。
示例 PlotBool ("con", con, high); 在bar的最高价位置输出条件con的布尔值。
If (PlotBool ("con1", con1)) Alert ("con1 is true"); 输出con1的值,并且当con1条件满足时,进行报警。

PlotNumeric

说明 在当前Bar输出一个数值。
语法 void PlotNumeric(string lable, double value)
参数 lable输出值的名称,不区分大小写;
value输出的数值;
示例 PlotBool ("con", con, high); 在bar的最高价位置输出条件con的布尔值。
If (PlotBool ("con1", con1)) Alert ("con1 is true"); 输出con1的值,并且当con1条件满足时,进行报警。

PlotString(暂未实现)

说明 在当前Bar输出一个字符串。
语法 string PlotString(string label, string str, int locator = 0, Infrastructure.Entity.Message.Strategy.ColorType color = Infrastructure.Entity.Message.Strategy.ColorType.DEFAULT, int barsBack = 0)
参数 Name 输出值的名称,不区分大小写;
str 输出的字符串;
Locator 输出值的定位点;
Color 输出值的显示颜色,默认表示使用属性设置框中的颜色;
BarsBack 从当前Bar向前回溯的Bar数,默认值为当前Bar。
示例 PlotString ("Bear Market","Bear Bear",high,blue); 在bar的最高价位置输出一个字符串,并且显示为蓝色。

Unplot

说明 删除曾经输出的值。
语法 void Unplot(string lable, int offset)
参数 lable要删除输出值的名称,不区分大小写; offset从当前Bar向前回溯的Bar数,默认值为删除当前Bar曾经输出的值。
示例 PlotNumeric ("Line1", Close.Value); If (Close > Open) Unplot("Line1",1); 当 Close > Open ,将上一个Bar输出的数据删除。

附录一 调用MatLab

封装MatLab函数

1. 编写Function (.m文件)

2. 生成.Net Assembly

a) 输入命令"deploytool",弹出如下窗口,“Type”选择.Net Assembly

b) 弹出如下窗口,添加类

c) 改名【可选】

d) 添加.m文件

e) 生成.net Assembly

3. 封装MatLab函数,生成MatLab类库

a) 新建Class Library项目

b) 引用“MatLab生成的.Net Assembly

c) 将MatLab函数封装成.Net类方法,方便.net环境下使用。示例:

d) 生成MatLab类库

在策略中使用MatLab函数库

1. 在策略项目中,引用MatLab类库。

第一章 模型开发简介

第二章 快速模型开发功能

第三章 高级模型开发功能

第四章 基本概念

第五章 策略示例

第六章 开发包提供的函数/属性