EasyLanguage重要功能指令与语法解析.docx
- 文档编号:7058948
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:14
- 大小:202.72KB
EasyLanguage重要功能指令与语法解析.docx
《EasyLanguage重要功能指令与语法解析.docx》由会员分享,可在线阅读,更多相关《EasyLanguage重要功能指令与语法解析.docx(14页珍藏版)》请在冰豆网上搜索。
EasyLanguage重要功能指令与语法解析
单元五EasyLanguage重要功能、指令及语法解析
本单元内容主要取材自EasyLanguage原版手册。
‰EasyLanguage语法介绍
EasyLanguagePowerEditor可提供程序编辑、颜色管理、语法检查、在线辅助、程序检察与在线侦错等多功能的整合式程序开发环境;而StrategyBuilder用以结合多操作信号,形成完整交易策略;透过EasyLanguage程序「在TradeStation线图中扫描资料」,即可完成回
测。
交易信号的基本语法由许多「If(条件判断式)Then(交易行动)」规则所组成,使用
「If-Then」的邏辑判断式处理交易线图上的回测,「条件判断式」可由算术、比较或邏辑运算式组成,而「交易行动」用以作建立部位,最简单的交易行动如Buy/Sell。
例如,「IfClose
>High[1]ThenBuyNextBaratMarket;」(或简写为「IfC>H[1]ThenBuy」可形成「若(If)
今日收盘(C)大于(>)昨日最高价(H[1]),则(Then)买(Buy)在当日收盘」。
本单元将详细介绍EasyLanguage的语法,包括以下主题:
运算符(算术、邏辑)与复合表达式、數值变數与自定变數宣告、动态參數输入、内置函數、区块指令、买卖命令种類、
多资料策略、客制函數、环境条件与触发条件之运用、相关辅助系统的使用等。
‰关于变數(不先讲不知道,除非默认变數…)
常用变數包括邏辑值(True/False)与數值(Numeric)变數。
邏辑值变數可用ConditionN(N=1..99)储存;數值变數可用ValueN(N=1..99,默认值为
0))储存。
數值变數的使用,如:
Value1=(High[1]–Low[1])/2;Close>High[1]–Value1;
邏辑值变數的使用,如:
Condition1=Close>High[1]+(High[1]–Low[1])/2;Condition2=Volume>Volume[1]*1.5;
IfCondition1AndCondition2ThenBuyNextBaratMarket;Value1=(High[1]–Low[1])/2;
Variables则可以同时储存邏辑值与數值,需做变數宣告同时可做起始值设定,如:
Variables:
PreBarRange(0);PreBarRange=High[1]–Low[1]
IfClose>High[1]+PreBarRange/2ThenBuyNextBaratMarket;Y=f(x)
‰算术、比较与邏辑运算符与复合表达式
1.同时使用算术与比较运算符。
IfClose>High[1]+(High[1]–Low[1])/2ThenBuyNextBaratMarket;
2.使用复合表达式
1
Condition1=Close>High[1]+High[1]–Low[1])/2;IfCondition1ThenBuyNextBaratMarket;
其中,Condition变數可由Condition1~Condistion99,默认值为False。
3.使用邏辑运算符(AND,OR)
Condition1=Close>High[1]+High[1]–Low[1])/2;Condition2=Volumn>Volumn[1]*1.5;
IfCondition1ANDCondition2ThenBuyNextBaratMarket;
‰内置函數使用(在哪裡找?
程序代码是什么?
)
EasyLanguage中包含大量内置函數用于建立技术分析指标,例如:
「Value1=Highest(Close,5);」可取得最近5天收盘最高。
又如:
IfAverage(Close,9)CrossesOverAverage(Close,18)ThenBuyNextBaratMarket;
函數亦可于执行时才取得參數输入(动态输入),例如:
Inputs:
FastLen(9),SlowLen(18);
IfAverage(Close,FastLen)CrossesOverAverage(Close,SlowLen)ThenBuyNextBarat
Market;
使用Input指令可以藉由接口改变參數,并做參數优化。
‰多前提条件(Conditions)与多执行行动(Actions)的处理(也可藉由多Signal组合)
当买卖条件与其指令众多时,可使用区块指令(Begin…End),如:
Variable:
CountTheBuy(0);
Condition1=Close>High[1]+Range[1];IfCondition1ThenBegin
BuyNextBaratMarket;CountTheBuys=CountTheBuys+1;
End;
又如:
Variable:
BarCount(0);
IfMarketPosition<>0ThenBeginBarCounter=BarCounter+1;IfClose ExitLongNextBaratMarket;ExitShortNextBaratMarket; End; End; ‰下单(Orders)种類(何时、何价、何量) Buy建立多头部位;Sell建立空头部位;ExitLong结清多头部位;ExitShort结清空头部位。 2 买卖可在当日收盘或隔日开盘,分别如: IfCondition1ThenBuy;与IfCondition1ThenBuyThisBaronClose; 相同,均为当日。 IfCondition1ThenSellatMarket; 则以隔日开盘价交易。 此外,OrHigher,用于Buy-Stop与Sell-Limit,例: IfCondition1ThenBuyat45orHigher; 表「>=45」则BuyStop。 IfCondition1ThenSellat68orHigher; 表「>=68」则SellLimit。 OrLower,用于Buy-Limit与Sell-Stop,例: IfCondition1ThenBuyat33orLower; 表「>=33」则BuyLimit。 IfCondition1ThenSellat42orLower; 表「>=42」则SellStop。 买进卖出可指定点數,分为Point(为最小增减量,Minimummovement,在EasyLanguage中股票以0.001之便量为point)与BigPoints(期货选择权使用之,在在EasyLanguage中最小跳动单位对应的价值衡量),如: IfCondition1ThenBuyNextBaratHigh+1pointorHigher; IfCondition1ThenBuyNextBaratHigh+1Stop;(不写默认为BigPoint) 也可指定量(Quantity),如: IfCondition1ThenSell100Sharesat66orHigher; IfCondition1ThenBuy12ContractsNextBaratMarket; MarketPosition用以确认市场部位狀况,1,-1,0分别表示买进、卖出或无部位。 可藉由继续加仓或連续减仓(pyramiding),分批进出,做资金管理。 ‰前提(Setup)条件与进场(Entry)条件 交易条件之执行可分为环境设定(Set-up)与触发(Entry),Set-up用以确认触发的前提条件,但并不实际触发行动;可以Setup条件评估市况,再由Entry实际下单。 通常会以一个Set-up「AND」連结多个以「OR」連结的Entry信号,如: IfFastAvgCrossesAboveSlowAvgANDClose>OpenThenBuyNextBaratMarket; 前面为Setup条件,后者为Entry条件。 ‰进场信号(EntrySignal)与離场信号(ExitSignal) 最基本的交易策略应该包含进场策略以及停利加上止损的策略;部位结清条件可能为: 「出场条件满足」、「止盈」、「止损」或「市场过度震荡」。 建立部位方式可藉由Buy与Sell。 Buy与Sell分别建立多头与空头策略,无論如何均会建立部位,而非只是平仓而已,因此不能在同一个Bar中又Sell又Buy。 3 在Buy与Sell动作被驱动时,可以在图形上加上文字卷标,欲在图上标注(Buy/Sell)买卖之理由,例如: IfClose>High[1]ThenBuy(“HigherClose”)atMarket; IfVolumn>Volumn[1]ThenBuy(“Volimnup”)100sharesatMarket;IfClose 藉此,也可指定要平仓的是对应什么进场条件,当同时存在多组操作信号时,就不会全 部平仓。 如: 「IfClose>High[1]ThenBuy(“CloseUp”)NextBaratOpen;」与以下卖出信号对应: IfClose 藉此,可让多组买卖信号同时存在。 至于部位结清部位,可使用ExitLong与ExitShort分别结清多头部位与空头部位。 出场信号范例如下: IfCondition1ThenExitLongThisBaronClose; IfCondition1ThenExitShortNextBaratMarket; 以上作法将结清所有多头或空头部位,但由于在交易过程可能陸续建立多次买进部位 (OpenOrder),而每次买进部位又交易多个单位(Contracts或Shares),例如3次交易,每次各建立5个Contracts,则可用「IfCondition1ThenExitLong2Constracts;」语法,将会让3次交易各剩下3(5-2)个Contracts;而「IfCondition1ThenExitLong2ConstractsTotal;」语法,将只会结清第一次交易的2个Contracts;亦即,第一次交易剩下3个Contracts,而其他兩次交易剩下5个Contracts。 ‰自定义函數(CustomFunction) EasyLanguage中包含大量内置函數,使用者也可自定义函數。 当使用者希望撰写一个判断是否連续3天上涨的程序,可以写成: Variable: CloseUp(False);CloseUp=Close>Open; IfCloseUp[1]ANDCloseUp[2]ANDCloseUp[3]ThenBuyNextBaratMarket; 但如果要弹性的设定天數,可以写自建函數,程序为以菜单「File¾New」在图1窗口中选择「General」分页夹,选择「Function」,按「Ok」键,即可带出图2窗口,给予自建函數一个名称Name(如,_CloseUps),并设定函數输出资料型态为「TrueFalse」,按「Ok」键,即可进入自建程序编辑窗口。 Y=f(x) 在程序编辑窗口中输入以下程序代码: Input: Length(Numeric); IfCountIf(Close>Open,Length)=LengthThen _CloseUps=True Else _CloseUps=False; 4 图1 图2 「Verify」(F3按键)无误后,即可使用。 例如,写一个Signal程序如下(命名为 「_CloseOpen」): If_CloseUps(3)ThenBuyNextBaratMarket; 「Verify」(F3按键)无误后,进入StrategyBuilder建立一名为_UpTrend的操作策略,此策略以「_CloseOpen」信号作为多头部位进场条件,再选择「FixedBarExit」为多头部位出场条件。 最后,进入TradeStation中,选取分析线图后,調用此策略进行分析,即可完成,如图3 所示。 图3 5 ‰調用多资料(Multi-data)來源的交易策略(在哪裡设定资料序号) 交易的执行可能參考一个以上的资料來源,例如某股票(Data1)买卖依据指數(Data2)相对决定,语法如下: Condition1=CloseofData1>Close[1]ofData1; Condition2=LowofData2 又如,透过以下语法调用特定资料來源的资料, Value1=Average(Close,10)ofData2; 主要DataStream为Data1,Data2~Data50作为辅助DataStream。 ‰进阶语法与资料型态 1.文字资料(TextValues) Variables: MyString1(“”),MyString2(“”);MyString1=“Aseriesofcharters”;MyString2=“Kuas”; MyString3=MyString1+MyString2; 又如, MyText=“StockName: ”Print(MyText,GetSymbolName); 将可在MessageLog出现「StockName: TTXN」。 2.「If…Then…Else」进阶程序结构例: IfClose>Close[1]Then Buy20SharesatMarket; Else Sell10SharesatMarket; End; 例: IfClose>High[1]ThenBegin Value1=10;Condition1=True; End ElseBegin Value1=20;Condition1=False; End; 6 3.进阶Loops结构 ForValue1=0To5Begin Actions;End; Variable: MyValue(0); ForMyValue=5DownTo1Begin Actions;End; 以下为「Average」Function: {*******************************************************************Description: SimpleMovingAverage ProvidedBy: OmegaResearch,Inc.(c)Copyright1999 ********************************************************************}Inputs: Price(NumericSeries),Length(NumericSimple); Variables: Sum(0),Counter(0);Sum=0; Forcounter=0ToLength-1Begin Sum=Sum+Price[counter];End; IfLength>0Then Average=Sum/Length Else Average=0; 4.「While…Begin」指令写一名为「_VolumeWeek」的Indicator: Variable: DaysAgo(0),TotalVolume(0);TotalVolume=Volume; DaysAgo=1; WhileDayOfWeek(Date)>DayOfWeek(Date[DaysAgo])Begin TotalVolume=TotalVolume+Volume[DaysAgo];DaysAgo=DaysAgo+1; End;Plot1(TotalVolume); Date保留字用以传回目前的Bar的日期,例如1999/01/07,则传回990107(若在2000年 后,例如2001/3/4,传回1010304)。 5.数组(Arrays)变數例如: Array: Prices[3](0); 宣告名为Prices的阵列变數,包含3个Element,初值均为0。 值的设定如下: 7 Prices[1]=100;Prices[2]=200;Prices[3]=300; Array常用以储存不同Bars的值,Close、Volume等亦为Array。 ‰策略解析举例(还可再找「RSIOscillator」、「TrendLinesAutomatic」) 藉由EasyLanguage语言可以设计交易信号,组合交易信号则形成交易策略,以下以「MovAvgCrossover」策略为例,解析策略的组成。 此策略以「黄金交叉建立多头部位,以3日(预设值,可更改亦可优化)追踪止损结清多头部位」,其为系统内置的策略,透过现成策略的解析,可以学习EazyLanguage的语法。 欲打开交易策略,可透过菜单「Go¾TradeStationStrategyBuilder」的操作(即进入TradeStation的StrategyBuilder),打开如图1的窗口。 图1 在图1中选取名为「MovAvgCrossover」的策略,按下「Edit」按键,可打开「Strategy Properties」(即策略属性)的窗口,可在不同分页夹中作相关设定。 图2 图2「General」分页夹可以设定,策略名称(Name)、策略批注(Notes)、策略分析最大前置资料需求笔數(Maximumnumberofbarsstudywill)。 8 图3 图3「General」分页夹可以观察策略系由哪些交易信号组成,不同信号提供的交易行动(LongEntry、LongExit、ShortEntry、ShortExit等四种)设定,在此透过「Add」按键,亦可继续增减策略的信号组成,使用「Remove」按键,可移除既有的操作信号。 图4 图4「General」分页夹可以观察组合策略的交易信号包含哪些输入(Input)参数,并可做更动。 图5 图5「General」分页夹可以设定是否可以允许在现有部位继续加仓(默认为不可),若设定为可继续加仓(选取图5的检核框),则可继续设定是否允许在同一交易信号启动的部位上加 码,或只允许在不同交易信号启动的部位上加仓。 9 ` 图6 图6「General」分页夹可以设定最多未结清部位數以及每一部位最大合约數。 由图3可知,此交易策略系由「MABullishCrossover」与「TrailingStopLX」兩交易信号(Signal)组成,欲了解这兩个信号的EasyLanguage原始码,可回到EasyLanguagePowerBuilder中,使用菜单「File¾Open」操作打开图7的窗口,下拉选取「Signal」類别。 分别找到此兩Signal档案,以「Open」按键打开,即可看到源文件。 图7 「MABullishCrossover」交易信号的程序代码如下: {*******************************************************************Description: MovingAverageCrossover(2Line)LongEntry ProvidedBy: OmegaResearch,Inc.(c)Copyright1999 ********************************************************************}Inputs: Price(Close),FastLen(9),SlowLen(18); IfCurrentBar>1ANDAverageFC(Price,FastLen)CrossesAboveAverageFC(Price,SlowLen)Then Buy("MAC")ThisBaronClose; 「TrailingStopLX」交易信号的程序代码如下: {*******************************************************************Description: TrailingStopLongExit ProvidedBy: OmegaResearch,Inc.(c)Copyright1999 ********************************************************************} 10 Inputs: Length(3),ShowText(False);Variables: OrderPrice(0),StopText(0);OrderPrice=LowestFC(Low,Length); ExitLong("Trl")NextBaratOrderPriceSt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EasyLanguage 重要 功能 指令 语法 解析