EasyLanguage重要功能指令与语法解析Word文档下载推荐.docx
《EasyLanguage重要功能指令与语法解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EasyLanguage重要功能指令与语法解析Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
邏辑值变數的使用,如:
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.同时使用算术与比较运算符。
High[1]+(High[1]–Low[1])/2ThenBuyNextBaratMarket;
2.使用复合表达式
1
High[1]+High[1]–Low[1])/2;
IfCondition1ThenBuyNextBaratMarket;
其中,Condition变數可由Condition1~Condistion99,默认值为False。
3.使用邏辑运算符(AND,OR)
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);
High[1]+Range[1];
IfCondition1ThenBegin
BuyNextBaratMarket;
CountTheBuys=CountTheBuys+1;
End;
BarCount(0);
IfMarketPosition<
0ThenBeginBarCounter=BarCounter+1;
IfClose<
Close[1]ThenBegin
ExitLongNextBaratMarket;
ExitShortNextBaratMarket;
‰下单(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)买卖之理由,例如:
High[1]ThenBuy(“HigherClose”)atMarket;
IfVolumn>
Volumn[1]ThenBuy(“Volimnup”)100sharesatMarket;
OpenThenSell(“DownBar”)at48orLower;
藉此,也可指定要平仓的是对应什么进场条件,当同时存在多组操作信号时,就不会全
部平仓。
如:
「IfClose>
High[1]ThenBuy(“CloseUp”)NextBaratOpen;
」与以下卖出信号对应:
IfClose<
Low[1]ThenExitLongFromEntry(“CloseUp”)NextBaratMarket;
藉此,可让多组买卖信号同时存在。
至于部位结清部位,可使用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<
Low[1]ofData2ANDCloseofData2>
Close[1]ofData2;
IfCondition1ANDCondition2ThenBuyNextBaratMarket;
又如,透过以下语法调用特定资料來源的资料,
Value1=Average(Close,10)ofData2;
主要DataStream为Data1,Data2~Data50作为辅助DataStream。
‰进阶语法与资料型态
1.文字资料(TextValues)
MyString1(“”),MyString2(“”);
MyString1=“Aseriesofcharters”;
MyString2=“Kuas”;
MyString3=MyString1+MyString2;
又如,
MyText=“StockName:
”Print(MyText,GetSymbolName);
将可在MessageLog出现「StockName:
TTXN」。
2.「If…Then…Else」进阶程序结构例:
Close[1]Then
Buy20SharesatMarket;
Sell10SharesatMarket;
例:
High[1]ThenBegin
Value1=10;
Condition1=True;
End
ElseBegin
Value1=20;
Condition1=False;
6
3.进阶Loops结构
ForValue1=0To5Begin
Actions;
End;
MyValue(0);
ForMyValue=5DownTo1Begin
以下为「Average」Function:
{*******************************************************************Description:
SimpleMovingAverage
ProvidedBy:
OmegaResearch,Inc.(c)Copyright1999
********************************************************************}Inputs:
Price(NumericSeries),Length(NumericSimple);
Sum(0),Counter(0);
Sum=0;
Forcounter=0ToLength-1Begin
Sum=Sum+Price[counter];
IfLength>
0Then
Average=Sum/Length
Average=0;
4.「While…Begin」指令写一名为「_VolumeWeek」的Indicator:
DaysAgo(0),TotalVolume(0);
TotalVolume=Volume;
DaysAgo=1;
WhileDayOfWeek(Date)>
DayOfWeek(Date[DaysAgo])Begin
TotalVolume=TotalVolume+Volume[DaysAgo];
DaysAgo=DaysAgo+1;
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中选取名为「MovAvgCrossover」的策略,按下「Edit」按键,可打开「Strategy
Properties」(即策略属性)的窗口,可在不同分页夹中作相关设定。
图2「General」分页夹可以设定,策略名称(Name)、策略批注(Notes)、策略分析最大前置资料需求笔數(Maximumnumberofbarsstudywill)。
8
图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:
Price(Close),FastLen(9),SlowLen(18);
IfCurrentBar>
1ANDAverageFC(Price,FastLen)CrossesAboveAverageFC(Price,SlowLen)Then
Buy("
MAC"
)ThisBaronClose;
「TrailingStopLX」交易信号的程序代码如下:
TrailingStopLongExit
********************************************************************}
10
Length(3),ShowText(False);
Variables:
OrderPrice(0),StopText(0);
OrderPrice=LowestFC(Low,Length);
ExitLong("
Trl"
)NextBaratOrderPriceSt