1、EasyLanguage重要功能指令与语法解析单元五 EasyLanguage 重要功能、指及语法解析本单元内容主要取材自 EasyLanguage 原版手册。 EasyLanguage 语法介绍EasyLanguage PowerEditor 可提供程序编辑、颜色管、语法检查、在线辅助、程序检 察与在线侦错等多功能的整合式程序开发环境;而 StrategyBuilder 用以结合多操作信号,形 成完整交策;透过 EasyLanguage 程序在 TradeStation 线图中扫描资,即可完成回测。交信号的基本语法由许多If (条件判断式) Then (交动)规则所组成,使用If-Then的
2、辑判断式处交线图上的回测,条件判断式可由算术、比较或辑运 算式组成,而交动用以作建部位,最简单的交动如 Buy/Sell。如,If Close High1 Then Buy Next Bar at Market;(或简写为If C H1 Then Buy可形成(If)今日收盘(C)大于()昨日最高价(H1),则(Then)买(Buy)在当日收盘。本单元将详细介绍 EasyLanguage 的语法,包括以下主题:运算符(算术、辑)与复合 表达式、值变与自定变宣告、动态输入、内置函、区块指、买卖命种、多资策、客制函、环境条件与触发条件之运用、相关辅助系统的使用等。关于变(先讲知道,除非默认变)常用
3、变包括辑值(True/False)与值(Numeric)变。辑值变可用 ConditionN (N=1.99)储存;值变可用 ValueN (N=1.99,默认值为0)储存。值变的使用,如:Value1 = (High1 Low1)/2; Close High1 Value1;辑值变的使用,如:Condition1 = Close High1 + (High1 Low1) / 2; Condition2 = Volume Volume1 * 1.5;If Condition1 And Condition2 Then Buy Next Bar at Market; Value1 = (High1
4、 Low 1) / 2;Variables 则可以同时储存辑值与值,需做变宣告同时可做起始值设定,如:Variables: PreBarRange (0); PreBarRange = High1 Low1If Close High1 + PreBarRange/2 Then Buy Next Bar at Market; Y=f(x)算术、比较与辑运算符与复合表达式1. 同时使用算术与比较运算符。If Close High1 + (High1 Low1)/2 Then Buy Next Bar at Market;2. 使用复合表达式1Condition1 = Close High1 + H
5、igh1 Low1)/2; If Condition1 Then Buy Next Bar at Market;其中,Condition 变可由 Condition1Condistion99,默认值为 False。3. 使用辑运算符(AND, OR)Condition1 = Close High1 + High1 Low1)/2; Condition2 = Volumn Volumn1 * 1.5;If Condition1 AND Condition2 Then Buy Next Bar at Market;内置函使用(在哪找?程序代码是么?)EasyLanguage 中包含大内置函用于建技
6、术分析指标,如:Value1 = Highest(Close, 5);可取得最近 5 天收盘最高。又如:If Average(Close, 9) Crosses Over Average(Close, 18) Then Buy Next Bar at Market;函亦可于执时才取得输入(动态输入),如:Inputs: FastLen(9), SlowLen(18);If Average(Close, FastLen) Crosses Over Average(Close, SlowLen) Then Buy Next Bar atMarket;使用 Input 指可以藉由接口改变,并做优化。
7、多前提条件(Conditions)与多执动(Actions)的处(也可藉由多 Signal 组合)当买卖条件与其指众多时,可使用区块指(BeginEnd),如:Variable: CountTheBuy (0);Condition1 = Close High1 + Range1; If Condition1 Then BeginBuy Next Bar at Market; CountTheBuys = CountTheBuys +1;End;又如:Variable: BarCount (0);If MarketPosition 0 Then Begin BarCounter = BarCou
8、nter + 1; If Close =45则 Buy Stop。If Condition1 Then Sell at 68 or Higher;表=68则 Sell Limit。Or Lower,用于 Buy-Limit 与 Sell-Stop,:If Condition1 Then Buy at 33 or Lower;表=33则 Buy Limit。If Condition1 Then Sell at 42 or Lower;表=42则 Sell Stop。买进卖出可指定点,分为 Point(为最小增减,Minimum movement,在 EasyLanguage 中股票以 0.001
9、 之为 point)与 Big Points(期货选择权使用之,在在 EasyLanguage 中最小 跳动单位对应的价值衡),如:If Condition1 Then Buy Next Bar at High + 1 point or Higher;If Condition1 Then Buy Next Bar at High + 1 Stop; (写默认为 Big Point)也可指定(Quantity),如:If Condition1 Then Sell 100 Shares at 66 or Higher;If Condition1 Then Buy 12 Contracts Next
10、 Bar at Market;MarketPosition 用以确认市场部位况,1,-1,0 分别表示买进、卖出或无部位。可藉由继 续加仓或续减仓(pyramiding),分批进出,做资管。前提(Setup)条件与进场(Entry)条件交条件之执可分为环境设定(Set-up)与触发(Entry),Set-up 用以确认触发的前提条 件,但并实际触发动;可以 Setup 条件评估市况,再由 Entry 实际下单。通常会以一个 Set-upAND结多个以OR结的 Entry 信号,如:If FastAvg Crosses Above SlowAvg AND Close Open Then Buy
11、Next Bar at Market;前面为 Setup 条件,后者为 Entry 条件。进场信号(Entry Signal)与场信号(Exit Signal)最基本的交策应该包含进场策以及停加上止损的策;部位结清条件可能为:出场条件满足、止盈、止损或市场过震荡。建部位方式可藉由 Buy 与 Sell。Buy 与 Sell 分别建多头与空头策,无如何均会 建部位,而非只是平仓而已,因此能在同一个 Bar 中又 Sell 又 Buy。3在 Buy 与 Sell 动作被驱动时,可以在图形上加上文字卷标,欲在图上标注(Buy/Sell)买卖 之由,如:If Close High1 Then Buy(
12、“Higher Close”) at Market;If Volumn Volumn1 Then Buy(“Volimn up”) 100 shares at Market; If Close High1 Then Buy(“CloseUp”) Next Bar at Open;与以下卖出信号 对应:If Close Open;If CloseUp1 AND CloseUp2 AND CloseUp3 Then Buy Next Bar at Market;但如果要弹性的设定天,可以写自建函,程序为以菜单FileNew在图 1 窗口 中选择General分页夹,选择Function,按Ok键,
13、即可带出图 2 窗口,给予自建 函一个名称 Name(如,_CloseUps),并设定函输出资型态为TrueFalse,按Ok 键,即可进入自建程序编辑窗口。Y=f(x)在程序编辑窗口中输入以下程序代码:Input: Length(Numeric);If CountIf (CloseOpen, Length) = Length Then_CloseUps = TrueElse_CloseUps = False;4图 1图 2Verify(F3 按键)无误后,即可使用。如,写一个 Signal 程序如下(命名为_CloseOpen):If _CloseUps(3) Then Buy Next B
14、ar at Market;Verify(F3 按键)无误后,进入 StrategyBuilder 建一名为_UpTrend 的操作策,此 策以_CloseOpen信号作为多头部位进场条件,再选择Fixed Bar Exit为多头部位出 场条件。最后,进入 TradeStation 中,选取分析线图后,調用此策进分析,即可完成,如图 3所示。图 35調用多资(Multi-data)源的交策(在哪设定资序号)交的执可能考一个以上的资源,如某股票(Data1)买卖依据指(Data2)相对 决定,语法如下:Condition1 = Close of Data1 Close1 of Data1;Cond
15、ition2 = Low of Data2 Close1 of Data2; If Condition1 AND Condition2 Then Buy Next Bar at Market;又如,透过以下语法调用特定资源的资,Value1 = Average(Close, 10) of Data2;主要 Data Stream 为 Data1,Data2Data50 作为辅助 Data Stream。进阶语法与资型态1. 文字资(Text Values)Variables: MyString1(“”), MyString2(“”); MyString1 = “A series of char
16、ters”; MyString2 = “Kuas”;MyString3 = MyString1 + MyString2;又如,MyText = “Stock Name:” Print(MyText, GetSymbolName);将可在 MessageLog 出现Stock Name:TTXN。2. IfThenElse进阶程序结构 :If Close Close1 ThenBuy 20 Shares at Market;ElseSell 10 Shares at Market;End;:If Close High1 Then BeginValue1 = 10; Condition1 = Tr
17、ue;EndElse BeginValue1 = 20; Condition1 = False;End;63. 进阶 Loops 结构For Value1 = 0 To 5 BeginActions; End;Variable: MyValue(0);For MyValue = 5 DownTo 1 BeginActions; End;以下为AverageFunction:* Description: Simple Moving AverageProvided By: Omega Research, Inc. (c) Copyright 1999* Inputs: Price(NumericS
18、eries), Length(NumericSimple);Variables: Sum(0), Counter(0); Sum = 0;For counter = 0 To Length - 1 BeginSum = Sum + Pricecounter; End;If Length 0 ThenAverage = Sum / LengthElseAverage = 0;4. WhileBegin指 写一名为_VolumeWeek的 Indicator:Variable: DaysAgo(0), TotalVolume(0); TotalVolume = Volume;DaysAgo = 1
19、;While DayOfWeek(Date) DayOfWeek(DateDaysAgo) BeginTotalVolume = TotalVolume + VolumeDaysAgo; DaysAgo = DaysAgo + 1;End; Plot1(TotalVolume);Date 保字用以传回目前的 Bar 的日期,如 1999/01/07,则传回 990107(在 2000 后,如 2001/3/4,传回 1010304)。5. 数组(Arrays)变 如:Array: Prices3(0);宣告名为 Prices 的阵变,包含 3 个 Element,初值均为 0。值的设定如下:7
20、Prices1 = 100; Prices2 = 200; Prices3 = 300;Array 常用以储存同 Bars 的值,Close、Volume 等亦为 Array。策解析举(还可再找RSI Oscillator、TrendLines Automatic)藉由 EasyLanguage 语言可以设计交信号,组合交信号则形成交策,以下以Mov Avg Crossover策为,解析策的组成。此策以黄交叉建多头部位,以 3 日(预 设值,可改亦可优化)追踪止损结清多头部位,其为系统内置的策,透过现成策的 解析,可以学习 EazyLanguage 的语法。欲打开交策,可透过菜单Go Trad
21、eStation StrategyBuilder的操作(即进入 TradeStation 的 StrategyBuilder),打开如图 1 的窗口。图 1在图 1 中选取名为Mov Avg Crossover的策,按下Edit按键,可打开StrategyProperties(即策属性)的窗口,可在同分页夹中作相关设定。图 2图 2General分页夹可以设定,策名称(Name)、策批注(Notes)、策分析最大前 置资需求笔(Maximum number of bars study will)。8图 3图 3General分页夹可以观察策系由哪些交信号组成,同信号提供的交动 (Long En
22、try、Long Exit、Short Entry、Short Exit 等四种)设定,在此透过Add按键,亦 可继续增减策的信号组成,使用Remove按键,可移除既有的操作信号。图 4图 4General分页夹可以观察组合策的交信号包含哪些输入(Input)参数,并可做 动。图 5图 5General分页夹可以设定是否可以允许在现有部位继续加仓(默认为可),设定 为可继续加仓(选取图 5 的检核框),则可继续设定是否允许在同一交信号启动的部位上加码,或只允许在同交信号启动的部位上加仓。9图 6图 6General分页夹可以设定最多未结清部位以及每一部位最大合约。由图 3 可知,此交策系由MA
23、 Bullish Crossover与Trailing Stop LX交 信号(Signal)组成,欲解这个信号的 EasyLanguage 原始码,可回到 EasyLanguage PowerBuilder 中,使用菜单FileOpen操作打开图 7 的窗口,下选取Signal别。 分别找到此 Signal 档案,以Open按键打开,即可看到源文件。图 7MA Bullish Crossover交信号的程序代码如下:* Description : Moving Average Crossover (2 Line) Long EntryProvided By : Omega Research,
24、 Inc. (c) Copyright 1999* Inputs: Price(Close), FastLen(9), SlowLen(18);If CurrentBar 1 AND AverageFC(Price, FastLen) Crosses Above AverageFC(Price, SlowLen) ThenBuy (MAC) This Bar on Close;Trailing Stop LX交信号的程序代码如下:* Description : Trailing Stop Long ExitProvided By : Omega Research, Inc. (c) Copyright 1999*10Inputs: Length(3), ShowText(False); Variables: OrderPrice(0), StopText(0); OrderPrice = LowestFC(Low, Length);ExitLong (Trl) Next Bar at OrderPrice St
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1