FXCG中文官网为全球投资者在金融市场的提供交易服务!

从零开始学MT4编程pdfpdf

MT4教程 2022-02-19 14:31126未知admin

  从零开始学MT4编程pdfpdfMQL4 低级培训教程 作家:老易 2011 年5 月25 日 目次 第一章 起头操纵MT4 1 1.1 媒介1 1.2 MT4 下载与装配1 1.3 熟识软件境遇5 1.4 操纵MT4 智能营业体系6 1.4.1 智能营业体系成立6 1.4.2 第一个轨范:Hello Word !7 1.4.3 企图10 年的汗青数据10 第二章 MQL4 措辞12 2.1 打定常识12 2.1.1 EA 框架12 2.1.2 目标框架13 2.1.3 坐标系14 2.2 内置变量与函数15 2.2.1 整数相除的办法15 2.2.2 商场函数15 2.2.3 账户函数17 2.2.4 商场变量17 2.2.5 时期函数18 2.2.6 烛炬序列函数18 2.2.7 营业函数19 2.2.8 数学、三角函数19 2.2.9 数组函数19 2.2.10 弹出音问框函数19 2.3 自界说目标20 第三章 编程进阶21 3.1 构想战略21 3.1.1 营业历程的声明21 3.1.2 本领目标的采选23 3.1.3 危机限度的战略23 3.2 逻辑明白24 3.2.1 EA 逻辑框架25 3.2.2 操盘限度模块流程图25 3.3 汗青数据回测26 3.3.1 起头一个EA 测试27 3.3.2 测试申诉中各项目标声明29 3.3.3 申诉中颜色的寄义31 3.4 常用自界说函数31 3.4.1 最大开仓量打算32 3.4.2 新单开仓33 3.4.3 持仓单平仓34 3.4.4 追踪止损35 3.4.5 依时营业36 2 3.4.6 正在屏幕上显示文字37 3.4.7 两点之间画线.7 自界说目标规范:图形化记忆汗青营业47 第四章 MQL4 本领目标52 4.1 Accelerator Oscillator 惊动加快目标54 4.2 Accumulation/Distribution 离散目标55 4.3 Alligator 鳄鱼目标56 4.4 Average Directional Movement Index 均匀宗旨搬动目标57 4.5 Average True Range 均匀线 Awesome Oscillator 振荡目标59 4.7 Bears Power 熊力惊动目标60 4.8 Bollinger Bands 保力加通道本领目标61 4.9 Bulls Power 牛力惊动目标62 4.10 Commodity Channel Index 商品通道目标62 4.11 DeMarker 63 4.12 Envelops 包络目标64 4.13 Force Index 强力目标66 4.14 Fractals 分形目标66 4.15 Gator Oscillator 加众摆动目标67 4.16 Ichimoku Kinko Hyo 一目平均外目标68 4.17 MACD 搬动均匀汇总/辞别目标70 4.18 Market Facilitation Index 商场增进指数目标71 4.19 Momentum 动量索引目标71 4.20 Money Flow Index 资金流量指数目标72 4.21 Moving Average 搬动均匀线 Moving Average of Osillator 搬动均匀惊动目标75 4.23 On Balance Volume 能量潮目标75 4.24 Parabolic SAR 掷物线 Relative Strength Index 相对强弱目标77 4.26 Relative Vigor Index 相对生气指数目标78 4.27 Standard Deviation 圭表离差目标79 4.28 Stochastic Oscillator 随机惊动目标80 4.29 Volumes 成交量目标82 4.30 Williams’Percent Range 威廉目标82 3 第一章 起头操纵MT4 1.1 媒介 当幻化莫测的外汇商场、24 小时不间断的营业、种类繁众的泉币对同时显露正在你的面前 时,你必定有乱七八糟无所适从的感受。自从完成了互联网外汇营业,咱们倍感外汇营业的 艰难与繁琐,于是 EA (英文Expert Advisors 缩写,称专家垂问,或智能营业体系)就应运 而生了。 众人半外汇营业商供给MT4 平台,众人半外汇营业者起头合切乃至入迷 MT4 平台上的 EA,网上展示了许众的免费EA 乃至收费的EA 。不幸的是,正在这里我要下个结论,那即是大 众半 EA 都是垃圾毫不是“圣杯”,不管是免费的照样收费的,真正的圣杯只可正在你己方手 中成立。 纵观积年邦际上 EA 大赛,还没有展示一位延续获胜的选手。或者咱们能够片刻以为连 续安稳赚钱的营业体系是存正在的,然而延续安稳赚钱的EA 是否存正在则有待旁观说明。电脑 和人脑比拟目前还存正在难以横跨的曲折,咱们期盼并守候着浩瀚的专家学者能修设出真正的 人工智能营业体系。 然而,正在所谓真正的人工智能营业体系问世之前,行动寻常的炒汇者不行闲着,咱们需 要踊跃的做些什么来获得己方的圣杯。 有一点能够笃信,咱们务必正在无误的商场观和深远知道商场的根蒂上去构修适合己方的 办法,订定商场适当才智较强的战略,保障体系可以动态地以最靠近商场的体例运转,再通 过摒挡营业历程的逻辑轨则,依据MQL4 措辞外率编出适合电脑主动营业的轨范,就能够阶 段性的实实际现安稳红利。 EA 的最大用处就正在于把无误的营业逻辑打算定量化、轨范化,从而创修一套商场适当 才智较强的战略。切记 EA 只是你营业行径的一片面,切忌 EA 控制你的营业行径。你务必 全程介入到所有营业历程中,即使你过分入迷EA,那么EA 就只可是个传说。 本书将从搭修营业平台、相识主动营业编程、进修编程等方面分章节描摹,并贯穿若干 个 EA 实例轨范,依据构想战略、逻辑明白、编制代码、汗青数据测试、模仿操盘的循序, 深度周至地注解EA 的成立历程,同时供给了MQL4 常用指令集、外汇常用本领目标疏解等 实质。 笔者既不属于音问派也不属于本领派,更不是二合一派。外汇营业是“零和博弈”,我 更倾向从数学统计论的角度来思量外汇,理性的介入博弈。 认识EA,编制EA,操纵EA,从现正在起头。 1.2 MT4 下载与装配 正在营业商指定的网站上下载装配轨范,并运转: 2 3 4 1.3 熟识软件境遇 5 1.4 操纵MT4 智能营业体系 1.4.1 智能营业体系成立 MT4 装配运转后,智能营业是被禁止的,需求成立“许诺”智能营业。 6 1.4.2 第一个轨范:Hello Word ! 创修一个空缺的轨范 7 8 写一个轨范 回到MT4 终端,翻开智能营业体系能够看到刚刚的轨范一经企图好了: 9 鼠标双击这个名字,新编写好的轨范就调入到图外窗口,右上角有轨范名和一个乐貌, 乐貌显露体系许诺奉行主动营业: 咱们正在终端窗口的智能营业标签里能看到轨范运转的结果: 1.4.3 企图10 年的汗青数据 一个编制好的 EA 需求汗青数据回考查证。目前从 MT4 平台上能够下载从 1999 年 10 月往后的全体种类的数据(囊括外汇、黄金、期货、股票指数等等)。 下载10 年的数据依据以下办法即可。 10 第一步,成立终端图外显示参数。翻开终端“器材”-

  “选项”,点击“图外”标签。 第二步,下载汗青数据。翻开终端“器材”-

  “汗青数据核心”。 这一步下载了选定泉币对的从 1999 年 10 月1 日往后的全体1 分钟数据。其他时期周 期的数据城市按照这个M1 数据主动天生,只是,你还需求双击每个时期周期,让全体的周 期都显示成彩色的。这声明全体时期周期的数据都将被终端挪用。 因为搜集或者任职器的缘由,你不妨需求重复点击泉币对和下载按钮,直到1999 年数 据显示为止。 其他种类以此类推。 11 第二章 MQL4 措辞 2.1 打定常识 正在进修MQL4 措辞前,起首要撤除己方的顾虑,不要被网高尚传的“写MQL4 轨范务必 具备C 措辞根蒂”给吓到,众人半人学不会编程即是己方把己方劝退的。 当然,进修打算机措辞恳求你务必有很好的逻辑思想才智。咱们能够通过下面的实质来 认识打算机的逻辑。 全体的打算机措辞都包罗两个语句,一个是条目(if )语句一个是轮回(for )语句。 If 语句顾名思义,餍足条目就奉行,不然就跳过。 for 语句顾名思义,即是正在必定条目下重复奉行原则的指令,直到条目不餍足。 2.1.1 EA 框架 圭表的EA 由5 个片面构成,分袂是变量预订义、EA 初始化轨范、EA 了局轨范、EA 执 行轨范和自界说变量,如下图: 12 正在int init()的前面是EA 变量界说区,当EA 调入到图标时,需求做预成立的参数都正在这 里界说。 正在int start()后面都是自界说函数区间。 2.1.2 目标框架 与EA 框架相通。区别如下: 1、 变量预订义片面的首行务必界说该目标显示的处所,主图和副图。 2、EA 初始化轨范片面用来界说显示元素的属性。 3、EA 奉行轨范片面用来打算目标值。 如下图: 13 2.1.3 坐标系 主动营业的奉行是需求精确定位的,所以就务必树立起明确坐标系的观念。 图上的横坐标既能够是商场时期也能够是烛炬序号,正在编程的时分平淡操纵烛炬序号。 坐标系实践上是三维的,即时期、价钱、开仓量,第三维开仓量平淡正在危机限度战略中 研讨,例如展示耗费加大开仓量,或者耗费20%平仓等等,所以咱们编写轨范重心就正在时期 和价钱这二维空间中。 14 树立起无误的坐标系观念是编程的根蒂,由于你即将对本领目标举办明白,打算开仓平 仓信号,乃至正在图外上画线 内置变量与函数 MQL4 供给了巨额的内置变量与函数,用来取值打算。目前网上有很众的手册,但都是 翻译呆板从原版英文手册主动翻译的,可读性极差。作家通过蕴蓄堆积巨额的阅历加上己方的理 解,精选了片面常用的、适用的实质从新声明如下。 2.2.1 整数相除的办法 正在MQL4 的语法中有“+ - * /”四则运算,当你直接用“1/3”的时分,会返回0 。正在程 序中能够这么来完成的: double i=(1*0.01)/(3*0.01); 这时变量i 才会返回你所要的值:0。 2.2.2 商场函数 咱们往往能遭遇差异平台报价钱式差异、滑点数差异、最小开仓量差异、商场时期差异 等等境况。这些数据都能通过商场函数直接获取,云云智力给EA 带来了较大的实用性。 商场函数挪用规范:界说最低价变量myLow,并获取最低价。 MarketInfo(symbol(),MODE_LOW) 获取而今泉币对的最低价 全体参数列外如下: 常数 描摹 MODE_LOW 当日最低价 MODE_HIGH 价钱最高日 MODE_TIME 结尾价钱变更时期 (任职器显示时期) MODE_BID 商场最新买入叫价,即使你要卖出则依据这个价钱奉行 15 MODE_ASK 商场最新卖出叫价,即使你买入则依据这个价钱成交 MODE_POINT 价钱最小变更单元,比如USDJPY 为0.01,有的平台为 0.001 MODE_DIGITS 泉币营业价钱小数点位数,例如2 位、4 位、5 位 MODE_SPREAD 买入叫价与卖出叫价的差价,也叫“点差”。为营业商收 取的手续费。比如现正在需求买入 1 手,那么成交价即是 “卖出叫价”,反之则是“买入叫价”,成交后会与商场 价钱酿成一个差价 MODE_STOPLEVEL 平仓点差。成立止损止赢点时只许诺正在这张订单价钱± 平仓点差周围以外。比如USDJPY 成交价为91.75,平仓 点差为5,那么止损止盈点成立务必正在91.70~91.80 范 围以外 MODE_LOTSIZE 根本泉币的圭表手巨细,比如:USDJPY 为100000 美元, GBPUSD 为100000 英镑,EURUSD 为100000 欧元 MODE_TICKVALUE 1 手每点本币的价钱,比如USDJPY 当价钱为91.90 时1 手每点价钱$10.8841,当价钱酿成91.88 时1 手每点价 值为$10.8838。UERUSD 恒定为10 欧元,GBPUSD 恒定 为10 英镑。这个值是营业商用来打算平仓时打算实践货 币的依照 MODE_TICKSIZE 报价最小单元,与上面最小变更单元不妨有差异,我不 能确定 MODE_SWAPLONG 众头仓位掉期。应当与结算利钱相干,合于掉期的巨子 解 释 参 睹 d.html MODE_SWAPSHORT 空头仓位掉期。 MODE_STARTING 商场起头日期 (预留常量),日常为0 MODE_EXPIRATION 商场时期周期 (预留常量) ,日常为0 MODE_TRADEALLOWED 营业许诺泉币对数目,全体泉币对都为1 MODE_MINLOT 最小许诺圭表手数,日常为0.01 MODE_LOTSTEP 调换圭表手最小单元,日常为0.01 MODE_MAXLOT 最大许诺圭表手数,日常为10000 手 MODE_SWAPTYPE 掉期打算办法. 0 - 点; 1 -根本泉币对; 2 - 有趣; 3 - 货 币保障金,日常为0 MODE_PROFITCALCMODE 赚钱打算形式,0 –Forex (外汇); 1 –CFD (黄金); 2 – Futrues (期货) MODE_MARGINCALCMODE 保障金打算形式,0 - Forex; 1 - CFD; 2 - Futrues; 3 - CFD for indices (黄金指数) MODE_MARGININIT 看待1 圭表手的初始保障金需求,日常为0 MODE_MARGINMAINTENANCE 看待1 圭表手开仓的保障金,日常为0 MODE_MARGINHEDGED 看待1 圭表手的护盘保障金,日常为5000 MODE_MARGINREQUIRED 看待购置一个圭表手开仓的自正在保障金 MODE_FREEZELEVEL 冻结定单秤谌点。即使奉行的价钱正在冻结秤谌点周围内, 定单将会被刊出或合上,这是营业商成立的参数,日常 16 为0 2.2.3 账户函数 AccountBalance( ) 获取账户余额 AccountCredit( ) 获取账户信用点数 AccountCompany( ) 获取营业平台公司名称 AccountCurrency( ) 获取账户通用泉币名称 AccountEquity( ) 获取账户净值 AccountFreeMargin( ) 获取账户免费保障金 AccountFreeMarginCheck( string 获取而今账户确当前价钱上正在指定开仓的仓位返回自正在 symbol, int cmd, double volume) 保障金,即最大可用保障金,价钱变更,该值跟着变更。 差异泉币对、差异价位,自正在保障金差异。 AccountFreeMarginMode( ) 正在而今开仓处所的账户上打算免费保障金的形式。打算 体例不妨接纳以下价钱值: 0 - 浮动profit/loss 不操纵 1 - 两个浮动赚钱和牺牲正在开仓处所上操纵打算自正在保 证金; 2 - 唯有赚钱值被操纵打算,不研讨而今开仓的耗费; 3 - 唯有耗费值被操纵打算, 不研讨而今开仓的耗费。 AccountLeverage( ) 获取账户杠杆比率 AccountMargin( ) 获取账户被占用的保障金总和 AccountName( ) 获取账户名称 AccountNumber( ) 获取账户账号 AccountProfit( ) 获取账户利润 AccountServer( ) 获取账户所正在任职器名称 AccountStopoutLevel( ) 获取账户遏止秤谌 AccountStopoutMode( ) 看待遏止秤谌返回的的运算体例。运算体例值如下: 0 - 打算保障金和净值之间的百分比; 1 - 对照自正在保障金秤谌和绝对值。 2.2.4 商场变量 Close[i] 获取第i 个烛炬的收盘价,即使i=0,即是获取而今价 High[i] 获取第i 个烛炬的最高价 Low[i] 获取第i 个烛炬的最低价 Open[i] 获取第i 个烛炬的开盘价 Time[0] 获取第i 个烛炬的时期,这个值是用秒来打算的 Volume[0] 获取第i 个烛炬的成交量 17 2.2.5 时期函数 MQL4 内置时期函数数值的最小读取单元是以每个新价钱(tick )为根蒂。即使没有新 价钱展示,则时期数值不行获取。 Time[0]和TimeCurrent() 的数据类型为datetime,返回从1970 年1 月1 日0 点起头至今 累计的“秒”数,Time[0]返回而今烛炬时期,TimeCurrent()返回而今新价钱(tick )时期。 int Day( ) 返回而今任职器的日,如14,显露14 日 int DayOfWeek( ) 返回而今任职器的礼拜,如4 ,显露礼拜4 int DayOfYear( ) 返回而今任职器的年,如2010,显露2010 年 int Hour( ) 返回而今任职器的时,如10,显露10 点 int Minute( ) 返回而今任职器的分,如15,显露15 分 int Month( ) 返回而今任职器的月,如10,显露10 月 int Seconds( ) 返回而今任职器的秒,如34,显露34 秒 datetime TimeCurrent( ) 返回而今任职器最新价钱的秒,该数值显露从1970 年1 月1 日至今累计秒。 int TimeDay( datetime date) 返回日期类型参数中的日 int TimeDayOfWeek( datetime 返回日期类型参数中当周的天数,如4 ,显露当周的第4 date) 天 int TimeDayOfYear( datetime date) 返回日期类型参数中当年的天数,如 287,显露当年的 第287 天 int TimeHour( datetime time) 返回日期类型参数中当天的小时数,如 5,显露当天的 第5 个小时 datetime TimeLocal( ) 返回当地打算机而今时期,以秒为单元 int TimeMinute( datetime time) 返回日期类型参数中的分钟数,如17,显露第17 分钟 int TimeMonth( datetime time) 返回日期类型参数中当年的月数,如10,显露当年的第 10 个月 int TimeSeconds( datetime time) 返回日期类型参数中的秒数,如26,显露第26 秒 int TimeYear( datetime time) 返回日期类型参数中的年份,如2009,显露2009 年 int Year( ) 返回而今任职器的年份,如2010,显露2010 年 2.2.6 烛炬序列函数 咱们往往需求打算n~n+i 个烛炬的最高最低价,所以这组函数用处特别广。 iBars(NULL,0) 获取而今图外中烛炬总数 iBarShift(NULL,0,D2010.09.01) 获取而今图外自2010-9-1 往后的烛炬总数 iHighest(NULL,0,MODE_HIGH,20,4) 获取从第4 个烛炬起头的20 个烛炬周围内最高价的烛炬 序号 iLowest(NULL,0,MODE_LOW,20,4) 获取从第4 个烛炬起头的20 个烛炬周围内最低价的烛炬 序号 18 2.2.7 营业函数 合于营业函数详睹 MT4 的助助,全体用法正在本书后续的规范中会经常展示。正在这里需 要夸大的是: 1、正在自界说目标中不行挪用 OrderSend(), OrderClose, OrderCloseBy, OrderDelete 和 OrderModify 营业函数。 2 、OrderClose, OrderCloseBy, OrderDelete 和 OrderModify 函数正在挪用前务必用 OrderSelect()敕令采选订单。 2.2.8 数学、三角函数 合于数学函数详睹MT4 的助助。 值得夸大的是绝对值函数是用频率最高,咱们往往需求鉴定而今价是否到达了预期的止 盈止损,就假如用这个函数。下面是个例句: If (MathABS(Close[0]-OrderOpenPrice())

  StopLoss*Point;//即使价位到达止损 操纵这个语句的事理就正在于咱们不必去管而今订单是买入类型照样卖出类型。 2.2.9 数组函数 合于数组函数详睹MT4 的助助。正在此夸大以下几个属意事项: 1、数组的最大维数最大为4 维。 比如界说一个数组为myArray[10,10,10,10],声明该数组有4 维,每维有10 个元素。 2、维数元素序号从0 起头打算。 比如 myArray[0],就显露变量myArray 第0 个处所的数据。假使该数组界说为 10 个数 字,那么第10 个数字就应当显露为myArray[9]。 3、MQL4 不是专业的打算机斥地措辞,正在数组操纵方面有不厉谨之处。例如正在编写指 标的时分,你预先界说了一个一维数组A[] ,这个方括号里为空显露能够操纵大肆众个元素, 实践正在挪用这个数组的时分,务必先界说元素数目,不然无法取值。 2.2.10 弹出音问框函数 【源代码】 int start() { // string TradeInformtion=Buy; PlaySound(alert.wav); int MsgBoxInfo=MessageBox(商场发出营业指令:+TradeInformtion+\ n+是否营业?, 营业提示窗口,MB_YESNOMB_ICONWARNING); Print(返回音讯:+MsgBoxInfo); // 19 return(0); } 【源代码声明】 MessageBox 需求挪用mql 的函数,所以正在轨范头需求增添一个语句,不然通只是编译, 该语句后面不要跟“; ”。 #include

  2.3 自界说目标 本领目标是一种用来辅助鉴定行情的轨范,依据特定的算法经由对商场数据打算后的值 正在屏幕上用线条、箭甲第标注出来。 MQL4 原则正在统一个图标中最众只可画8 品种型的线条或者符号,为了简单认识,咱们 正在此称为8 个图层。如下图: 20 自界说目标又分为两品种型,一个是正在主图中显示,如搬动均匀线,一个是正在副图中显 示,如MACD。 正在本书的规范中有一个目标的源代码,通过认识源代码比任何陈说都有用。 第三章 编程进阶 3.1 构想战略 3.1.1 营业历程的声明 21 下面是一个完善的营业流程图: 翻开营业图外 增添本领目标 旁观行情 是否餍足入市 否 条目? 是 开仓 同时成立止损、止盈 旁观行情 删改止损/止盈价 否 位 是 是否餍足平仓 否 是否需求删改 条目 止损/止盈价位? 是 平仓 毫无疑义,全体的人城市依据上面这个流程举办外汇营业,同时获得一个结果:红利或 者耗费。正在营业历程中咱们会按照本领目标供给的信号决意买入或者卖出,再按照本领目标 供给的信号决意删改止损止盈点,结尾决意平仓出市。 自信全体的人都有一个协同的经过:当账面展示浮动红利的时分,会以为红利将不断扩 大而没有依据宗旨赚钱平仓。当行情反向运转,红利缩减的时分就会安抚己方,行情会掉头 的再等等,又没有实时赚钱平仓。行情往往会跟你的俊美志愿相悖而驰,当账面展示耗费抵 达止损点的时分,照旧梦思行情转头,乃至安抚己方说不要紧,这一点点我亏得起,结果自 然不问可知。 每位介入外汇营业的人都有一套己方熟识的目标系统来辅助决议,除此以外又有一套适 合己方的资金盘子宗旨。每一次做单都需求研讨账户保障金和下单量,开仓后展示的浮动亏 损与红利境况又成为了下一步行为的要紧参考,何如从新成立止损止盈价位,用众大的补仓 量等等,全体这些思量和活跃的目标仅仅是确保账户资金的安宁,完成稳步红利,避免展示 爆仓。我们的老祖宗说过:留得青山正在不愁没柴烧。 自信全体的人都懂得要依据宗旨奉行操作,但往往决议的时分忘掉了宗旨,这即是人性 22 的弱点,谁都驯服不了,囊括我也遁脱不了,我往往云云评议己方和中邦的汇友:亏得起, 赢不起。所以,咱们不困难出这个结论:操纵EA,可以回避人性的弱点,让操盘特别圭表, 特别厉酷依据宗旨奉行。 从营业流程图的明白咱们发掘,一朝确定了本领目标、开仓量、补仓量、止损价位、止 盈价位等等宗旨后,即是依据营业逻辑奉行了,全历程一律能够不需求人工介入,注明 EA 能够助助咱们主动盯盘,按照订定好的战略奉行开仓、平仓、挂单、删改止损止盈价位等等 各类行为,是一律可行的。 咱们正在构想战略时起码要归纳研讨以下三个方面:  价:入市的价位、止损止盈的价位  量:按照账户余额决意开仓、补仓的量  信号:按照本领目标决意入市(出市)及其宗旨 现正在以“红狼教材-EURUSD-M30”为例,起头构想战略。 3.1.2 本领目标的采选 但凡炒外汇的人城市操纵少少本领目标并将其整合,行动鉴定入市出市的参考依照。 MQL4 措辞供给了 29 个默认本领目标,囊括了险些全体常睹操纵的目标。网上也有人供给 1000 个本领目标的,本领目标的效力是供给鉴定依照,咱们险些没有须要过众相识和进修 默认值目标以外的,也不必深刻研究本领目标是何如编制的,只消懂得本领目标是否发出了 操作信号即可。 合于本领目标,能够参考我编写的《轻松研读MT4 本领目标》一文。 3.1.3 危机限度的战略 对行情走势的鉴定之后,咱们需求着重研讨危机限度。是重仓入市照样轻仓入市都是有 讲求的,你不行输了一单就猖狂加倍反向做单,那样只会加疾你账户爆仓。 开仓下单量 开仓下单量打算公式如下: 账户余额×危机系数 开仓下单量 1圭表手营业量 声明: 杠杆 1:100; 1 圭表手营业量为125000 美元; 危机系数可按照己方的接受才智成立,平淡咱们设定危机系数为5,系数大危机越高。 假设账户余额为10000 美元,列外打算如下: 危机系数 下单量(手) 1 0.08 2 0.16 3 0.24 23 4 0.32 5 0.40 6 0.48 7 0.56 8 0.64 9 0.72 补仓下单量 正在营业历程中,即使行情宗旨无误,账户可用保障金会跟着加添,为了不糟蹋一轮好 的行情,咱们需求做补仓打点,以赚取更大的利润。或者行情展示了反向,为了裁减耗费, 加大红利概率,也能够研讨反向补仓。 补仓量的巨细是按照账户净额来确定的,即使账户净额大于账户余额,声明账面红利, 补仓量能够稍微加码,反之则需求裁减。 打算补仓下单量也成立一个系数,打算公式如下:  耗费订单数目   补仓下单量 开仓下单量 1-  补仓系数  比如,补仓系数为3,耗费订单数目为1,那么这时补仓下单量即是开仓下单量的2/3 。 正在后面的逻辑明白章节中,会禁止该公式展示负数,也会打点补仓系数为0(分母为零) 的境况,不然正在轨范运转时会展示过失。 价钱颠簸限度 按照本领目标咱们发掘了入市信号,按照帐户余额咱们选定了下单量,就能够开仓了, 此时止损止盈价钱的成立是务必的,非常当你启动了EA 后脱节汇市,就显得特别要紧。 研讨到汇市改观众端,危机难以限度,红狼教材- 以M30 为最小时期周期来研讨操作策 略的,目标即是为了消释小周期(M1、M5、M15)商场展示的搅扰信号。当然这只是阅历 数据,即使你的账户是Mini 型的,杠杆又大于100,那么就要因地制宜研讨参数的成立。 纵观外汇数据图外不难发掘盘整行情众于单边行情,那么咱们就需求操纵趋向类目标 确定单边行情的到来,同时操纵惊动类目标过滤掉窄幅惊动行情。 限度价钱颠簸没有绝对的区间,这是个睹仁睹智的数据。 3.2 逻辑明白 讲及逻辑奉行,这不过打算机轨范的强项,一个订定好的逻辑轨范交给打算机要比人工 的奉行力强得众。 跟着外汇EA 化水准越来越高,很众人起头查究人工智能的打算模子,试图让打算机具 备进修才智,来应付五花八门的汇市。近来犹如网格、云打算等等人工智能专业术语充实了 所有EA 全邦。 咱们不是专家,咱们的目标是饱满操纵打算机的逻辑奉行才智来辅助咱们的决议,这就 24 简易了。 上一章针对外汇营业流程及危机限度的陈说能够获得这么一个结论:外汇营业行径中有 99%是逻辑行径,剩下的 1%是突发性事务要素,而应付突发性事务的处置计划即是成立合 理的可以接受的止损空间,这还是能够归类到逻辑行径。 本章着重针对营业行径和营业战略举办逻辑化的轨范化的明白,旨正在为下一章编制代码 拟定一个精确周详的流程。 学会流程明白是编程的须要条目。 3.2.1 EA 逻辑框架 MQL4 措辞为EA 订定了一个固定的框架,睹下图: 第一片面 参数界说模块 第二片面 初始化界说模块 第三片面 预订义函数模块 第四片面 操盘限度模块 商场展示新的 价钱变更 参数界说模块安置而今 EA 的属性,囊括 EA 运转前需求人工界说的少少商场务必的参 数(如止损、止盈点等),还能够囊括少少外部函数库的挪用和图外根本属性(如线型、颜 色等)的界说。 初始化界说模块正在EA 运转时会先奉行一次,日常用于举办和图外相合的少少属性的设 置,也能够对后续轨范中需求挪用的变量给出初始值。 预订义函数模块正在战略参数被删改后会奉行一次,紧接着再奉行初始化界说模块,战略 初次导入图外时不奉行该模块代码。 操盘限度模块是EA 主模块,当商场展示每一次价钱变更时城市奉行一次。 3.2.2 操盘限度模块流程图 25 正在图外上显示商场音讯 鉴定运转境遇 否 退出守候下一个价钱 确定能否下单 是 本领目标取值 按照本领目标及持仓单 否 数目境况鉴定是否开仓 是 未平仓订单 按照持仓订单盈亏境况鉴定 否 是否删改止损止赢 是 删改止损止赢 完成动态追踪止损止盈 仔细的人会发掘,上面这个流程图中果然没有平仓的行为?这是个兴趣的话题,此外 找时期徐徐思量回味吧。 3.3 汗青数据回测 汗青数据回测是主动化营业验证EA 轨范逻辑的一个很要紧的合头。 MT4 供给了一个效力健壮的体系测试模块,操纵汗青数据测试EA 战略的结果并提交一 份周详的测试申诉,你能够按照申诉调理EA 的战略和参数,重复举办,以期到达最佳的模 式。 汗青数据包罗了开盘价、收盘价、最高价、最低价、成交量、时期等 6 项目标,分为 M1、M5、M15、M30、H1 、H4、D1、W1 、MN 等9 个周期。 26 3.3.1 起头一个EA 测试 1、采选一个EA 加载到图外 2、点击器材栏的“智能营业”遏止智能营业 3、按F6,翻开测试窗口 测试窗口各项声明如下: 实行全体成立后,按“起头”,体系即起头测试: 27 测试完毕后,咱们能够属意查看测试申诉标签: 28 3.3.2 测试申诉中各项目标声明 测试柱数 汗青数据烛炬的总数 Bars in test 汗青数据最小模子是M1,包罗了4 个即时值格(开盘价、收盘 即时值数目 价、最高价、最低价),这4 个价钱用来模仿商场正在1 分钟内发 Ticks modelled 出了4 个新价钱(tick )。所以,M5 时期周期每个烛炬就包罗了 20 个即时值位。该目标显露正在订定时期周期内即时值位总数。 ModellingQuality = ((0.25*(StartGen-StartBar) + 0.5 *(StartGenM1-StartGen) + 0.9 *(HistoryTotal-StartGenM1)) / (HistoryTotal-StartBar))*100%; 此中: HistoryTotal 局限时期段里汗青数据烛炬总数 StartBar 起头测试烛炬的数,即使测试数据从图外的第一个蜡 复盘模子的质料 烛起头,则总数减去101 Modelling quality StartGen 设定测试时期段内起头的烛炬序数 StartGenM1 设定测试时期段内起头的1 分钟烛炬序数 看待近来时期周围数据库模子的起头和近来时期周围数据 模子的起头存正在重量系数0. 25 的区别;  看待近来时期周围数据库模子的起头和近来时期周围数据 模子的起头正在原有分钟内存正在重量系数0. 5 的区别;  正在原有时期上模子的起头和汗青数据的末尾之间重量系数 0.9 的区别。 总净红利 净赚钱值和净耗费值之间的差 Total net profit TotalNetProfit = GrossProfit - GrossLoss 总赚钱 全体赚钱营业总数的净赚钱值 Gross profit 29 总耗费 全体耗费营业总数的净耗费值 Gross loss 红利比 正在设定测试时期内净赚钱值与净耗费值的比 Profit factor ProfitFactor = GrossProfit / GrossLoss 预期红利操纵以下公式举办打算: Expected Payoff = (ProfitTrades / TotalTrades) * (GrossProfit / ProfitTrades) - (LossTrades / TotalTrades) * (GrossLoss / LossTrades) 预期红利 此中: Expected payoff  TotalTrades 营业总数;  ProfitTrades 赚钱营业总数;  LossTrades 耗费营业总数;  GrossProfit 净赚钱营业总数;  GrossLoss 净耗费营业总数 绝对耗费 AbsoluteDrawDown = InitialDeposit –MinimalBalance AbsoluteDrawDown 最大乞贷值和而今最小乞贷值的最大差异: MaximalDrawDown = Max of (Maximal Peak - next Minimal Peak) 最大耗费 最大乞贷百分比的比率等于最大乞贷和它的各自价钱的商: MaximalDrawDown MaxDrawDown % = MaxDrawDown / its MaxPeak * 100% 正在申诉中显示的其他结果能够使用简易的数学办法打算 营业单统共 正在测试里的营业总数 Total trades 卖单赚钱百分比 卖空仓位总数额和此中赚钱百分比 Short positions (won %) (卖空仓位/卖空仓位总数*100% ) 买单赚钱百分比 看涨仓位总数额和此中赚钱百分比 Long positions (won %) (看涨仓位/看涨仓位总数*100% ) 红利营业(占总百分比) 赚钱营业总数和营业总数的百分比 Profit trades (% of total) (赚钱营业/营业总数*100% ) 耗费营业(占总百分比) 耗费营业总数和营业总数的百分比 Loss trades (% of total) (耗费营业/营业总数*100% ) 最大赚钱营业 赚钱营业中取得的最大赚钱 Largest profit trade 最大耗费营业 耗费营业中取得的最大耗费 Largest loss trade 均匀赚钱营业 赚钱营业中赚钱的均匀数 Average profit trade (净赚钱值 / 赚钱营业) 均匀耗费营业 耗费营业中耗费的均匀数 Average loss trade (净耗费值 / 耗费营业) 最大延续赚钱金额 Maximum consecutive 赚钱总数和营业的赚钱系列中最大延续红利 wins (profit in money) 最大延续耗费金额 耗费总数和营业的耗费系列中最大延续牺牲 30 Maximum consecutive losses (loss in money) 最众延续赚钱次数 Maximal consecutive 正在营业总数中最大延续营业的赚钱 profit (count of wins) 最众延续耗费次数 Maximal consecutive loss 正在营业总数中最大延续营业的赚钱 (count of losses) ) 均匀延续赚钱数 赚钱系列中延续红利的均匀数 Average consecutive wins 均匀延续耗费数 耗费系列中延续牺牲的均匀数 Average consecutive losses 3.3.3 申诉中颜色的寄义 3.4 常用自界说函数 MQL4 供给了巨额的根本函数和语句,然而咱们正在编程中发掘许众的对行情的鉴定与操 作都是反复的,例如鉴定目标疾慢线是否交叉,这就需求用到自界说函数来简化主轨范。 自界说函数平淡放正在轨范的后面,函数样子与声明如下: 31 正在轨范中挪用该自界说函数的例子如下: If (myIndicators(“金叉”,Close[0]))=”Sell” 将自界说函数参数写进去,就会获得按预订算法返回一个结果。 3.4.1 最大开仓量打算 保障金的合理操纵是危机限度的要紧措施,所以打算最大开仓量就显得极端要紧。正在许 众危机限度陈说中城市有这么一段犹如的文字描摹:“开仓量为余额的 5% ”。实在这种说法 极其的不精确,乃至会导致因开仓量限度不厉酷而带来无谓的耗费。 差异泉币对的1 圭表手自正在保障金是差异的,并且即使你有持仓订单,因为价钱改观导 致账户净值也正在改观,那么开仓量(手)也会产生改观。 以下代码打算了正在而今泉币对、而今价钱的条件下,操纵整个自正在保障金(本币元)的 最大开仓量(手): double myLots=(AccountEquity()/MarketInfo(Symbol(),MODE_MARGINREQUIRED)); 此中 myBuyLots 为买入订单的最大开仓量(手),mySellLots 为卖出订单的最大开仓量 (手)。打算办法是: 账户净值 开仓量 1圭表手自正在保障金 是以,无误的5%开仓量应当为:myLots ×5% 。 咱们来看看通历程序打算显示的结果: 从上图能够看出,最大开仓量打算到了小数点后面8 位,而实践操盘时的开仓量最小为 0.01 手,即使你直接操纵这个数据,轨范会报错,所以还需求通过内置函数将开仓量截止(不 用四舍五入)到小数点后面2 位: myLots =NormalizeDouble(myLots,2) OrderSend(Symbol(),OP_SELL, myLots ,Bid,0,0,0);//开一张卖出订单 32 3.4.2 新单开仓 读者也许很奇异,体系中一条敕令就能搞定,何如还需求做这个函数呢?作家总结轨范 编写阅历得出操纵这个这个自界说函数能大大进步编程速率和质料。 正在有些ECN 平台上,操纵EA 新开仓是不许诺成立止损止盈价的,正在这里指导读者,使 用本函数尽量不要带止盈止损价钱。 【函数代码】 /* 函数:新单开仓 参数声明: 开仓类型:Buy 买入订单、Sell 卖出订单、 myLots 开仓量、myLossStop 止损点数、myTakeProfit 止盈点数 */ void iOpenOrders(string myType,double myLots,int myLossStop,int myTakeProfit) { int mySPREAD=MarketInfo(Symbol(),MODE_SPREAD);//获取商场滑点 double BuyLossStop=Ask- myLossStop*Point; double BuyTakeProfit=Ask+myTakeProfit*Point; double SellLossStop=Bid+myLossStop*Point; double SellTakeProfit=Bid-myTakeProfit*Point; if (myLossStop

  =0)//即使止损参数为0 { buylossstop=0; selllossstop=0; } if (mytakeprofit

  =0;CO_cnt--) { if(OrderSelect(CO_cnt,SELECT_BY_POS)==false) continue; else OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0); } } if (myType==Buy)//平掉全体众头订单 { for(CO_cnt=OrdersTotal();CO_cnt

  =0;CO_cnt--) { if(OrderSelect(CO_cnt,SELECT_BY_POS)==false) continue; else if (OrderType()==0) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0); } } if (myType==Sell)//平掉全体空头订单 { for(CO_cnt=OrdersTotal();CO_cnt

  =0;CO_cnt--) { if(OrderSelect(CO_cnt,SELECT_BY_POS)==false) continue; else if (OrderType()==1) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0); } } if (myType==Profit)//平掉全体红利订单 { 34 for(CO_cnt=OrdersTotal();CO_cnt

  =0;CO_cnt--) { if(OrderSelect(CO_cnt,SELECT_BY_POS)==false) continue; else if (OrderProfit()

  0) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0); } } if (myType==Loss) { for(CO_cnt=OrdersTotal();CO_cnt

  =0;CO_cnt--) { if(OrderSelect(CO_cnt,SELECT_BY_POS)==false) continue; else if (OrderProfit()

  GB T 32610-2016_常日防护型口罩本领外率_高清版_可检索.pdf

FXCG中文官网 Copyright @ 2011-2018FXCG中文官网 All Rights Reserved. 版权所有 备案号:FXCG中文官网

联系QQ: 邮箱地址: