宇宙刑警op:STage结构

来源:百度文库 编辑:偶看新闻 时间:2024/04/27 18:34:51
界面中显示各种技术指标及交易信号的分析工具

多个合约
一个以上的价格数据插入到一个图表当中 可在图表中比较分析不同时间段的合约 多个股价数据,可共享一个Y轴或可单独使用一个Y轴
技术指标 (Indicator)
--提供趋势指标、变动性指标、动量指标、市场强度指标、交易量指标等400多个常用指标
划线工具(Line Study)
--利用趋势线等各种线性工具在图表上画出交易策略及指标,跟有效的确定交易时点
--STageChart中,除利用文本、趋势线外,可利用20余个划线工具制定交易策略并在图表中确认结果
提供与程序交易引擎联动的用户UI构成和便利性
可将系统提供的交易规则和用户自己的交易方法结合,连接到STageStudio并投入交易
用户为导向设计的、便利的系统 提供与程序交易引擎联动的即时数据图表分析功能 为程序交易的Back-Testing及变量最优化的有机结合 高速处理即时数据时算法    可同时处理日/周/月/分/Tick等多种周期数据 各图表可无限制的加入辅助指标 实现用户指标及交易策略的STage语言
主界面构成

标签: 可管理多个图表窗口 工作区: 由系统交易、技术性指标、交易战略、信号搜索、使用者指标、图表形态构成,可更改各部分的设置 合约窗口:更换和插入Data2,管理当前图表窗的设置 图表界面:用户请求数据,并设定指标和交易策略 图表规模调整栏:调节窗口中显示的数据量 分析工具:可在图表中加入各种图表分析工具
策略编辑器 用户可利用编辑器制作全新技术指标或交易策略,也可修改系统原有的技术指标和交易策略。

提供差异化策略制作功能
图表、开仓、清仓、模拟和变量最优化等功能,以及与UI的有机连接 支持函数调用函数功能 提供多样的Reserved Word和函数 Reserve Word 和函数用特殊颜色表示
采用易于掌握的VBScript语言
初学者也只需掌握简单的编程语法就可使用的VB语法结构
『例1』
Parameter : Price1(Close), Length(25)
Value1 = VR(Price1,Length)
If Value1 Cross Over 100 then
Buy("Buy")
End if
If Value1 Cross Under 100 then
Sell("Sell")
End if
提供使用者指标及函数功能
提供Open Tool-Box形态的功能 提供各指标和函数的源代码,方便用户开发交易策略时应用这些指标和函数 利用各种函数开发独有交易策略并利用该策略捕捉买卖时机
交易策略
分类提供标准化的买入/卖出信号和策略,以方便制作提示买入/卖出时机的交易系统 制作自己的交易策略后应用到系统图表,系统会自动将买入/卖出时点表示在图表中
提供多种烛柱图信号搜索逻辑
众多烛柱图信号搜索指标 可用于买入/卖出时机的确定
合约搜索
根据用户交易策略的逻辑,搜索合适的合约
基本结构

1.菜单栏:由文件、编辑、视图、验证、工作区、窗口、帮助组成
2.工具栏:常用功能的快捷方式
3.工作窗:由全指标、技术指标、交易战略、信号搜索组成,选择其中的项目可打开编辑窗口
4.编辑窗:编辑指标和交易策略代码
5.状态栏:显示当前光标的位置,并监控多个程序的状态
6.结果栏:由错误、查找、排错窗口构成,利用错误消息和Print命令排错(DEBUG)
7.例题窗: 系统函数的简单说明和例题
8.函数窗: 分类显示STage策略编辑器支持的用户函数及系统函数
STage 语言
STage 语言的结构及基本概念
可利用数字型、逻辑型、字符串型变量储存并确认。
利用参数调用指标和函数
利用条件语句控制策略的运行,按照特定情况制定交易策略。同时,可利用输出语句将交易策略的运行结果和变量值以及价格数据等的当前状态和过去状态显示到结果栏里。
自定义MA(移动平均)函数的示例
/* Simple Moving Average */
Parameter: Price1(Numeric), Length(Numeric)
Variables: Summation(0), Counter(0)
Summation = 0
For counter = 0 To Length - 1
Summation = Summation + Price1[counter]
End For
If Length >= 1 Then
MA = Summation / Length
Else
MA = 0
End if
运算符
STage语言利用运算符计算制作逻辑。可进行数学运算、逻辑运算。利用变量和参数求逻辑运算结果时使用。
在一个表达式里使用多个运算符时,会按运算符优先等级来执行表达式的各个部分。如,使用括号时,先处理括号内的计算。运算符的优先等级相同时按照从左到右的顺序计算。
STage提供数学运算符、关系运算符、连接运算符、逻辑运算符、赋值运算符、Cross运算符、dot运算符以及括号等运算符。
1.数学运算符:为数学计算的运算符。运算符两端只能使用常数和数字型变量。
+

-

*

/

\
整除
%
取余
^
指数
2. 连接运算符:连接运算符两边字符串
&
连接字符串。 (‘+’ 运算符两边有字符串时作连接运算符处理)
3. 关系运算符:比较运算符两边的关系(大小)时使用。 结果为真(TRUE)和假(FALSE)
==
等于
=
等于. (与上面 ‘==’运算符相同. 仅在IF 条件语句中作为关系运算,其余情况作为赋值运算符)
<>
不等于
!=
不等于 (与 ‘<>’运算符相同)
<
小于。运算符做出小于右侧
>
大于。运算符左侧大于右侧
<=
小于等于。运算符左侧不大于右侧
> =
大于等于。运算符左侧不小于右侧
4. 逻辑运算符:用于对条件的逻辑运算。主要用在条件语句中。
AND
且 : 左右都为真时为真
&&
且 : 与 ‘AND’运算符相同
OR
或 : 左右有一个为真实为真
||
或 : 与 ‘OR’运算符相同
!
非 : 只有右侧值,改变右侧值。真->假,假->真
5. 赋值运算符: 右侧值带入左侧时使用
=
代入
6. Cross运算符: 确认左右两侧值交叉与否
cross over (cross above)
左侧值向上突破右侧值时为真
cross under (cross below)
左侧值向下突破右侧值时为真
7.点号运算符: 左侧值为对象变量时,右侧值用于指示该对象的成员(如该对象的成员函数和成员变量)。
【例】
Plot1( Volume, "Volume" )
If volume > volume[1] then
Plot1.color = red
Elseif Volume < Volume[1] then
Plot1.color = Blue
Else
Plot1.color = black
※例题中指示了Plot1的颜色属性
8. 括号: 获得最高优先级。使用括号时优先处理括号中内容。括号中带括号时优先处理该括号。
[例]
Parameter : Length(200)
Value1 = ((Close - Close[Length]) / Close[Length])*100
Plot2(Value1,"APC")
※例中共有2个括号,按照优先顺序先计算第二括号 ‘(Close - Close[Length])’后处理 ‘( … / Close[Length])’
运算一般遵循从左到右的运算法则,但由于存在运算符优先顺序,因此根据优先顺序处理。相同等级运算符执行从左到右的法则。
运算符优先顺序如下。1为最高级,10为最低级。
1
‘()’
括号
2
‘.’
Dot
3
‘!’

4
‘cross’
Cross over(cross above), Cross under(cross below)
5
‘^’
指数
6
‘*’, ‘/’, ‘\’, ‘%’
乘、除、取整、取余
7
‘+’, ‘-‘
加、减
8
‘&’
连接字符串
9
‘<’, ‘<=’, ‘>’, ‘>=’
小于、小于等于、大于、大于等于
10
‘=’, ‘= =’, ‘!=’, ‘<>’
等于、等于、不等于、不等于
11
AND, &&
且、且
12
OR, ||
或、或
变量
数字型、逻辑型、字符串型、对象型、数组型的储存位置,可存储计算结果等
变量类型
数字型(Numeric), 逻辑型(Bool), 字符串型(String), 对象型(Object), 数组型(Array), 对象数组型 (ObjectArray)
数字型变量储存整数或实数值 逻辑型变量储存“TRUE”或“FALSE” 字符串型变量储存文字,如“高手程序化交易” 对象型变量储存如画线工具等使用“new”运算符的数据 数组型变量储存多个数字型、逻辑型及字符串型等数据 对象数组储存多个对象型数据
变量声明
【例】
Parameter : Length(20), ShowVal(True), Title("IndiName")
Variables :  TodayBarNumber(0), show1(True), Name("MyName")
C1 = Close
O1 = Open
【例】
Parameter : Length(Numeric), ShowVal(Bool), Title(String)
Variables :  TodayBarNumber(0), show1(True), Name("MyName")
C1 = Close
O1 = Open
如上面例子中,“Variables:”后用“,”隔开各个变量,或如同C1和O1不声明而直接在编辑代码中使用。 用variables : TodayBarNumber(0)这种方法声明变量时,该变量会在指标或策略执行的开始进行一次初始化,因此,我们需要在声明变量时指定一个初始值。 “Variables”的声明也可以在编辑代码的中部,但处理时与在编辑代码最前声明做相同处理。 “Var”、“Variable”、“Variables”、“Vars”等单词是系统保留字。 变量声明不区分大小写。即,“VAR1”和“var1”是同一个变量。 变量名中间不能加入空格。 变量名第一个字符不能为数字。 变量名可使用英语、汉语、韩语、日语、特殊符号等所有字符。
参数声明
参考上例 指标或策略要声明变量类型:如,Length(20) 函数要声明变量的类型:如,Length(Numeric) 参数声明也可在编辑代码中间,但与在编辑代码前声明作相同处理 “Param”、“parameter”、“parameters”、“input”、“inputs”等为系统保留字 参数声明不区分大小写。即,“parameter1”和“PARAM1”是同样的变量 指标的参数初始值可用函数指定。参照下例。 指标的第二个参数起,可以前面的参数为初始值声明。请参考下例。 参数名中不能有空格 参数名第一字不能为数字 参数名可使用英语、汉语、韩语、日语、特殊符号等所有字符。
【例】
定义参数时可指定指标值或已定义变量,或可加入简单的计算式子。
Parameter : P1(adx(0)), P2(P1+10), P3((P1+P2)/2)
 
函数
函数是为在策略和指标中执行特定任务而制作的命令的集合 函数调用过程中,传给被调函数的值为参数 函数运行结果返回到调用方,该值称为“返回值” 函数的类型
系统函数
数学函数(Cosine等), 时间函数, 颜色函数, 字符串函数(UpperStr等)
委托函数
委托函数(Buy, Sell 等), STOP委托函数(SetTrailingStop 等), 成果分析函数( EntryDate 等)
输出函数
Plot, PlotBar, Print 等
自定义函数
STage 提供数量众多的基本函数,但为方便用户反复使用特定逻辑或更效率的管理逻辑,也提供了自定义函数功能。
参照前期Bar值
参数和变量用于储存和传达交易策略、交易指标及自定义函数等的结果。
当指标在新Bar中被执行时,这些变量可将前面Bar中储存的值参照在当前Bar中。
这时的保留语是[ ]。也可参照价格数据以及自定义函数的前面Bar值。
【例】
Parameter: Length(10)
If CNDL_TrendUp[2] and
CNDL_WhiteLine[2] and
CNDL_LongBody(Length)[2] and
CNDL_BlackLine[1] and
Close[1] > Close[2] and
CNDL_BlackLine and
Open >= Min(Open[1], Close[1]) and
Open <= Max(Open[1], Close[1]) and
Close < Close[2] and
Close > Open[2] Then
PlotPoint1 (TopSide, "Two Crows", Red, 4)
End If
上例为“2Crows”指标。使用了“CNDL_TrendUp”函数的2个Bar前值,以及“Close”和“Open”的2个和1个Bar前值。
PRINT函数
STage程序化交易软件中,可以通过STage策略编辑器的“输出”栏查看结果。制作交易策略时可以帮助我们检查策略是否正常运行。
如图,将想要查看的项目作为“PRINT”函数的参数输入时,“输出”栏将以文字形式显示结果值。“PRINT”函数的参数无数量限制。
注释语句
注释是在制作交易逻辑、技术指标以及自定义函数时,为帮助制作者和修改者的理解而在编辑代码中嵌入的说明文。注释语句不会被执行,且有两种表现形式。
使用 //
将该行识别为注释,该行将不被执行。超过该行的不作为注释
以 /* 开始, */ 结束
中间内容作为注释,中间内容不被执行。 可将多行作为注释。
【例】
// DMI Indicator
Parameter: Length(14)
Variables: SumDX(0), Counter(0)
PLOT2 ( MinusDI(Length), "-DI", Blue )
PLOT1 ( PlusDI(Length), "+DI", Magenta )
PLOT3 ( ADX(Length), "ADX", Red, Black, 2 )
PLOTBaseline1 ( 20, "20 Line", Magenta )
/* PLOT1( Round( PlusDI(Length),3 ), "+DI", Magenta)
PLOT2( Round( MinusDI(Length),3 ), "-DI", Blue)
PLOT3( Round( ADX(Length),3 ), "ADX",Red,Black,2)
PLOTBaseline1( 10, "10 BaseLine", Magenta )
PLOTBaseline2( 30, "30 BaseLine", Magenta ) */
// print ( d, t, Round( PlusDI(Length),3 ), Round( MinusDI(Length),3 ), Round( ADX(Length),3 ) )
条件语句
条件语句指在编辑代码中设定条件而改变执行顺序的命令。逻辑的运行流程以叙述顺序执行为原则。
但,有时候需要进行变量的比较或反复执行逻辑,这时我们就会用到条件语句。
条件语句有IF语句、FOR语句、DO语句、SELECT语句、WITH语句等。
用括号标记部分为可省略部分
① IF语句 : 根据条件执行的语句。也是最常用的语句。分为四种类型。
用法1

IF 条件 THEN 执行内容

--IF条件 THEN 执行内容:条件和执行内容都要叙述在一行,且不能使用END IF。也称单行IF
用法2

IF 条件
执行语句1
执行语句2

执行语句x
END IF

--条件语句为真(TRUE)时执行执行语句。不为真时跳过并执行IF语句的下一个语句。
用法3

IF 条件语句 THEN
执行语句1

执行语句4
ELSE
执行语句5

执行语句9
END IF

--条件语句为真时执行1~4,假时执行语句5~9。即,根据条件语句的结果而执行不同的语句。
用法4

IF 条件语句1 THEN
执行语句1
执行语句2
ELSEIF 条件语句2 THEN
执行语句3
执行语句4
(ELSEIF 条件语句3 THEN
执行语句5
执行语句6)
(ELSE
执行语句7)
END IF

--条件语句1为真(TRUE)时执行1~2。假时判断条件语句2,为真执行3~4,假时继续判断条件语句3。3为真时执行5~6,假时执行7。想要使用多个条件语句时使用该用法。
② FOR语句:处理逻辑时,想要反复处理多行的内容时使用。多用于重复次数固定的情况。
用法

FOR 变量=开始值TO结束值 (STEP 增减值)
执行语句1

执行语句 x
END FOR

Counter从4开始每执行一个循环后减少1。当Counter为-1时不再执行FOR语句。该例总共执行5个循环。
--Counter变量的初始值到结束值反复执行。指定值时按照指定值增加,未指定时默认为1。
STEP后不仅能用常数,也可用计算表达式。
例  
EXIT FOR: 强制终止FOR语句


③DO语句: 重复执行DO和LOOP之间的执行语句的命令。 使用WHILE和UNTIL,DO语句有4种形式。WHILE和UNTIL跟相反的条件语句。
用法

DO WHILE 条件语句
执行语句 1
执行语句 2

执行语句 x
LOOP

print 语句总共执行9次
--执行1~x前判断条件语句,为真时执行1~x。假时终止DO语句,执行LOOP后面的命令。
用法

DO
执行语句1
执行语句2

执行语句x
LOOP WHILE 条件语句

print 语句总共执行1次
--先执行1~x,后判断条件语句是否为真,为真时重新执行1~x。假时终止DO语句,执行LOOP后面的命令
用法

DO UNTIL 条件语句
执行语句1
执行语句2

执行语句x
LOOP

print 语句总共执行9次
--执行1~x前判断条件语句是否为真,真时执行1~x。假,终止DO语句,执行LOOP后面的命令。 用法

DO
执行语句1
执行语句2

执行语句x
LOOP UNTIL 条件语句

print 语句总共执行1次
--先执行1~x,后判断条件语句是否为真,为假时重新执行1~x,为真时终止DO语句,执行LOOP后面的命令
④SELECT语句:与使用IF语句处理条件语句时相似。使用SELECT可以让逻辑更加简单明了。条件语句和比较语句都既可使用变量也可使用表达式。
用法

SELECT CASE 条件语句
CASE 比较语句1
执行语句1
CASE 比较语句2
执行语句2

ELSE
执行语句x
END SELECT

--条件语句1的结果与比较语句相同时,执行比较语句1。与条件语句2相同则执行比较语句2。无相同比较语句时执行x。
比较语句的构成
比较语句利用“,”列出多个值,设定复数条件。 比较语句利用“TO”来指定初始值和最终值,确定条件范围。
【例】

--条件语句和比较语句都可使用变量或表达式。

⑤WITH语句:STage程序化交易系统独家提供的强大功能之一。能在以WITH和END WITH定义的区间内更改基础值的定义。
下面给出一个简单的应用WITH语句的例子
用法
一般情况
应用 WITH 语句
WITH 基础值
执行语句 1
执行语句 2

执行语句 x
END WITH


【WITH Data 例】

--上例是使用两个Data(合约品种)交易的逻辑。“High of Data2”是使用Data2的当日最高值的逻辑,“Buy of Data2 next bar at market”是以Data2的下一个Bar的Open价格发市价委托的指令。
我们可以用WITH语句更改上面的例子。

WITH语句可以更改WITH 后面如“High”等保留字段以及“Buy”这种委托指令的基本值。
在这里,虽然WITH语句的控制对象是Data2,但WITH语句内部的High of data和Data1.High等都不受WITH的影响而参照Data1的High值。
【WITH Data(X) 例】
上例中用WITH Data2 设定 Data2为基本值,但有时会根据情况不同而更灵活的调整Data的值。这时我们可以用如下指令。

如例,我们可将x的结果值(1~3)作为基本Data值。如x=1时,Data1为基本值。
除变量外我们还可利用函数,如“Data(f(x)+f(y))或“Data( (x+y)/z+x%3)”:
PLOT 函数
STage利用PLOT、PLOTBAR、PLOTPOINT、PLOTBASELINE等函数,将交易策略和技术指标中的逻辑显示在图表中。
①PLOT: 图表中画线的保留字段。如“PLOT1”和“PLOT2”, 在PLOT后面加入数字来区分不同的PLOT线。
--用法: PLOT1『位置调整』(值,“名称”,线条颜色,背景颜色,厚度)
位置调整是图表中画PLOT1时,在X轴上,正数时向左,负数时向右移动
画线的距离。除“值”外的其他项目可省略。
【例】

—例子将MAFC函数的结果值代入Value1变量,并利用Plot1函数将该值画到表中。
② PLOTBAR:在图表中画出Bar的保留字段。如,“PLOTBAR1”、“PLOTBAR2”在PLOTBAR后面加入数字以区分不同的Bar。
--用法1:PLOTBAR1[位置调整](最高值,最低值,“名称”,边框颜色,填充颜色,厚度)
--用法2:PLOTBAR2[位置调整](开盘值,最高值,最低值,收盘值,“名称”,边框颜色,填充颜色,厚度)
位置调整与PLOT相同,从“名称”开始的后面几个项目可以省略。
【例】

③ PLOTPOINT:图表中画点的工具。 “PLOTPOINT1”、“PLOTPOINT2”等加数字区分不同POINT。
用法:PLOTPOINT1 [位置调整] ( 位置, “名称”, 颜色, 厚度, 样式 ). 位置调整与PLOT相同。 位置项 目只能使用 Topside和 Bottomside 。 颜色、厚度、样式可以省略。
④ PLOTBASELINE:图表中画出与x轴平行的水平线时使用。“PLOTBASELINE1”、“PLOTBASELINE2”等区分不同BASELINE。
用法:PLOTBASELINE1 [位置调整] ( 值, “名称”, 颜色, 厚度 )。 位置调整与PLOT相同。颜色和厚度可以省略。
PLOT、PLOTBAR、PLOTPOINT、PLOTBASELINE可利用运算符更改或参照属性,也可调用PLOT内部函数。
① PLOT的可用属性
show
PLOT是否显示在当前BAR
color
PLOT在Bar中的颜色
② PLOTBAR的可用属性与PLOT相同
③ PLOTPOINT可用属性
setvalue
调用该函数时PLOTPOINT也在当前BAR中显示。 与重新调用PLOTPOINT相似。
④ PLOTBASELINE可用属性
applyscale
画图表时,自动调整区域中Y轴的大小
该值为False,调整Y轴时不加入PLOTBASELINE的值。.
show
PLOTBASELINE显示与否