程序化交易策略开发语言:EasyLanguage

一、TradeStation开发环境:TDE

1.进入开发环境

程序化交易策略开发语言:EasyLanguage_第1张图片

程序化交易策略开发语言:EasyLanguage_第2张图片

2.字典

  •  打开字典

程序化交易策略开发语言:EasyLanguage_第3张图片

  • 字典信息:包含了所有的预留单词和函数

程序化交易策略开发语言:EasyLanguage_第4张图片

3.输出栏

  •  输出栏在验证时会显示语法错误

4.语法着色器

  •  用于识别特定单词分类,如预留单词、函数、文本、和其他使用特定颜色设置的类型

5.默认属性设置

  •  用于设置已保存或新建的策略显示方式或元素计算的一般属性
  • 打开方式:(“文件”->“属性”)或(“右键”->“属性”)

程序化交易策略开发语言:EasyLanguage_第5张图片

二、EL语法

 1.基本语法

1.单词:一般分为5类

  • 预留单词(保留字):如Open、Close、Buy
  • 函数:由单词指定访问EL研究存储的公式(如:Average、RSI、Lowest)
  • 用户定义单词:用户在编写过程中创建的单词,可用于图形命名、输出、参数和变量名
  • 非执行单词:为了提高可读性,在执行中会被跳过(如:of、the、at)
  • 属性词:用于设置分析技术或策略的执行、计算规则(如:LegacyColorValue)

2.EL语法不区分大小写,但用户编写程序时,区分大小写的可读性较好

3.语句及表达式

  • 单词是所有语言的基本组成部分
  • 所有的EL语言工具和规则类似于英语口语的句式表达
  • 数值表达式:指向或计算出数值(如:Volume*2)
  • 逻辑表达式:比较两个数值,得出真/假结论(如:Close = Open)

4.程序的运算顺序

  • EL编辑的程序在运行时,从第一行到最后一行顺序运行
  • 需要先运行的公式必须放在前面

5.程序从图标的第一根K线计算到最后一根K线

  • TS以K线为基本单位,以图标上的Bars为分析基础
  • TS从上至下执行EL指令,从左至右逐个Bar处理,直到最大索引数(MaxBarBack)
  • MaxBarBack为所有引用历史数据的分析技术在计算之前需要设定的初始值,它限定最大的数据获取量,即在初次计算时引用的最多历史数据量

2.程序结构

  •  语句必须包括4个部分:定义部、赋值部、控制部、执行部
  • 程序4个部分的功能依次为:定义变量和参数->变量赋值->判断执行指令的条件->符合条件就执行指令

定义部:

  • 由计算机程序计算动态赋值,用“Var:”定义
  • 参数由人工外部输入,用“Input:”定义
  • 数组,用“Array:”定义

3.程序运算符

1.算数运算符

  • + - * /

2.关系运算符

  • 等于:“=”
  • 不等于:“<>”
  • <   >   <=   >=

3.逻辑运算符

  • and   or
  • 条件判断同时使用时,必须加括号

4.赋值运算符

  • =

5.标点符号与括号

  • “;”:单个语句结束
  • “,”:分隔项目
  • “()”:设置初始值
  • “  [ ]  ”:用于指向K线历史去数据,或替换图形,或用于从数组中提取数据
  • “  “ ”  ”:文本或标签
  • “:”:用于定义变量、参数
  • “  { }  ”:多行注释,大括号中间的语句不执行
  • “//   ”:单行注释

6.运算符的优先顺序

  • 括号 > 算术运算符 > 比较运算符、关系运算符 > 逻辑运算符 > 赋值运算符

4.数据信息

  • Open:K线开盘价
  • Close:K线收盘价
  • High:K线最高价
  • Low:K线最低价
  • Volume:K线交易量
  • Ticks:成交件数
  • Bids:委买量
  • Asks:委卖量
  • Date:K线的结束日期
  • Time:K线的结束时间

以下在分钟K线中使用

  • OpenD:日开盘价
  • CloseD:日收盘价
  • HighD:日最高价
  • LowD:日最低价
  • VolumeDay:日交易量

三、EL的参数和变量

        参数和变量是计算机程序计算时使用的一些数值。为了计算机运行时能够计算和保存这些数据,必须为其预留储存空间。因此,必须对所有参数和变量进行定义并赋值

1.参数

  • 参数:在程序运行前由人工输入的常数;
  • 在开发交易策略和技术指标等计算机程序时,必须在程序开始部分对参数进行定义并赋值;
  • 定义命令:"input:";
  • 参数名称可以用英文和中文,英文不区分大小写
  • 参数后面紧跟小括号“()”,其中的数据为对参数设置基准值
  • 分号结束定义语句,标点必须都为英文字符;
  • 参数名称中间不能用空格中断,但参数名称之间可以加空格;
  • 例:Input:PeriodSort(5),中期均线周期长度A(20),PeriodLong(60);

2.变量

  •  变量:由计算机程序根据赋值公式计算动态更新;
  • 定义命令包括:“Var、Vars、Variable、Variables”;
  • 输入变量的初始值:" () ";
  • 例:Var:MaSort(0),中期均线A(0),MaLong(0);
  • 变量类型数值型(只接收数值结果值)、逻辑型(只接收逻辑判断结果)、文字型(只接收字符串);
  • 三种变量的区分在于初始值,分别为(0)、(false)、("");
  • 运算符前后的变量类型要一致。

3.内置变量

  •  预先定义的可直接使用的变量
  • 数值型:var1~var99;
  • 逻辑型:conditiond1~conditiond99。

4.数值的前值引用

  •  以K线为基准,参考前值;
  • [0]可省略,C与C[0]是相同值;
  • 股票上升反转(先前是跌落,现在开始上升):C>C[1] and C[1]
  • 股票跌落反转(先前是上升,现在开始跌落):CC[2];
  • if C[1]<=MA5[1] and C>MA20 then buy();   在前K线股票小与5日移动平均线,在当前K线股票大于5日平均移动值就买入;
  • 分钟K线图上使用日K线的开盘价、最高价等,如果要得到前日值,用"(1)"标示,"[1]"为前一根K线的。

四、EL的控制语句

 1.if语句

  • if语句必须和then一起使用
  • then后面不打分号,在运行语句结束后打分号;
  • then后可跟一个组句:Begin   End
  • 其他语句用法:(if then ~ else)(if then ~ else if then ~ else)。

2.for语句

  •  用法:

        For  循环变量初值  to  循环变量终值

            Begin

            End;

  • 没有break语句,若要中途退出循环,可通过给循环变量赋终值实现。

3. while语句

  • 用法:

        While  条件

             Begin

             End;

五、EL的函数

  1.基本函数类型

  • 简单函数:只保存当前值,但也可以引用历史K线价格

        例:计算10条K线的平均收盘价格并赋值给value1  value1=Average(Close,10);

  • 系列函数:自动存储自身先前的值并在每条K线上执行,会在计算中引用先前的函数值

        例:将当前K线成交量添加到上一条K线的函数值,系列函数在每条K线上自动更新  VolTotal=VolTotal[1]+Volume;

  • 多输出函数:有些内置函数需要返回多个值,通过使用参数列表中的一个或多个输出参数实现;内置多输出函数对参数的命名通常以“o”开始,表明其是一个用于返回值的输出参数。

2.数学函数和分析函数

  •  数学函数:进行一般分析的函数;
  • 分析函数:编辑程序时用于比较分析的函数;
  • 保留字:在EL程序里面具有特定功能的一些单词。

3.下单指令

  • 下单指令:EL的下单功能是通过下单保留字(Buy买入多单开仓、SellShort卖出空单开仓、Sell多单平仓、BuytoCover空单平仓)及其相关语句来实现的;
  • Buy和SellShort作为新的开仓指令,但在开新仓之前将对其持有的相反仓位平仓,然后再开新仓;

用法:

  • Buy [开仓名]  [下单数量]  [下单方法]
  • SellShort  [开仓名]  [下单数量]  [下单方法]
  • Sell  [开仓名]  [from entry 开仓名] [数量 [Total]]  [下单方法]
  • BuytoCover [开仓名]  [from entry  开仓名]  [数量 [Total]]  [下单方法]
  • 交易名称区分大小写。

你可能感兴趣的:(程序化交易策略开发语言:EasyLanguage)