关于保留字 和其他语言一样,在 EasyLanguage 中,字具有含义并能按照某些类型的语法结构组合成语句。标点符号用于表示每个语句的结尾和分隔每个语句中的短语。EasyLanguage 的基本词汇由一系列保留字组成,每个保留字都有一个特定的目的,如比较和求表达式的值,指定显示或交易动作,以及引用值。 价格数据评估价格数据的功能是 EasyLanguage 最重要的元素之一。因此,EasyLanguage 中存在大量保留字,用来引用每个图条中可用的价格数据。字通常与相同值的常见交易术语匹配,如 Open、High、Low、Close 或 Volume。下表列出了一些最常用的价格数据值: 数据字 | 缩写 | 描述 | 开盘价 | O | 图条的第一个可用价格 | High | H | 图条内的最高价格 | Low | L | 图条内的最低价格 | 收盘价 | C | 图条的最后可用价格 | 日期 | D | 图条内最后一次交易的日期 | 时间 | T | 图条内最后一次交易的时间(24 小时格式) | Volume | V | 图条内交易的总量 | 未平仓合约 | I | (Open Interest) 未平仓合约总数 |
例如,保留字 Close 指的是 EasyLanguage 程序当前正在评估的图条的收盘价格。记住:EasyLanguage 程序应用于图表中从左到右的每一个图条,“当前图条”始终是正在运行用户程序的图条。如果用户程序在日线图的第 7 个图条上运行,保留字 High 包含所绘代码第 7 天交易的最高价格。 因为很少会只根据一个图条的价格信息做出交易决策,在适当的保留字后简单地添加短语“of N bars ago”,EasyLanguage 使获取当前图条之前任意图条的价格数据变得容易。 例如,EasyLanguage 表达式“Low of 1 bar ago”指的是前一个图条(相对于 EasyLanguage 当前正在评估的图条)的最低价格。在类似的例子中,如果 EasyLanguage 程序正在用户图表的第 12 个图条上运行,那么表达式“Volume of 3 bars ago”指绘图代码第 9 个图条或当前图条倒数第 3 个图条的交易量。引用以前图条的数据的另一个方法是在保留字后使用方括号“[N]” – 比如,Open[2] 指的是 2 个图条之前的开盘价格。 为了保持分析包含成百上千个图条的图表时的效率,EasyLanguage 包含一个叫做 MaxBarsBack 的设置,用于确定 EasyLanguage 程序可以引用多少个图条以前的价格数据。 例如,如果用户编写一个使用了 14 个图条移动平均的 EasyLanguage 程序,那么用户程序需要至少 14 个图条的数据来执行计算。将 MaxBarsBack 设为 14,在这种情况下,用户程序会等待直到通过 14 个图条(从左至右)以确保具有足够的数据用于计算当前图条的 14 个图条移动平均。EasyLanguage 会对图表中其他图条执行同样的操作。 规则是 MaxBarsBack 必须大于或等于执行分析所需的最大值。例如,如果用户计算基于 60 天价格数据的指数,那么需要将 MaxBarsBack 设置为 60 或更大。 为了使开发人员和最终用户的工作更容易,大多数 EasyLanguage 分析技术自动计算 MaxBarsBack 值。这可以通过选择“设置[分析技术]”对话框“常规”选项卡中的“分析将参考的最大图条数”标题下的“自动检测”选项来完成。在自动检测模式下,EasyLanguage 评估用户程序中的所有数据引用并自动将最优值设为 MaxBarsBack。更多信息,请在TradeStation 帮助中搜索“最大图条数”短语。 语句执行比较、执行相关动作以及控制其他程序操作的 EasyLanguage 保留字称作语句。 其中包括 Plot、If-Then 结构和变量声明语句等。和英语里一句话表示一个完整的意思一样,一个 EasyLanguage 语句表示一个完整的指令,会产生某些程序操作。 例如,下列语句用于声明一个变量以及有条件地执行两个额外语句,计算并绘制 10 图条收盘价 (Close) 的平均值: Var: MovAvg(0);
if (CurrentBar > 10) then begin MovAvg = Average(Close,10); Plot1(MovAvg); end; 下面是常用 EasyLanguage 语句的列表。
语句 | Action | plot1-99 | 在图表或网格上绘制一条线、一个标记或文本。 | if-then | 在 if 条件为真时,执行一个或多个语句 | else | 在前一个条件非真时,执行 else 后的一个或多个语句 | begin | 指定有条件执行语句块的开始 | end | 指定语句块的结束 | for-then | 在循环中使用计数器变量执行一个或多个语句 | while | 当一个条件为真时在循环中执行一个或多个语句 | variable | 为一个或多个用户定义变量声明一个初始值 | input | 声明特定类型的一个或多个输入值以及使用默认值 | array | 声明一个或多个数组变量以包含指定数量的具有默认值的单元 | print | 发送输出至打印日志 | commentary | 发送输出至注释窗口 | breakpoint | 暂停 EasyLanguage 的执行并显示调试器 |
非执行语句为了使 EasyLanguage 更接近英语,需要使用另一组叫做非执行语句的保留字。这些可选字,比如 the、at、on 和 from,可以在语句或表达式中使用。 例如,下文: if Close > High[1] then Buy next bar at market; 也可以用省略子编写以使其更加易读: if the Close > the High of 1 bar ago then Buy on the next bar at the market; 请注意:非执行语句使 EasyLanguage 指令易读的同时,在实际程序中不执行任何操作。也就是说,运行程序时会忽略非执行语句。是否使用非执行语句只是个人偏好问题。下面是一个非执行语句列表:
a | by | of | the | an | does | on | was | at | from | place |
| based | is | than |
|
|