人工智能系统

上传人:仙*** 文档编号:31645148 上传时间:2021-10-12 格式:DOC 页数:52 大小:172KB
收藏 版权申诉 举报 下载
人工智能系统_第1页
第1页 / 共52页
人工智能系统_第2页
第2页 / 共52页
人工智能系统_第3页
第3页 / 共52页
资源描述:

《人工智能系统》由会员分享,可在线阅读,更多相关《人工智能系统(52页珍藏版)》请在装配图网上搜索。

1、人工智能系统引21.主要语言结构42.标点符号53.运算63.1赋值运算63.2 字符运算63.3 数学运算63.4 比较运算73.5 逻辑运算74固定词94.1预设变数104.2 METAQUOTES II语言的命令结构114.2.1变量说明和描述114.2.2EXIT语句124.2.3IF-THEN条件语句124.2.4 The WHILE 循环134.2.5FOR循环144.2.6 BREAK语句154.2.7 CONTINUE语句154.3 交易终端的预设变数154.4. 构建函数164.5 举例初步创建一简易的人工智能系统27引“人工智能系统”是一允许客户策划自己的投资交易战略的具有

2、革新性的工具。 人工智能系统是使交易过程操作自动化,使客户从实时市场监控的繁重公事解放出来的系统。许多专业客户使用多重交易系统以便在不同市场多变的环境下操作。通常他们在一些知名的分析软件包,如MetaStock 、TradeStation.中撰写和检验他们的投资交易战略。 有了人工智能系统,你就可以将你的真实账户同交易系统产生的信号联系起来,即通过跟踪和管理你任一时点的未平仓合约、下单和止损的记录来建立这种联系。 什么是人工智能系统呢?是用专业的MetaQuotes语言编写的于特定图表联系的自动交易系统(ATS)。它不仅告知客户交易时机,还自动执行交易账户的交易并将信号直发送到交易服务器。同大

3、多数IT系统一样,人工智能系统还以历史记录以及表上所反映的交易进出点来测试投资交易战略。另外,人工智能系统的执行代码是与源程序正文分开保存的。这种安排确保客户信息的保密性不受爱打听的人的影响。 编写你自己的人工智能系统程序是非常容易的,你不必是专业的程序员,你只要学会一非常简单的语言:MQL II,即便是不懂得如何编写自己的系统程序人通常也可以雇佣他所熟识的精通编程的人来编,这些人可能仅需要不超过一个小时的时间来掌握编程和操作方法。 这里有许多不同的MetaStock 和 TradeStation 的客户制定的投资交易战略,其中大多数能较容易的转化成MQLII语言,这使用户能吸取以往经验。在本

4、页就有一些可供下载的“人工智能系统”版本。 环球银行 交易平台将人工智能系统设为*.MQL(源程序档用此扩展名)和*EXP(操作代码用此扩展名)文件存于程序的根目录下的子目录。客户可以通过NAVIGATORL浏览窗口管理操作多个(不限数量)的“人工智能系统”。 关于如何开立人工智能系统并将其于交易终端联机问题的程序在环球银行客户用户向导上有详细说明。 通过用METAQUOTES II语言编写“人工智能系统”程序来自动管理交易操作、执行客户自己的战略。METAQUOTES II是相当容易学习、使用和安装的。MQL II语言包括大量的用于控制现在和过去的报价、主要算法、逻辑运算的变量,并在建立主要

5、指示器以及指示开立和控制头寸方面起关键作用。这种语言是同TRADERSTION技术公司开发的EASY语言是相类似的,但它有一些特殊功能。 程序代码是由METAEDITOR文字编辑器编写的,它能将MQL II不同部分设定为不同颜色,因而,可帮助用户以 / 标记(双斜线)开始通过专家系统文本注释。注释也可以用斜线星号星号斜线(/*(注释)*/,即如C语言一样)来标记。编辑器是固定以灰色显示注释。 为了建立和控制投资交易战略,客户必须有一有关记录信号产生、变动的进行交易的结果的信息的日志文件。人工智能系统的日志是在环球银行客户目录中的/logs/YYYYMMDD.log 文件下。当前日志可直接访问下

6、级终端窗口。 若要访问MQL II 语言的目录系统,就需要打开METAQOUTES语言窗口或者按下字典按钮或从工具菜单中查找,这使得用户能获取每一用该语言的信息的祥细数据。 1.主要语言结构同其它语言一样,MQL II有一套主要的元素来构建他的主要结构。这些元素应以特殊的方式组合与安排,用以表示特定的语句和公式。 语言的主要对象是数据,即三种类型的数据:数值型、逻辑型、字符型。所有的数值型都用双重格式,逻辑型数据为真或假,字符串是用省略号标记的一串字符。字符串又名为文本串。数据可包括不同类型的变量,也可直接表示为源程序正本。 每一个METAQUOTES语句都是一完整结构,可以包含固定词、操作指

7、令、数据、变量、表达式、标点符号,通常是以分号结束。 固定语句是指预先确定的具有特殊和具体意义的词汇。 操作指令是指定特定数据、变量、表达式操作的符号。 变量通常包含数值、字符、逻辑型数据。 表达式是指固定语句、变量、操作指令、数据的联合体,是语言中三种类型数据即数值型、字符型、逻辑型数据综合运用的结果。 标点符号是用来描述表达式、定义参量、划分句子以及数列再排序的。 2.标点符号 符号名称描述;分号在METAQUOTES II中标记一段的结束( )括号在表达式的一组数据中改变计算顺序,标记函数中的参量以及在描述变量的初始表达式,标记变量的初始值和变数描述段的排列。,逗号当函数已引用时,分开参

8、量,在变量描述段中分开变量,在描述数列长度时分开数据,在存取数组元素时分开指数。:冒号用在变量描述段中标记一变量表的开始。 引号标记一个字符串(文本串)。 方括号标记特定数组长度的数值,标记一个数组中特定元素的存取数,标记访问历史数据的期数。 大括号用做算术括号。可以用来代替“开始结束 ”将一段指令单独划做一区。/* */注释括号标记注释/双斜线表明一单字元注释的开始3.运算运算可分为5种形式:赋值运算、字符运算、数学运算、比较运算和逻辑运算。 3.1赋值运算赋值运算的“=”(等于)是用来给变量赋予一特定的值(可为数值型、字符型、逻辑型,即取决于变量类型)这种赋值可能是一表达式。例如:变数CO

9、UNTER(0); Counter=counter+1;因而,COUNTER变量即被赋值为1。 数值同样也能被赋值给数列。 3.2 字符运算操作字符串时,只有运算符可使用“+”。特用于连接两个字符。例如: Variable: String( );.String = some_ + text; 因此,字符变量可以是字符,也可是包含数值和逻辑型数据的复合字符串,而后者在连接数值和逻辑数据之前需将它们转化为字符型。例如: String = string + 1; 这样,这个字符变量就可以包含“string 1”字符了。 操作数不仅可以是数值,还可以是相应的变量以及操作后的表达式。 3.3 数学运算4

10、种主要的数学运算是:加+,减-,乘*,除/;它们是在数学表达式中用来计算数值的。例如:( Ask + Bid ) / 2 , High + 20 * Point 3.4 比较运算比较运算是用于同类型数据之间的比较。第一个数与第二个数比较得出“真”或“假”,小于“”,大于“”,等于“=”,不等于“”,小于等于“=”,大于等于“=”。逻辑值是METAQUOTES语言控制下比较表达式运算的结果。例如:if FreeMargin 100 and FreeMargin = 1000; (注:freemargin 大于等于1000时,condition1为true;否则为false)If not Cond

11、ition1 then exit下面是逻辑运算的结果表格。(即:freemargin1000时退出) value1value2value1 OR value2True真True真True真True真False假True真False假True真True真False假False假False假value1value2value1 AND value2True真True真True真True真False假False假False假True真False假False假False假False假value1NOT value1 True真False假False假True真4固定词METAQUOTES II语言有几

12、组固定词 1)逻辑算式 AND、OR、NOT 2)MQL II 命令 Array, Begin, Break, Continue, Define, Downto, Else, End, Exit, For, If, Input, Then, To, Variable, While 定义语句结构的固定词语又名关键词 3)固定函数 Abs, AccName, AccountName, Alert, Ceil, CloseOrder, Comment, Cos, CurTime, Day, DayOfWeek, DeleteOrder, Exp, Floor, Highest, Hour, iADX

13、, iATR, iBANDS, iCCI, iMA, iMACD, iMFI, iMOM, iRSI, iSAR, iSTO, iWPR, IsDemo, IsIndirect, LastTradeTime, Log, Lowest, Minute, Mod, ModifyOrder, Month, MoveObject, NumberToStr, Ord, Ordervalue, Period, Pow, Print, PrintTrade, Rand, Round, ServerAddress, SetArrow, SetObjectText, SetOrder, SetText, Sin

14、, Sqrt, Srand, Symbol, Tan, TimeToStr, Year 4)预设变量(用户自定义变量) Lots, StopLoss, TakeProfit, TrailingStop 5)预设交易终端变量 AccNum, AccountNumber, Ask, Balance, Bars, Bid, Close, Credit, Equity, FreeMargin, High, Low, Margin, Open, Point, PriceAsk, PriceBid, PriceHigh, PriceLow, PriceTime, Time, TotalProfit, To

15、talTrades, Volume. 6)预设固定函数的参量(宏) MODE_CLOSE, MODE_EMA, MODE_HIGH, MODE_LOW, MODE_MAIN, MODE_MINUSDI, MODE_OPEN, MODE_PLUSDI, MODE_SIGNAL, MODE_SMA, MODE_STOPLOSS, MODE_TAKEPROFIT, MODE_VOLUME, MODE_WMA, OBJ_HLINE, OBJ_SYMBOL, OBJ_TEXT, OBJ_TRENDLINE, OBJ_VLINE, OP_BUY, OP_BUYLIMIT, OP_BUYSTOP, OP_S

16、ELL, OP_SELLLIMIT, OP_SELLSTOP, SYMBOL_ARROWDOWN, SYMBOL_ARROWUP, SYMBOL_CHECKSIGN, SYMBOL_STOPSIGN, SYMBOL_THUMBSDOWN, SYMBOL_THUMBSUP, VAL_CLOSEPRICE, VAL_CLOSETIME, VAL_COMISSION, VAL_COMMENT, VAL_LOTS, VAL_OPENPRICE, VAL_OPENTIME, VAL_PROFIT, VAL_STOPLOSS, VAL_SWAP, VAL_SYMBOL, VAL_TAKEPROFIT, V

17、AL_TICKET, VAL_TYPE. 事实上,上述固定词是宏命令,语法分析器用数值代替它们。宏命令是用来简化用户编写程序引用函数的:即用一些方便赋有含义的词来代替一些函数参量数值。这也同样适用于颜色的名称。 7)颜色 liceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown, BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, Cornsilk,

18、 Crimson, Cyan, DarkBlue, DarkCyan, DarkGoldenrod, DarkGray, DarkGreen, DarkKhaki, DarkMagenta, DarkOliveGreen, DarkOrange, DarkOrchid, DarkRed, DarkSalmon, DarkSeaGreen, DarkSlateBlue, DarkSlateGray, DarkTurquoise, DarkViolet, DeepPink, DeepSkyBlue, DimGray, DodgerBlue, FireBrick, FloralWhite, Fore

19、stGreen, Fuchsia, Gainsboro, GhostWhite, Gold, Goldenrod, Gray, Green, GreenYellow, Honeydew, HotPink, IndianRed, Indigo, Ivory, Khaki, Lavender, LavenderBlush, LawnGreen, LemonChiffon, LightBlue, LightCoral, LightCyan, LightGoldenrod, LightGreen, LightGrey, LightPink, LightSalmon, LightSeaGreen, Li

20、ghtSkyBlue, LightSlateGray, LightSteelBlue, LightYellow, Lime, LimeGreen, Linen, Magenta, Maroon, MediumAquamarine, MediumBlue, MediumOrchid, MediumPurple, MediumSeaGreen, MediumSlateBlue, MediumSpringGreen, MediumTurquoise, MediumVioletRed, MidnightBlue, MintCream, MistyRose, Moccasin, NavajoWhite,

21、 Navy, OldLace, Olive, OliveDrab, Orange, OrangeRed, Orchid, PaleGoldenrod, PaleGreen, PaleTurquoise, PaleVioletRed, PapayaWhip, PeachPuff, Peru, Pink, Plum, PowderBlue, Purple, Red, RosyBrown, RoyalBlue, SaddleBrown, Salmon, SandyBrown, SeaGreen, Seashell, Sienna, Silver, SkyBlue, SlateBlue, SlateG

22、ray, Snow, SpringGreen, SteelBlue, Tan, Teal, Thistle, Tomato, Turquoise, Violet, Wheat, White, WhiteSmoke, Yellow, YellowGreen. 所有的固定词都是不计较格式的,它们可以用大写字母也可用小写字母。 4.1预设变数通常,已编写完毕的人工智能系统是需要改变某一参数的,这将影响系统的运作。为避免每次都以手动编辑系统代码和基本变量来改变参数,一个类似于METAQUOTES系统中所用的方法应运而生:有4种参量置于人工智能系统的properties table(工具台)下的META

23、EDITOR的菜单档 - Properties(用具). - Processing tab(程序卷标) Lots 手数StopLoss 止蚀点TakeProfit 目标位 TrailingStop 移动止损指令 这些变量的初始值可以在人工智能系统的PROPERTIES TABLE(工具台)中直接键入或在按F7时弹出的特别设置对话框中或是在菜单(Charts - Expert Advisors - Properties)中修改。这些变量不能在程序中修改。 4.2 METAQUOTES II语言的命令结构4.2.1变量说明和描述在计算过程中储存临时数据需要用到变量。变量是在程序的最开头用关键词、数

24、组、定义来描述。这些词是可以用复数形式的。这些词通常在描述变数语句的开端。而这些词之间的区别在于:“variable” 是用来描述变量,“ array”是用来描述数组 “define”是用以描述用户自定义变量,(这种自定义变量类似于预设变量可以通过设置对话框来修改即外部修改,但不同点在于自定义变量可在程序计算过程中改变) 变量描述语法 NAME(初始值),“NAME”是变量的名称,“初始值”是变量的初始值。这个初始值界定了变量的类型数值型、字符型、逻辑型 举例: COUNTER(0); 数值变数 STRING1(“SOME STRING”);字符变量 MYCONDITION(FALSE) 逻辑

25、变量 Array : ArrayNamerows,columns( Initialvalue );数组长度一个或多个数值决定数值 在 MetaQuotes 语言中数组有可能有一、二、三、四位数值长度。在一般术语中,数组是指一组排列成行的拥有同一名称(数组名)且按顺序给定每一数值序号的变数组。数列在理清同一类型的数据的顺序时是非常方便的。交易终端的历史记录就是数列功能的很好的范例,如开盘价、收盘价、最高价、最低价、成交量。这些数据是以单个元素的形式存取。例如:CLOSE过去5个时点的收盘价。两个元素的数列可以是一个第一次排横序第二次排纵序的结果。例如:Array : MyTable10,5( 0

26、 ); / a 10 rows by 5 columns table (1个10行5列的表)print( MyTable ); / print the fourth element in the second row 数列可以包含不同类型的数据数值型、字符型、逻辑型,但是,它需为同一类型,数列建立之初起初使值已经确定化了。 附加用户名的描述语法:Define : Name( InitialNumber );NAME名称变量,INITIALNUMBER是变量的初始值。 需要指出的是附加用户名变量仅仅是数值型数据。上面已经提到,用户名变量可以在程序的计算过程中修改,这样的修改仅仅在人工智能系统的当

27、前部分有效直到特定智能系统从客户终端操作中撤销。当再次启动人工智能系统时,附加用户名变量又会初始化为新值。 4.2.2EXIT语句EXIT语句是终止系统运作的语句,也就是所谓的预设终止程序。 4.2.3IF-THEN条件语句IF-THEN条件语句实现了控制运行系统指令的顺序的功能。这个语句可以由不同方式编写。语法如下: if Condition then Statement;orif Condition then begin /推荐使用Statement;Statement;.end; 当条件是逻辑表达式使用了“True” 或 “False”时;STATEMENT(语句)可以是MQL II语言

28、中的任何指令。算式括号(Begin End)可以由大括号代替。 条件句可以用来分写程序。为此,必须再用到另外一关键词Else :if Condition then Statement1 else Statement2;if Condition then beginStatement;Statement;.endelseStatement;Statement;.end;orif Condition then beginStatement;Statement;.endelse Statement2;orif Condition then Statement1elseStatement;Statem

29、ent;.可以使用嵌套式的条件语句。通常,MQL II语言中的任意语句都代表一合法指令,变量描述除外。因为,严格的讲,变量描述不是一可执行指令。 4.2.4 The WHILE 循环While loop 语句是确保只要循环条件为“真”包含循环本体的语句就一直执行的语句。一个循环在遇BREAK语句是终止。反复循环也可以可用CONTINUE语句终止。这个语句使得下一个循环开始。也就是说,这种语句之后会出现CONTINUE并且跳至循环末而不再执行这个循环。因而,在条件句中毕会使用使用BREAK和CONTIMUE。语法: while Condition beginStatement;.end; 当条件

30、是循环执行条件句时,每一循环的逻辑表达计算式是以“真”、“假”值表示。该条件句可以是MQL II语言中的任何指令。算式括号(Begin End)表示循环本体且可以由大括号代替。 BREAK 和CONTINUE不是必用的。例子: Counter = 1;while Counter Bars then break;print( Close );end; 这个例子是说可以循环10次。但若BARS值小于10,循环就会提前终止,也就是说循环执行BARS次。 4.2.6 BREAK语句BREAK语句是使FOR和WHILE循环中断的语句。前面的例子不仅说明LOOP循环的运作,还说明BREAK语句的用法。BR

31、EAK语句仅仅可以在循环体中使用。循环也可以是嵌套式的。BREAK语句使与它最接近的循环中断。换句话说,BREAK语句中断内部循环而不中断外部循环。 4.2.7 CONTINUE语句CONTINUE语句就是提前终止循环而开使执行下一个循环。换句话说,CONTINUE句之后的语句即被忽视掉。例如: for Counter = 1 to 10 begin.if Counter Bars then continue;print( Close );.end; 这说明这个 循环将执行10次。但是,CLOSE值不会超过BARS次。 4.3 交易终端的预设变数为了方便用户,人工智能系统提供一些交易终端的变量

32、。 AccountNumber 账号(又名ACCNUM)Ask 卖出价(沽盘价) Balance 交易账户余额 Bars 图表上棍的数量是一非常重要的填充图表数据的变量 Bid 买入价(买价) Close 收盘价 Credit 保证金 Equity 账户的资金状况,包括未实现润FreeMargin 交易账户的自由保证金也用来账户资金的实用率 High 一段时间的最高价 Low 一段时间的最低价 Margin 用于支撑未平仓合约的资金 Open 开盘价 Point 当前金融工具(人工智能系统现在正在使用的金融工具)的点数,如D/JPY - 0.01, USD/CHF - 0.0001 Price

33、Ask 在MARKET WATCH(市场观察)窗口显示的现时卖出价 PriceBid - c在MARKET WATCH(市场观察)窗口显示的现时买入价 PriceHigh 24小时内最高卖出价 PriceLow - 24小时内最高买入价 PriceTime - 在MARKET WATCH(市场观察)窗口显示的当前时间 Time 报价表上的棍所表时间 TotalProfit 所有未平仓合约的总未实现利润 TotalTrades 在交易终端的未平仓合约以及延迟了的买卖盘指令的总数 Volume 交易总额(过去一段时间的交易总额) 须指出的是在过去一段时间内Close, Open, High, Lo

34、w, Volume, Time是历史数据数列(级数树列)且允许存取这样的数据。 4.4. 构建函数MetaQuotes LanguageII 为不同的用途提供了不同的函数。包括技术指针, 交易函数, 时间函数, 数学和三角函数, 数据转换和输出函数等。 Abs- 返回这个数值的绝对值(模块) 语法 : Abs(nExpression) 参数: 数值。 AccountName 返回到包含用户名的文本串(与AccName同义) 。 Alert- 生成包含用户定义的数据的屏幕。 语法: Alert(.) 例子:alert(FreeMargin is , FreeMargin); 弹出警告窗 free

35、margin的值。任何非零数字都可作为参数。 Ceil 返回等于或大于这个指定的数值的最小的最接近的整数。 语法: Ceil(nExpression) 参量: 数值。 CloseOrder 平仓单。 语法: CloseOrder( order, lots, price, slippage, color ) 参量: order-开立头寸的顺序号; lots- 手数; ?价格 - 优先平仓价; slippage- 最大价格滑动; color- 表框的颜色。 Comment- 在图表的左上角产生一个用户自定义的数据。 语法 : Comment(.) 任何非零数字都可作为参数。 Cos 计算并返回用弧

36、度表示的角的余弦。 语法: Cos(nExpression) 参数: 数值 CurTime 返回自1970 年1月1 日以来所经过的秒数 。 Day- 返回当天的月份数值。 DayOfWeek 返回当天的星期数值。1 - 星期天 , 2 - 星期一., 7 - 星期六。 DeleteOrder 删除过期定单。 语法 : DeleteOrder ( order) 参数: order:过期的订单号。 Exp 返回对具体的数值进行说明的数字 语法 : Exp(nExpression) 参数: 数值。 Floor- 返回小于或等于特定数值的最接近的最大的整数值。 语法: Floor(nExpressi

37、on) 参数: 数值。 Highest-返回指定时期最高开盘价、最高最低价、最高最高价、最高收盘价及总交易量(取决于参数类型) 语法: Highest ( type, beginbar, periods ) 参数: type可采用以下形式返回变数:MODE_OPEN, MODE_LOW, MODE_HIGH, MODE_CLOSE, MODE_VOLUME beginbar 相对于当前棒的位移,从中可以获取数据 periods-计算的时期 Hour-返回当前小时数值。 iADX 一般活动指标 语法: iADX ( period, mode, shift ) 参数: period 计算期间数 m

38、ode 可采用以下数据类型: MODE_MAIN(main indicator), MODE_PLUSDI(line +DI), MODE_MINUSDI(line -DI). shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iATR 平均时间间隔指标 语法:iATR( period, shift ) 参数: period 计算期间数 shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iBANDS 滚动带指标 语法: iBANDS( period, deviation, mode, shift ) 参数: period 计算期间数 deviation 偏移 mode

39、可采用以下数据类型: MODE_MAIN(主指标), MODE_PLUSDI(line +DI), MODE_MINUSDI(line -DI). shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iCCI 交易记录指针 语法: iCCI( period, shift ) period 计算期间数 shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iMA 平均移动指标 语法: iMA( period, mode, shift ) period 计算期间数 mode 可采用以下计算模式: MODE_SMA简单, MODE_EMA指数, MODE_WMA有利的. shift

40、 相对于当前棒(时间向后推移)的位移,数据来源于此 iMACD 平均移动收敛/发散指标 语法:iMACD( fast_ema_period, slow_ema_period, signal_period, mode, shift ) 参数: fast_ema_period 计算快速移动平均线的期间数(通常为12) slow_ema_period 计算慢速移动平均线的期间数(通常为26) signal_period 计算信号移动平均线的期间数 mode 数据源可采取的形式: MODE_MAIN (主指标), MODE_SIGNAL (单线); shift 相对于当前棒(时间向后推移)的位移,数据

41、来源于此 period -计算期间数 iMFI 现金流量指标 语法: iMFI( period, shift ) period 计算期间数 shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iMOM 要素指标 语法: iMOM( period, shift ) period 计算期间数 shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iRSI 相对强弱指数 语法: iRSI( period, shift ) period 计算期间数 shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iSAR - Parabolic SAR. 语法: iSAR( step,

42、 maximum, shift ) 参数: step 增量,一般为0.02 maximum 最高价,一般为0.2 iSTO 随机指数. 语法: iSTO( %Kperiod, %Dperiod, slowing, method, mode, shift ) 参数: %Kperiod - %K线时期; %Dperiod - %D线时期; slowing 不活跃价格; method 可采用以下计算方法: MODE_SMA (简单平均), MODE_EMA (指数), MODE_WMA (weighted); mode 可采用以下形式的数据源: MODE_MAIN (主指标线), MODE_SIGN

43、AL (单一指标线); shift 相对于当前棒(时间向后推移)的位移,数据来源于此 iWPR - Williams 百分比范围指标 语法: iWPR( period, shift ) period 计算期间的数值 shift 相对于当前棒(时间向后推移)的位移,数据来源于此 IsDemo 如果Expert Advisor正在运行交易账户,返回逻辑真值;否则,返回假值 IsIndirect 如果使用相反的方法计算指定商品,返回逻辑真值;否则,返回假值 LastTradeTime 返回最近一次活动(下单、取消单、平仓、修改单),距离1970年1月1日零点的秒数 Log 返回指定正数的对数 语法:

44、 Log( nExpression ) 参数:正数 Lowest 返回指定期间最低开盘价、最低最低价、最低最高价、最低平仓价、交易量(取决于参数类型) 语法: Lowest( type, beginbar, periods ) 参数: type 可采用以下形式: MODE_OPEN, MODE_LOW, MODE_HIGH, MODE_CLOSE, MODE_VOLUME beginbar 相对于当前棒的位移,从中可以获取数据 periods 计算期间数 Minute 当前分钟数 Mod 返回余数 语法: Mod( nExpression1, nExpression2 ) 参数:数值1,数值2

45、 ModifyOrder 修改以前开立的定单或过期单 语法: ModifyOrder( order, price, stoploss, takeprofit, color ) 参数: order 以前开立单的号码; price 新价格(仅对过期单); stoploss 止损水平; takeprofit 止盈水平; color 图表颜色. Month 返回当前月数 MoveObject 指定对象的移动. 语法: MoveObject( name, type, time, price, time2, price2 ) 参数: name 以文本串形式表示的名称; type 对象类型可采用以下形式的:

46、 OBJ_HLINE (水平线), OBJ_VLINE (垂直线), OBJ_TRENDLINE (趋势线), OBJ_SYMBOL(设置符号), OBJ_TEXT (文本串); time 第一个图表指定点的时间; price -第一个图表指定点的价格; time2 -第二个图表指定点的时间; price2 -第二个图表指定点的价格 NumberToStr 以指定长度形式将数值返回为文本串形式 语法: NumberToStr( number, precision ) 参数: number 指定数值; precision 精确格式,小数点后的位数. Ordervalue 返回指定定单的价值. 语

47、法: Ordervalue( position, mode ) 参数: position 交易终端列表中定单的头寸,初始值为1; mode 数值返回的形式可采用以下几种: VAL_TICKET (定单号), VAL_OPENTIME (开单时间), VAL_TYPE (定单类型), VAL_LOTS (请求的手数), VAL_SYMBOL (商品名称,用本文形式表示), VAL_OPENPRICE (开盘价), VAL_STOPLOSS (止损水平), VAL_TAKEPROFIT (止盈水平), VAL_CLOSEPRICE (收盘价格), VAL_COMISSION (佣金数量), VAL

48、_SWAP (头寸转滚费用), VAL_PROFIT (交易利润), VAL_COMMENT (头寸具体说明,文本形式), VAL_CLOSETIME (平仓时间). Ord 同Ordervalue. Period 返回所定义的使用期间的分钟数 Pow 返回nBaseExpression乘以nBaseExpression的幂. 语法: Pow( nBaseExpression, nExponentExpression ) 参数:数值1,数值2 Print 将用户定义的数据录入系统日志. 语法: Print(.) 可使用任意非零数值. PrintTrade 将头寸详细数据储存到日志中. 语法:

49、PrintTrade( position ) 参数:交易终端开仓号 Rand 返回产生的伪随机号.使用这个函数之前,必须使用Srand函数,将伪随机号发生器设置到初始头寸。一旦初始头寸中设置了伪随机号发生器,随机号发生器将在开始程序中出现。 Round 返回指定数值的四舍五入的整数. 语法: Round( nExpression ) 参数:数值. ServerAddress 以文本串形式返回服务器IP地址. SetArrow 在图表上设置符号. 语法: SetArrow( time, price, symbol, color ) 参数: time 图表上指定点的时间; price 图表上指定点

50、的价格; symbol 字体设置中符号的数值号 color 符号颜色. SetObjectText 将指定对象定义为文本串 语法: SetObjectText( name, text, font, size, color ) 参数: name 对象名称; text 指定文本; font 字体名称; size 字体大小; color 文本颜色. SetOrder 开立头寸或设置定时单的主函数 语法: SetOrder( operation, lots, price, slippage, stoploss, takeprofit, color ) 参数: operation 操作类型可采用以下形式

51、:: OP_BUY(开立买入单), OP_SELL (开立卖出单), OP_BUYLIMIT(开立买入限价单), OP_SELLLIMIT(开立卖出限价单), OP_BUYSTOP(开立买入止损单), OP_SELLSTOP (开立卖出止损单); lots 手数; price 优先平仓价格; slippage 最大OP_BUY 及 OP_SELL滑动价格; stoploss 止损水平; takeprofit 止盈水平; color 调用函数时,图表上箭头的颜色. SetText 为指定头寸在图表上设置文本串. 语法: SetText( time, price, string, color )

52、参数: time 图表上指定点的时间; price -图表上指定点的时间; string 文本串; color 文本颜色. Sin 计算返回以弧度表示的角的正弦. 语法: Sin( nExpression ) 参数:.数值 Sqrt 计算返回指定正数的平方根. 语法: Sqrt( nExpression ) 参数:正数 Srand 为初始头寸设置伪随机发生器,一旦发生器被设置,它将出现在开始程序中。初始设置使用的最佳值是时间函数返回的值。语法:Syntax: Srand( Time ) 参数:正数 Symbol 返回Expert Advisor 中运行的金融商品的文本串. Tan -计算返回以

53、弧度表示的角的正切. 语法: Tan( nExpression ) 参数:数值. TimeToStr 返回当前距1970年1月1日零时经历的时间,以文本串“年年年年.月月.日日时时:分分”表示 语法: TimeToStr( Time ) 参数:正数. Year 返回当前年份的数值. 4.5 举例初步创建一简易的人工智能系统让我们将MACD指标同获利能力、支撑移动止损位以及操作安全等因素结合起来考虑以创建人工智能系统。下面的例子是开立和控制一个单独的头寸。 交易原则: .做多(买入)信号即当MACD 指针是在0轴在以下,为向上的趋势并与向下的信号线相交(金叉) .做空(卖出) 信号即当MACD

54、指针是在0轴以上,为向下趋势并与向上的信号线相交(死叉) .多头平仓信号即执行限价平仓指令或移动止损指令以获得利润或者在MACD指针与信号线相交(MACD指针在0轴以上且为向下趋势并与向上趋势的信号线相交)时平仓 .空头平仓信号即执行限价平仓指令或移动止损指令以获得利润或者在MACD指针与信号线相交(MACD指针在0轴以下且为向上趋势并与向下趋势的信号线相交)时平仓 重要提示: 在我们分析MACD指标时,为了排除MACD指示中一些并不重要的变化情况(即图表中的细微“小丘”),下面我们另外引荐一种控制“小丘”大小的方法: 指示范围至少为5个最小单位(5点,即USD/CHF=0.0005,USD/

55、JPY=0.05) 第一步:撰写人工智能系统说明 将鼠标指在导航窗口的人工智能系统,点击鼠标右键在弹出的菜单中CREATE A NEW EXPERT(创建一个智能系统)命令. 正在初始化的WISARD OF EXPERT ADVISOR 会问你是否要输入数据.在弹出的窗口中你得写下NAME名字(人工智能系统的名字) 、AUTHOR作者、与你的网址链接、须知人工智能系统的测试样本.你也可以设定你想要的Lots(交易单位), Stop Loss(止损点), Take Profit(平仓) 和 Trailing Stop(移动止损)的默认值. 第二步:创立程序的初步结构 测试系统的代码仅仅为几页纸,即使是这几页纸仍然是难以理解的,特别是在我们这些不是专业的程序员的眼里是非常难的.不然,我们也不必写下这段说明,不是吗? 为了了解标准的人工智能系统的结构,我们来看一下下面的解释: 1.初始资料检查 .检查图表,图表上棍的数量 .检查外部变数值:LOTS,S/L,T/P,T/S 2.设置为快速数据存取的内部变量 3检查交易终端是否有空间?如果有,然后 .检查账户中的可用资金 .是否可以做多(买入) .建仓买入和平仓 .是否可以做空(卖出) .建仓卖出和平仓 4. 定期控制已开立的头寸 .若是多头合约 .是否要平仓 .是否要重新设定移动止损点

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!