时间:2025-03-04 21:10 / 来源:未知
钢壳之爱cg3.1.2 技术指标的选择 但凡炒外汇的人都会使用一些技术指标并将其整合MQL4 低级培训教程 作家:老易 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 WinUser32.mqh 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)//假若止赢参数为0 { BuyTakeProfit=0; SellTakeProfit=0; } if (myType==Buy) OrderSend(Symbol(),OP_BUY,myLots,Ask,mySPREAD,BuyLossStop,BuyTakeProfit); if (myType==Sell) OrderSend(Symbol(),OP_SELL,myLots,Bid,mySPREAD,SellLossStop,SellTakeProfit); } 【挪用语句讲明】 iOpenOrders(Sell,0.1,25,40); 新单开仓只必要正在函数后面跟4 个参数,分裂是业务类型 (Buy 和Sell )、开仓量、止损 点数、止盈点数,四个参数的数据类型分裂为string 、double、int、int 。 例句中参数”Sell”默示开空头订单,0.1 默示开仓量为0.1 ,25 为止损点数,40 为止盈点 数。 假若止损、止盈点数都修设为0 ,结果是新开订单不修设止损止盈。 33 3.4.3 持仓单平仓 正在编程中,往往必要反复编写平仓代码,作家特地编写这个函数,只必要一条敕令,就 能竣工众头订单、空头订单、赢余订单、赔本订单以及一共订单的平仓手脚,洪量裁减了重 复就业。 【函数代码】 /* 函数:持仓单平仓 平仓类型:Buy 众头订单、Sell 空头订单、Profit 赢余订单、Loss 赔本订单、All 一共 订单 */ int CO_cnt;//订单计数器 void iCloseOrders(string myType) { if (OrderSelect(OrdersTotal()-1,SELECT_BY_POS)==false) return(0);//采用方今持仓订单 if (myType==All) { for(CO_cnt=OrdersTotal();CO_cnt=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()0) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0); } } } 【挪用语句讲明】 iCloseOrders(All); 持仓单平仓只必要正在函数后面跟一个参数,参数类型为String 。 参数规矩如下: Buy-众头订单、Sell-空头订单、Profit-赢余订单、Loss-赔本订单、All-一共订单。 3.4.4 追踪止损 【函数代码】 /* 函数:搬动止损 参数讲明:myStopLoss 预设止损点数 功用讲明:遍历一共持仓订单,当持仓单赢利抵达止损点数时,删改止损价位 */ void iMoveStopLoss(int myStopLoss) { int MSLCnt;//订单计数器 if (OrderSelect(OrdersTotal()-1,SELECT_BY_POS)==false) return(0);//采用方今订单 if (OrdersTotal()0) { for(MSLCnt=OrdersTotal();MSLCnt=0;MSLCnt--) { if (OrderSelect(MSLCnt,SELECT_BY_POS)==false) continue
modelling_and_nonlinear_static_analysis_of_reinforced_concrete_framed_buildings_irregular_in_plan:钢筋混凝土框架开发犯法规的修模与非线性静力领会_Image_Marked文档.pdf
MNK-NICE3000new电梯一体化节制器用户手册-简版_Image_Marked.pdf
motivation_of_community_health_volunteers_in_rural_uganda_the_interconnectedness_of_knowledge,_relationship_and_action.社区矫健梦思者的动机正在乌干达乡村常识的联络,联系和活动_Image_Marked文档.pdf
MS-100仿单2-MS-100_型卤素水分测定仪_操纵仿单_1._熟.._Image_Marked.pdf
2024年南昌影视传布职业学院单招职业适当性测试题库及谜底解析.docx
2024年南昌矫健职业技能学院单招职业技术测试题库及一套谜底.docx
原创力文档创修于2008年,本站为文档C2C业务形式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中央效劳平台,本站一共文档下载所得的收益归上传人一共。原创力文档是搜集效劳平台方,若您的权力被损害,请发链接和合连诉求至 电线) ,上传者