
实例讲解EasyLanguage入门33页.doc
33页KnowHowEasyLanguagePowerEditor简介OmegaResearchTradeStation系列产品是交易者公认最好用的交易工具整合环境你不只可以拿它来看盘,使用它内建的诸多技术指针协助分析交易,你也可以自行开发属意的指标,只要你想的到的最重要的你可以用它来开发交易系统协助你进入机械化交易的世界把交易构想付之实现并量化,你可以给自己交易最重要的东西──信心!这个开发并实现交易梦想的核心就存在它内含的EasyLanguagePowerEditor当中它不是一般点选内建指针,再加一些逻辑运算选项的阳春交易系统设计平台它是透过一个类似Pascal语法的所谓EasyLanguage来书写你的程序代码,然后透过内部的编译器产生执行效率高的机码(这就是让它屹立不摇的卖点)甚至连它的竞争者如Equis的MetaStock等多年来也只能不敢吭声的当老二虽然它名为「容易语言」,可是对许多没有程序语言经验的人来说它还真是宛如火星语一般的叫人直呼「不容易」特别对我们这些非英语系的地区又多一曾障碍可称为最高级的「真不容易」你的英语能力我没办法帮你改善的,至于EasyLanguage我可以助你一臂之力!不过你的计算机概念我也无能为力,基本上你还是要靠你自修加强,如果还是拿过去的理由让自己逃避,那省点事就干脆不要交易了吧!因为你放弃的是一条通往成功交易的不二法门,那就「学海无涯、回头是岸」吧。
以下所附的几则程序代码是未来全文所拿来探讨的样本,你可以节录列以便对照文章内的解说达事半功倍之效对了、这些程序你都可以在你的PowerEditor找到,因为这些都是TS2000i所内建的MACD指标:{*******************************************************************Description :ThisIndicatorplotsMACDProvidedBy :OmegaResearch,Inc.(c)Copyright1999********************************************************************}Inputs:FastMA(12),SlowMA(26),MacdMA(9);Plot1(MACD(Close,FastMA,SlowMA),"MACD");Plot2(XAverage(MACD(Close,FastMA,SlowMA),MacdMA),"MACDAvg");Plot3(Plot1-Plot2,"MADiff");{AlertCriteria}IfPlot3CrossesOver0Then Alert("MACDhasgeneratedabullishalert")Else IfPlot3crossesunder0Then Alert("MACDhasgeneratedabearishalert");{MACDExpertCommentary}#BeginCmtry Commentary(ExpertMACD(Plot1));#End;MACD函数之1:{*******************************************************************Description:MovingAverageConvergenceDivergenceProvidedBy:OmegaResearch,Inc.(c)Copyright1999********************************************************************}Inputs:Price(NumericSeries),FastMA(NumericSimple),SlowMA(NumericSimple);MACD=XAverage(Price,FastMA)-XAverage(Price,SlowMA);MACD函数之2{*******************************************************************Description:ExponentialAverageProvidedBy:OmegaResearch,Inc.(c)Copyright1999********************************************************************}Inputs:Price(NumericSeries),Length(NumericSimple);Variables:Factor(0);IfLength+1<>0ThenBegin IfCurrentBar<=1ThenBegin Factor=2/(Length+1); XAverage=Price; End Else XAverage=Factor*Price+(1-Factor)*XAverage[1];End;MACD多头交易讯号{*******************************************************************Description :MACDLongEntryProvidedBy :OmegaResearch,Inc.(c)Copyright1999********************************************************************}Inputs:FastMovAvg(12),SlowMovAvg(26),MACDMovAvg(9);Variables:XMACD(0);IfCurrentBar>2ANDMACD(Close,FastMovAvg,SlowMovAvg)CrossesAboveXAverage(MACD(Close,FastMovAvg,SlowMovAvg),MACDMovAvg)[1]Then Buy("MACD")ThisBaronClose;MACD空头交易讯号{*******************************************************************Description :MACDShortEntryProvidedBy :OmegaResearch,Inc.(c)Copyright1999********************************************************************}Inputs:FastMovAvg(12),SlowMovAvg(26),MACDMovAvg(9);IfCurrentBar>2ANDMACD(Close,FastMovAvg,SlowMovAvg)CrossesBelowXAverage(MACD(Close,FastMovAvg,SlowMovAvg),MACDMovAvg)[1]Then Sell("MACD")ThisBaronClose;待续第一章:指标写作现在开始我会逐行解说每一行程序代码的意义。
我不想用一般手册的说明方法,因为那样子让我觉得没有效率;它让你懂一些方法,却也让你合上书后忘的一乾二净我让你在实做中学习,马上披挂上阵!有成就感你就不容易忘然后我会举一反三拿一些实例加强你的观念进入深植,想忘都不可能!至于手册、我希望你不要丢掉它,放在身边你会常常用它的;爱因斯坦说:不要去背找得到的数据来增加大脑的负担相信我!我这二十多年涉猎许多计算机语言,没有手册我一行码都掰不出来的让我们系上安全带,飞上天HI一下!MACD指标:Indicator?什么是Indicator?它就是指标、技术指标不过在TS2000i它更泛指「可以显示在图型工作区的指针」,也就是说它不只是包含计算指标部份,更包括了显示部份(画图PLOT)以下就是一个完整的MACD指针程序,使用EasyLanguage语法完成的{*******************************************************************Description :ThisIndicatorplotsMACDProvidedBy :OmegaResearch,Inc.(c)Copyright1999********************************************************************}这一段我们称为『备注』、『批注』(Remark)。
在PowerEditor中它会显示为绿色,因为它不会被理会或被编译,但它方便我们阅读,知道自己在这段程序企图得到或想表现些什么批注被包围在大括符里头{}只要你把一段文字用大括符包围起来,就是告诉PowerEditor不要去执行这段东西,就算它里面是计算式也不必去鸟它因为它是写给我这有血有肉的人看的,不是给你这大脑装满海沙的家伙看的Inputs:FastMA(12),SlowMA(26),MacdMA(9);Inputs:『外来参数输入』文法 Inputs 加冒号『:』之后输入外来参数『FastMA』后加括符内填初设值『(12)』如果有一个以上的参数需要被代入,参数间用逗点隔开『,』最后结束时以分号终止『;』Inputs的部份是代表这些数据未来在我们使用该指标时是可以被更改的如本例可以看到12,26,9就是一般MACD的惯用参数特别说明的是当我们在设定参数名称(FastMA)时虽然没人管你要命什么名称,但设定一些可读性高的名称对你未来使用会是一件好事的FastMA一条快速的移动平均线比用abc来的叫人会意些吧?初值一般也引用常用数据来代入,如此在使用上你也会方便自己许多为什么我们要设外来参数呢?因为它方便你在使用时迅速的更改配合当时需要。
也许你有天想看看以6,13,5计算的MACD会长得如何?那好你直接在图形页改参数便可如果你不用Inputs、那抱歉你只有再进入PowerEditor改新参数,然后重新编译一次才可以使用,当然你要是每到阴天闲的发慌我不阻止你如此干,至少你孩子会对我感激涕零Plot1(MACD(Close,FastMA,SlowMA),"MACD");Plot1 呼叫Plot1函式(函式未来会提,现在你就当自己是皇上吆喝各司其职的小太监上场有侍衣、侍食、侍寝、、之类的他们有自己的专属工作,只待你一声令下,只是你要叫对人)函式后面紧跟括符『()』,同样以分号结束叙述括符内加入函式本身需要的参数或变量加什么呢?这时手册就派上用场了!每一个函式要加的参数是不一定的,所以手册会帮你找到你也可以利用手册,点选右上像一本书的图示或是选单的Tools>EasyLanguageDictionary文法Plot1(代入要显示的数据,”显示的文字字符串”);同样的各参数间以逗点相隔,以分号结束这里有一个不同;字符串输入必须包含在“”之间它藉以区隔特别是数字以文字不被处理而直接表现比如说”3-2”会表现3-2而不是变成1Plot1它有许多兄弟姊姊,排行由1到4。
为什么呢?因为TS200i设计成每个指针的显示个数最大为4,无法显示更多对了这四条线的当然包括你喜欢加在如RSI的超买或超卖的水平线,珍惜物资喔这例子中第一个代入的数值变量,我们的MACD数据由另一个函式完成运算也就是说函式之中另有函式!其实不用大惊小怪,在程序语言这是很正常的事你叫来服侍你吃饭的小太监当然。
