很多人说程璧好婊用EA交易这个EA真的好用吗,无豪差吗

外汇EA智能程序交易,解决交易亏损和无法盈利的问题
& & & 科技引领金融 & & &服务创造价值文汇阁外汇智能交易系统&文汇阁EA智能量化交易系统,应用于国际外汇市场。优势是风险低,收益稳健客观;采用中性量化对冲套利策略,经严格测试,根据本系统历史测试数据平均年化收益率为89.58%!官方网址:现在冉文投资开启2种合作模式代挂模式:想要让财富稳步增值,持续盈利才是王道!文汇阁外汇EA自动交易系统100多个账户:平均年化收益率超过50%如果您想一夜暴富我们真的帮不到您但如果您想做到年收益50%以上,可以联系文汇阁外汇EA软件技术的自动交易系统。条件是您不贪心!!!我们优先接受一万美元起的理财配置。如果您想轻松获得每个月5%-9%以上的稳健的收益,那就添加客服联系方式,了解我们的风控,了解我们的系统!在线咨询微信:(QQ同号)2.直接开EA程序端口:费用请咨询客服,直接开端口你同时可以挂N个账户和N个交易策略。① 什么是EA智能程序交易外汇ea智能交易,是一种电脑程序,当经验丰富的操盘手把交易策略写入ea之后,只需要把该ea安装到交易账户中,那么这个交易账户完全不需要人来交易,只要保持电脑开着,24小时网络畅通,则账户会自动交易,24小时不停歇的为你买进卖出,赚取丰厚的利润 . 熟称一种可以自动交易的程序,自动赚钱的ATM机 .文汇阁EA研发背景:我们是一款稳健的ea,不追求暴利,不追求短期高收益,只追求长期稳定复利 . 我们研发近8年时间,该系统经过多年市场实践,胜算率达到75%-80%,每次交易动用约账户5%资金,超级电脑24小时自动扫描符合模型的交易机会,并24小时持续不停交易,同时做好风险控制措施,风险控制在投资金额的10%,熔断机制为账户资金的20%,但是触发该机制的概率极低,通过交易方式,对冲量化手段实现年化40%-100%收益率 .② 文汇阁EA交易策略有哪些交易策略是综合交易策略一套好的交易策略必定是综合交易策略,外汇行情走势不是单一趋势,或者单一的震荡,而是趋势与震荡的结合,大概80%趋势行情,20%震荡行情,每天都会有大突破、小突破,偶然的出现黑天鹅性的超级大波动,快速下跌或者拉升行情,趋势里面分为,有明显波浪带回调的趋势,还有非常强势连30点回调都没有的趋势……所以任何一种单一的交易方法都无法获得稳健的收益,单一的策略对于行情的适应性并不好。而综合交易策略对于外汇行情的转换的要求更高,对于外汇交易策略的设计需要多年的操盘手,加上及其严格的风控手通过长期的磨合才能达成,并要在实盘交易中不断地调整ea模型的参数,才能保证交易账户在交易过程中能够比较平稳.现代金融投资追寻“趋势”但是对价格的运行幅度不能绝对正确,通过大量的研究各种不同市场条件组合的,价格运行幅度在固定区间内的发生率,所以操盘手不能以单次行为结果为追求目标,只能以N次重复投资行为的总结过为追求目标,因此:“在金融投资范畴,把N次重复的投资盈利的必然性建立在单次驼子行为盈亏随机性的基础上是一个正确的投资哲学思想保守的交易思路弱化基本面运用,研究均线,画趋势线,研究简单的技术指标,以以往行情,以每日相对独立原理、临界点原理和波浪原理为理论基础,以时间做为筛选条件,以开盘价为起点,以波浪理论为框架,以突破原理为补充,结合个人风险承受能力和动态止损严格控制交易风险,充分考虑震荡走势、趋势走势、时间之窗、敏感新闻时间、波动幅度空间、三大交易时段等综合因素.综合系统如下以稳定盈利为根本目标, 以下交易系统:a、顺势交易系统(7种时段和空间顺势)b、突破交易系统(零界突破+形态突破)c、量化对冲系统(6~9种货币形成对冲)d、空间量化情绪交易资金越大,利用率越高,可同时采取多种交易策略进行交易,多种策略之间互相进行对冲并且综合交易风险更加低,收益同步提升.C策略:本策略属于大止损加仓法的系统,首次入市仓位较低,通过补仓来摊平成本,本策属于大止损策略,平时成功率较高,遇到极端情况的亏损也非常小,因为加仓的次数有限制,也不是倍数加仓,而是递增加仓最多7次交易,月受益稳定在5%以上。③ 文汇阁EA盈利能力如何太高收益风险大:EA在国内已经被越来越多人接受,也有许多投资者在寻求一款好的EA,也有很多人尝试过确亏损了,甚至爆仓了,究其原因是急于求成,追求过高的收益,没又把风险控制做好,网络上有许多宣传月收益10%以上,这么高的收益面对的风险也会很大,短期收益很高,但确难长久,所以首先放低自己的欲望,用平常心来寻找稳定的EA,自然会事半功倍 . 这样的心态找到的ea,风险就很小了.盈利能力收益率在年化40%-100%左右,如果行情规律会更好.不同资金的账户,收益率会不同,因为使用的交易策略不同1万-5万美金,使用策略:趋势交易策略+对冲量化交易10万美金,使用策略:趋势交易+震荡交易50万美金,使用策略:趋势交易+震荡交易+突破交易100万美金,使用策略:……所以:1、入金≤5万美金 & &预期年化收益50%;2、入金10万美金 & & &预期年化收益60%;3、入金20万美金 & & &预期年化收益65%;4、入金50万美金 & & &预期年化收益65%;5、入金100万美金 & &预期年化收益40%;&精细的资金管理体系精细的资金管理体系:1、我们对每位客户私人订制操盘系统2、对于不同资金的客户,定制不同的交易策略3、对于不同风险承受能力的客户,定制不同的交易策略4、例如20000美金客户,承受风险是10%,期望收益是年化50%,触发熔断强制止损线20%的概率必须低于1%5、例如100000美金客户,承受风险是10%,期望收益是年化60%,触发熔断强制止损线20%的概率必须低于0.1%6、同时很抱歉,我们只接受最低开户10000美金以上的交易账户,原因是外汇市场可以盈利,但资金太小,无法获得稳健的盈利.EA如何应对未来复杂的行情走势从容应对各种行情1、窄幅震荡走势:这个行情里,我们的系统是赚钱的.2、宽幅震荡走势:这个行情里,我们的系统是锁仓的.3、新闻款速波动走势:这个行情里,我们会避开不交易或者降低仓位,或者反向挂单锁仓.4、大单边不回调走势:这个行情里,我们会赚的比较丰厚,超出我们的目标.5、小单边常回调走势:这个行情里,我们赚的利润会达到目标.6、一般黑天鹅走势:这个行情里,我们会在亏损50点-100点左右锁仓,以观后效.7、极端黑天鹅走势:这个行情里,如果方向不对,会有略微2%以内的止损.例如瑞郎黑天鹅事件,我们也亏损了1.5%,因为我们在瑞士的交易资金大概占到0.25%,而且有反向止损挂单.严格交易仓位管理严格的交易仓位管理  以2%的原则来管理账户风险,就行为结果而言,被市场以连续亏损形式消灭的概率比飞机死死的概率小五万倍.  1、单笔仓位有限制,一般在0.3%-1%之间.  2、总体仓位有限制,一般在3%以内.  3、不存在无限制的网格加仓.而且交易多品种,每个品种仓位都很轻.严格的熔断机制:严格的风险控制熔断机制:  1、防止黑天鹅爆发性事件:电脑自动反向保护单,有效防止黑天鹅事件 ,例如日本大地震,美国911事件,瑞朗事件.  2、防止下错单:只要大于我们的计划单量1%的仓位,电脑每秒巡查10次,自动检索错误并强制平仓.  3、控制净值在10%的亏损强制止损.  4、控制净值在20%的亏损强制止损对于不同的资金收益不同历史罕见黑天鹅事件如何处理黑天鹅是任何人都无法克服的行情,但是我们可以尽量避免,EA的策略一定要可以容纳这种突发,在这种最坏的行情中能够稳健的EA,才是真的可以走的长远.首先是预防措施:我们的日常交易系统并不是把仓位放在一个货币上,分了多个品种交易,即便遇见黑天鹅风险突发行情,我们只有1-2个品种会产生损失,这种做多个品种的方法能够很好地降低突发事件风险,本金可以说是毫发无损.其次是处理措施:我们每一个账户都有强制熔断机制。而与其它市场上的EA不同的地方:其它ea临时反应,已经来不及了,交易仓位大一点的,直接就爆仓了,非常血腥.或者选择逆势加仓,而不是减仓,这无疑加速了爆仓速度,提高了爆仓比例,非常被动.止损上提功能:止损按照季度上提 本金无忧  例如10万美金的账户本金,当我们经过一段时间的交易,账户资金增长到了12万美金,此时该账户的止损线会上提,提高到账户的本金位置,即10万美金,确保日后的交易,任何事件的发生都不会亏损到账户的本金.利用盈利去博取账户后期收益.应对意外事件高端硬件配置保持EA运行环境稳定:1、稳定的网络,交易服务器,有专业网络工程师保障24小时不断网,不停电2、笔记本备用电源3、平板电脑备用电源4、4G联通与电信网络同时启动自主研发内核操盘手系统:我们自主研发集合交易系统:  我们自主研发集合交易系统,而非市面上的TPL4或者PAMM或者MAM或者MutilTermail的操盘手系统,这些系统都比较僵硬,不能实现我们复杂的计算模式,不能实现复杂的策略搭配模式,不能在100毫秒之内统一平台,不能在1秒钟内强制止损,总体为不能快速的进行我们想要的效果,我们对于集合系统的要求是100毫秒必须处理所有要求,而以上系统有的长达1分钟,在国际波动外汇市场,1分钟我们可能损失整个天下.  我们自主研发的系统可以瞬间处理所有订单,整体平仓,分批平仓,完全止损,整体修改盈利和止损,量化交易等等.当然我们有个前提,有满意的机房和高配置至少双CPU双显卡的服务器主机.所以我们可以对不同资金的账户,不同客户的要求实行私人订制的交易效果,风险控制和盈利预期.复利交易原则真实实盘业绩及观摩账户业绩展示:使用我们操盘技术,实现86%收益我们与其它做EA不同的唯一不同的地方就是处处都不同,我们追求精湛和优美,把风险控制放在第一位,从不冒险,爆仓亏完更是遥不可及的事情.观摩账户:即将对外公开我们的目标:打造交易行业第一品牌!外汇这个财富巨大的投资市场,全球最大的投资市场,能盈利的很多,能长期盈利的极少能长期稳定盈利的更是凤毛菱角我们在这个行业从业十余载,潜心研究,终获成果。致力打造外汇EA智能交易第一品牌!因为我们做到稳定盈利!这远远不够!要继续努力,开拓进取!外汇市场40年间,6万亿美元日交易额& & & & & 跃居世界金融市场首位& & & & &&&&外汇市场作为一个国际性的资本投机市场,时间要比股票、黄金、期货、保险等市场短得多,然而,它却以惊人的速度迅速发展。外汇市场已经成为全球利润最高的行业.&今天,外汇市场每天的交易额已达6万亿美元,40年间,跃居世界市场首位,其规模已远远超过股票、期货等其它金融商品市场,已成为当今全球最大的金融市场。纽约证券交易所每天股票的交易额只有几百亿美元,可见,外汇市场不仅是全球最大的金融市场,也可以说是全球最大的商品市场。&在欧美等成熟金融市场,每个家庭至少有三分之一财富投资外汇,日本每家每户都投资外汇,中国从证券期货转入外汇的越来越多,2015年是中国兑现WTO全面开放金融市场最后期限,外汇投资会得到飞速发展.&随着人民币成为世界货币,国内投资者的投资方向都在发生改变,已经从单一的境内投资转向增加配置境外投资,而外汇投资则是境外投资的首选.&中国人民银行行长周小川在日出席中国国务院主办的2015中国发展高层论坛时指出,2015年是中国“十二五规划” 的最后一年,中国的资本市场将更加开放,包括债券和股票发行者都将有更大的自由度。同时,还进行了《外汇管理条例》的修改,也表明了中国外汇市场将进一步开放。外汇市场在当今的中国即将迎来井喷的发展,最新统计,光在上海地区投资能力在600万以上的人群就有200万,国内的资金热钱太多,以至于找不到安全的投资渠道。国内的银行利息一降再降,股市刚经历股灾,需要多年才能恢复信心,房产市场的各种政策使得投资资金无处可去,而外汇市场以其独特的优势,越来越受到投资者的欢迎,未来20年,将迎来外汇市场发展的黄金20年.加入我们1、提供资金安全的外汇平台2、提供全套EA智能交易技术文汇阁智能系统:一站式EA交易技术服务商& & & &我们提供全套ea服务,确可以让您账户稳定增长,所以文汇阁是一个提供整套外汇交易技术解决方案的服务商.如果你是一个理财公司、或经纪人或者投资人,自己的交易团队技术还不够稳健、需要技术团队进行合作,那与我们全方位的合作符合你的最大的利益.为什么要加入我们& & & &金融行业是非常专业的行业,外汇投资又是金融行业中最专业的品种.没有任何一个人可以既做好营销,又做好技术.只有合作,才能在该行业越做越好,做大做强&.资本市场最缺的是技术,稳定盈利的技术,从来不缺资金,而我们的优势就在于技术稳健,所以只要账户稳定盈利,让客户找你,而不是你找客户.& & & &在外汇行业十余年,见过太多太多带着梦想进入外汇市场,确带着失望悄然离开的同仁,也见过太多投资公司从设立到辉煌,最后清算,甚至挑战法律最后失去自由的人,外汇行业的潜在利润使得只要进入这个行业之后再也不愿意离开。但是这个行业的专业性非常强,并且近5年来,外汇行业在各国都开始规范起来,美国NFA,英国FSA都给予了非常重视的监管力度,越往后发展,专业性越发显得重要。我们始终认为要在金融行业有所发展必须是以客户利益为中心,客户服务做到位,但目前国内99%的外汇公司将服务停留在表面,提供的是培训服务,提供的是喊单服务等等,没法提供完整交易策略给客户,而客户自身不够专业,必须有强有力的技术支持,客户才有可能在这个投资市场盈利。如果客户保持稳健盈利,外汇公司才会越做越顺越做越大,客户越来越多。如果客户不盈利,公司面临的是员工离职,客户流失,公司收益日渐降低,最后只能歇业。任何的喊单、任何的汇评、任何的培训都只是停留在把客户当学生的阶段,尽管客户努力学习依然改变不了亏损的结局,必须抓住本质,提供给客户切实可行的、稳健的盈利技术解决方案。&&&&&&与我们合作的意义在于,您完全可以把有限都是时间精力投注于市场开发及客户维护,账户交易的事情我们进行全面的安排.&最终实现市场在口碑相传之下快速增长,变被动营销为主动,等待客户慕名上门开户的场面.合作优势省心----我们提供的全套ea服务,代理商不再需要请分析师,不再需要搭建操盘团队,只需要保留客服团队及讲师为客户做讲解,销售团队 ,省时----合作就可以开始做业务,不需要二次学习的时间,省钱----不用再交学费,我们的ea可以放客户账户直接赚钱,省力----所有的维护及交易技术调整,我们技术团队会做好所有工作 ,客户的投资收益① 入金1万美金 -- 文汇阁EA趋势对冲系统,止损线10%,对应年收益50%以上止损线20%,对应年收益60%以上止损线30%,对应年收益100%以上② 入金10万美金以上&-- 文汇阁EA趋势量化对冲系统,止损线15%,获得年收益50%以上& &&国际外汇黄金市场永远是最赚钱的金融市场,炒外汇炒黄金一夜暴富的例子司空见惯,但是普通人苦于没有投资经验,没有交易方法,没有交易技术,想从这个机会每时每刻都有的市场分一杯羹难上加难。但是有了文汇阁EA是智能化自动交易程序,一个自动帮您赚钱的机器,只需将系统植入你的账号,自动交易系统会帮您完成,您只需要每个月坐等收益!坐享其成!EA软件技术研发的:文汇阁EA智能交易系统,是经过了近多年的不断试验与改进后,证明可以提供持续稳定盈利的交易系统,我们通过对历史数据的离散采样统计,找出交易产品的价格、宏观经济、市场指标、技术指标等各种指标间变化的数学关系,发现获胜概率最大的数学模型,再按百分比概率自动分配资金,能够量化每笔交易手数。对交易的把控更加精确量化,让账户的风险降至最低,在利润增长的同时兼顾风险的控制。一、自动交易系统的优势▌&强大的执行力。文汇阁EA是智能化自动交易程序,它能够24小时捕捉行情,准确判断机会,做到入场准、平仓快。 只需设置好相关参数,EA程序将严格执行交易策略,敏感的响应价格变动和趋势变动,避免人工交易出现的失误。▌&克服人性的弱点。EA程序化智能交易能够克服人工交易心态的干扰,不犹豫、不贪心、不恐惧,真正做到赢则不骄傲自满,亏则不沮丧失落,避免情绪化交易出现不必要的损失。▌&严格的风险控制。EA程序化智能交易将多年操盘经验总结成一套完善的交易体系,对交易的仓位比例,下单手数,止损点位都经过周密的计算;当行情判断正确,能够及时止盈;当行情出现反转,能够严格止损。▌&持续稳定的盈利能力。多年操盘经验,稳定盈利能力,融合众多高级交易员的交易经验与智慧,24小时不间断交易=24小时不间断赚钱,真正的赚钱机器。&二、&文汇阁智能EA运转原理▌&24小时不间断执行交易策略,主要交易产品:欧元/美元,英镑/美元,美元/日元,英镑/日元,澳元/美元,布伦特原油,黄金等主流交易品种。▌&交易纪律:资金安全第一,严格控制风险,不逆势加仓,不重仓交易,复利法则。可根据初始资金设置仓位大小和开仓数量,占用保证金少;可自动设置止损,盈利自动移动止损锁定收益。▌&完美自动运转,也可人工介入交易,不错过任何交易机会,达到最大的收益价值。▌&完善的风险控制,重大行情预警过滤+指标趋势算法,下单小,仓位轻,胜算高,积少成多,最终实现稳定盈利。系统自带重大行情预警机制,自动分析基本面数据。三、文汇阁EA智能交易系统主要特点&1、多重策略。多年测试调整,融合网格、对冲、趋势、指标算法等策略。2、开仓合理。重大行情预警机制+辅助参数:ADX/ATI/均线,自动响应行情。3、加仓适当。适当加仓,不死扛,自动对冲锁单,有效避免爆仓风险。4、稳健为主。网格类EA中回撤和收益比最稳的EA,月收益稳定5%以上。5、VPS运行。成交速度快,稳定不掉线。为什么EA自动交易系统要代运行的方式合作?文汇阁EA合作采取EA代挂的方式合作。EA代挂服务,即智能交易系统代运行服务。投资人将个人交易账号提供给运行方,由智能交易程序运行方代为运行,运行期间运行方负责交易程序的日常维护,账户交易情况的人工监督,如果交易系统程序有任何调整,需及时跟新账户交易系统程序,以保证策略的完整性和延续性。一、EA代挂合作的优势▋&专人专户,资金安全EA智能交易系统代挂服务不同于普通p2p,私募基金,等理财方式;他不需要把资金转给任何机构或个人,而是存入自己的交易账号,类似股票或者期货交易账号,通过账号托管的方式由EA智能交易系统运行方代为运行。以炒股为例:您在证券公司开立个人股票交易账号,绑定自己的身份证和银行卡,然后把该账号交由“炒股达人”代为操作,交易账号取出资金只会回到您本人的银行账号,任何人都无法将您的本金转走。文汇阁EA智能交易系统代挂服务就像上述例子中的“炒股达人”,只不过您开立的不是炒股账号,而是外汇交易账号。作为文汇阁EA运行方只是拿到您的交易账号,完全无法接触到投资者的本金,这样的方式能够避免圈钱跑路,资金池等资金安全方面的风险,可谓是最保险安全的理财方式。然而市场上提供EA代挂服务的机构很多,有些机构虽然提供EA代挂,却是集资方式的EA代挂,就是集中一部分人的资金在同一个账号,由一个账号统一进行交易,利润按比例分成。这种方式其实是非常不安全的,试想资金一旦存入别人的账号,别人是否会直接把钱款提走也未可知。文汇阁EA代挂是最安全的专人专户代挂方式,不论多大资金的账户,都是自己的账户自己完成资金存取。 文汇阁EA不集资操作账户,而是通过虚拟主机跟单实现多账户无延迟同时交易,账户投资者可以放心。▋&文汇阁EA代挂,赚钱看的见市面上有一种EA代挂服务机构虽然是专人专户的合作方式,但是交易账号却是封闭的,就是EA运行期间任何人包括投资者本人都不能够登录自己的交易账户查看交易情况,只有在账户开放的时间才能够登录查看,有的每周开放一次,有的一个月才开放一次。这种封闭交易的方法对于投资者来说是非常危险的,一方面无法知晓账户资金情况,另一方面无法实时查看交易情况,账户亏损了也不知道。文汇阁EA代挂采取了非常透明的合作方式,投资人可以使用只读密码随时登录交易账号,只要有网络,有一台电脑或手机,就可以通过MT4交易软件查看交易历史记录和资金情况,观看账户的所有交割单,完全100%的了解账户动态,做到自己的账户自己了如指掌。&▋&持续稳定盈利能力,风险有保障以下三个方面作为保障:& &&& &&&●&外汇市场得天独厚的交易优势外汇市场投资周期灵活,T+0随时买卖的交易规则,上一秒钟买入美元,当发现下错单子之后,可以立刻卖掉,这点不同于股票,股票必须隔天卖出,这隔的一天,足矣产生足够大的风险和损失。● 文汇阁EA持续稳定的盈利能力造就高收益冰冻三尺非一日之寒,比起重仓豪赌,不是翻倍就是爆仓的激进交易风格,文汇阁EA更加注重细水长流的稳健性利润增长,下单小,仓位轻,胜算高,积少成多,最终实现稳定盈利。历史平均月收益5%-30%,真正实现财富增值。●&投资风险双重保障文汇阁EA完善的风控交易体系能够在交易过程中很好的控制风险,独创三段式交易方式,提倡用利润赚取利润。签订合作协议。综合以上,文汇阁EA代挂,轻松、安全、稳健就能走在市场前沿,享受高级投行机构能够获得的高收益,您值得拥有!&二、&简单三步开启滚雪球模式&▋&开立外汇交易账号▋&联系客服签订协议▋&开始运行EA获取收益文汇阁是谁& & & &&文汇阁是上海冉文投资管理有限公司打造的一个专业从事外汇交易的团队,专注外汇EA智能程序化交易,以追求稳定盈利为目标.,旗下有多套不同交易风格的EA智能交易程序.适合外汇市场99%的行情走势.特别适合大波动及大趋势行情.我们对风险控制极其严格,每个订单均有止损并设有账户10%的清盘止损线,一旦遇到不可控的金融危机,账户最大的损失为10%并会触发熔断机制.(也可根据投资者设置熔断比例)。EA智能程序24小时进行交易,对冲交易,量化计算盈利,对冲控制风险,通过快速高频率的交易获得年50%以上的稳定收益.EA智能交易程序是目前最先进交易方式, 是外汇交易行业的革命.从根本上打破了不能长期稳定盈利的魔咒.在EA程序化交易诞生之前,均为人工盯盘手动交易,而这种交易弊端显而易见,交易员的人为情绪“恐惧、贪婪、迟疑、赌性”等四大交易心理障碍,使得操盘手最终不能长久,最终走向亏损的结局.EA程序化交易方式可以克服人性的弱点,避免了情绪化操作,实现了100% 的执行力,24小时连续工作,完全无需休息,在别人睡觉的时候EA也会自动扫描高概率交易机会,并且盈利.文汇阁EA交易程序包含量化交易、对冲交易、方差偏离交易、时空交易及多位套利交易,是一套全自动智能量化交易程序系统,自动分析国际经济形势,扫描高概率交易机会,自动开仓平仓、加仓、减仓,对不同资金的账户自动分配交易比例,自动做好风险控制. 该EA程序年化收益约为40%-65%,常规回测6%,最大回测10%. 有严格的熔断机制,最大总交易仓位控制在2%-3%左右,单笔交易最大1%仓位,通过快速的交易方式,累积丰厚的利润.为了防止黑天鹅事件,EA自动选择多品种分散交易,将交易量打散到不同的货币上,并且保持轻仓,如此便能轻松安全防御.其实一开始大部分散户都是赚钱的,只是贪心、欲望、不止损、并且逆势无节制的加仓等屡次都改不掉的习惯,导致一次次亏损,无缘盈利.而智能交易程序电脑执行操作,完全避开人的情绪问题.实现稳定盈利的必备武器,也是目前唯一能做到稳定盈利之交易方式.官网:现在冉文投资开启2种合作模式代挂模式:想要让财富稳步增值,持续盈利才是王道!文汇阁外汇EA自动交易系统100多个账户:平均年化收益率超过50%如果您想一夜暴富我们真的帮不到您但如果您想做到年收益50%以上,可以联系文汇阁外汇EA软件技术的自动交易系统。条件是您不贪心!!!我们优先接受一万美元起的理财配置。如果您想轻松获得每个月5%-9%以上的稳健的收益,那就添加客服联系方式,了解我们的风控,了解我们的系统!在线咨询微信:(QQ同号)2.直接开EA程序端口:费用请咨询客服,直接开端口你同时可以挂N个账户和N个交易策略。更多资讯、EA详情、合作详情可添加官方客服或关注微信公众号:文汇阁智能交易文汇阁外汇EA软件技术&文汇阁EA软件技术是一家专业的外汇交易EA智能交易研发机构和EA交易策略服务商,致力于为广大投资者提供有价值的交易策略,将多年专业操盘经验策略转化为自动交易程序,采用华尔街最先进的全自动EA机器人智能交易系统进行交易,实现交易账户稳定持续盈利。让广大投资者不用学习操盘,即可获得与交易高手一样的收益。想加入多个更专业的500人外汇交易微信大群吗?添加如下小编个人微信拉入群。你只有成为行业的顶尖才能影响别人!如果,您觉得这篇文章触动了您。请动动您的高贵的手指转发一下
文汇阁智能交易最新文章
微信号:rwfxrw扫描二维码关注公众号 文汇阁智能交易平台适用于外汇、期货、指数等多个金融交易产品,其中包括:智能交易系统、智能分析系统、自动跟单系统、智能对冲系统、万能行情转换器、交易信号专家、智能交易服务器以及各种辅助工具等,从而彻底解决了您在金融衍生品投资市场中的所有问题!
Copyright2017.杨邱自媒体资讯站,让大家及时掌握各行各业第一手资讯新闻!EA交易, 脚本程序和指标的同步
我的图书馆
EA交易, 脚本程序和指标的同步
  简介  使用MQL4开发并在MetaTrader 4客户终端中运行的有三种程序:  - EA交易;  - 脚本程序;  - 指标.  它们中的每一种都是为了解决某一范围的问题. 让我们给这些程序一个简要的描述.  1. MQL4 用户程序的简要描述  1.1. EA交易  EA交易是用于实现获利交易策略的主要类型的程序. EA交易的突出特点如下所列:  1. 能够使用支持交易的内建函数.  2. 能够人工修改外部设定.  3. 根据规则, 特别函数start()会不断运行. 它是按每次订单时刻运行的. 当有新的订单来临的时候, 此函数用到的整个环境的参数都会被更新.&例如, 变量 bid 和 ask 都会有新的数值. 代码执行完毕后, 也就是 - 运行到操作符 return, start() 函数就会结束它的操作并休眠直到有新的订单来临.  1.2. 脚本程序  脚本程序和EA交易非常类似, 但是它们的特性有一点不同. 脚本程序的主要特性罗列如下:  1. 脚本程序也可以使用交易函数.  2. 外部设定的参数在脚本内不能改变.  3. 脚本程序的主要特性是它的规则, 脚本程序的特别函数, start()在被附加到图表并初始化后只会运行一次.  EA交易和脚本程序附加到某个交易品种的图表后, 它们没有特别的子窗口.  1.3. 指标  与EA交易和脚本程序不同, 指标有另外的意义:  1. 指标的主要特性是, 它可以根据其实现的原则绘制连续的曲线.  2. 指标中不能使用交易函数.  3. 指标是按订单时刻运行的.  4. 根据参数实现的不同, 指标既可以在交易品种主窗口中, 也可以在自己的子窗口中运行.  以上我们列出了自定义程序的主要特征, 下面我们会进一步研究.  我们可以看到, 没有一种自定义程序具有程序的所有属性: EA交易和脚本程序不能绘图, 而指标不能交易.  如果我们的交易系统需要在交易过程中使用自定义程序的全部属性, 唯一的方案是同时使用EA交易, 脚本程序和指标.  2. 问题声明  让我们研究一下需要同时使用全部自定义程序的标准条件.  2.1. 时效性  任何用户的操控必须立即执行. 基于EA交易的程序并不总能满足这个目标. EA交易的主要缺点就是它对外部行为不够敏感. 有此局限的原因很简单: EA交易的基本代码是按订单时刻运行的.如果用户命令EA交易关闭一个订单而EA却在等待下一个订单时刻, 那么会发生什么呢?这个问题的答案依赖于EA交易是怎样实现的. 有些情况下, 命令会被执行, 但是有些延迟.  程序也可以这样组织, EA交易的主要代码连续执行而不会在订单之间中断. 为此目标, 需要重新组织特别函数start()在其中实现一个无限循环, 然后把程序的主要代码都放在其中. 如果在每个循环的开始都强制更新环境信息, 整个复杂工作就可以成功完成. 循环EA交易的不便之处就是不能打开设置面板了. 在EA交易中使用循环 - 然后你不能对它进行设置.  这种想法也可以通过使用脚本程序实现. 也就是在脚本程序内使用一个无限循环. 但是在脚本程序中不能配置参数.  交易系统的可自定义和执行用户命令的时效性在连续运行模式下只能通过同时使用EA交易做设置, 而使用脚本程序做立即执行.  2.2. 感知能力在一些情况下, 需要从交易中获取信息. 例如, 每个交易者可能都想知道, 在某个时刻(例如重要新闻发布的前两分钟), 交易中心已经把设置挂单时接受的最小距离从正常的10个点改成20个点了. 另外, 作为规则, 交易者希望知道交易服务器拒绝执行订单的原因. 这些以及其他一些有用信息可以在指标窗口中用文字显示. 同样, 在持续运行的情况下,&旧的信息会不断上移而为从交易系统获得的新信息腾出空间.&在这种情况下, 就需要把用于显示的指标绑定到进行交易的EA交易或脚本程序中.  2.3. 控件  如果您使用的交易系统包含增强的界面, 其控件(图形对象)最好放在指标窗口中. 这样我们就能确保价格烛形趋势不会覆盖我们的控件, 从而不会影响我们的操控.  2.4. 系统需求  在本例中, 最终产品的主要需求是同步的操作, 所以,&开发一个基于全部三种程序的系统, 需要把任务分配到它的全部组件中. 根据我们系统中的每一类程序的特性, 我们可以如下定义它们的属性:  脚本程序 - 提供包含分析与交易函数的基本代码;EA交易 - 提供设置面板;  指标 - 提供子窗口区域用于显示控件和信息.  3. 软件解决方案  让我们立即指出, 在最小需求范围内基于这三个组件的程序结构. 如果您打算在实际中使用此应用程序, 您必须自己详细了解它的分析和交易操作功能. 但是以下提供的资料已经对开发结构方面足够多了.  3.1. EA 交易  让我们详细了解EA交易所包含的内容以及它如何工作.  // Expert.mq4  //====================================================== 包含头文件 =======#include &stdlib.mqh&  #include &stderror.mqh&  #include &WinUser32.mqh&  //======================================================================#include &Peremen_exp.mq4& &// EA交易变量的描述.  #include &Metsenat_exp.mq4& // EA变量预先定义.  #include &Del_GV_exp.mq4&  // 删除EA交易创建的全局变量.  #include &Component_exp.mq4& // 检查组件是否可用.  #include &Component_uni.mq4&  // 指标中关于组件不可用的信息.  //======================================================================//  //  //======================================================================int init()  {  Fishka=1; & & & & &// 我们在init()函数中  Metsenat_exp(); & // 预先定义EA变量.  Component_exp(); &// 检查组件是否可用    }  //=====================================================================int start()  {Fishka=2; & & & & // 我们在 start() 函数中Component_exp(); &// 检查组件是否可用    }  //=====================================================================int deinit()  {  Fishka=3; & & & & // 我们在 deinit() 函数中Component_exp(); &// 检查组件是否可用  Del_GV_exp(); & & // 删除EA交易中的全局变量.    }  //======================================================================在特别函数 init() 中, 使用了两个函数 - Metsenat_exp() 和 Component_exp()Metsenat_exp()  - 预先定义一些变量的函数.  // Metsenat_exp.mq4  //=================================================================int Metsenat_exp()  {  //============================================ 预先定义 =====Symb & & = "_"+Symbol();  GV & & & = "MyGrafic_GV_";  //=============================================&全局变量 ====GV_Ind_Yes = GV+"Ind_Yes" & +S  // 0/1 确认指标已经载入  GV_Scr_Yes = GV+"Scr_Yes" & +S  // 0/1 确认脚本已经载入  //-------------------------------------------- 公开使用 ----GV_Exp_Yes = GV+"Exp_Yes" & +S  GlobalVariableSet(GV_Exp_Yes, 1 );  GV_Extern &= GV+"Extern" & &+S  GlobalVariableSet(GV_Extern, &1 );  // &用 AAA 作为例子:  GV_AAA & & = GV+"AAA" & & & +S  GlobalVariableSet(GV_AAA, & AAA );  //==================================================================  }  //====================== 模块结束 =============整个应用程序维护的任务之一就是追踪全部组件的可用性.&这就是为什么全部组件(脚本程序, EA交易和指标) 互相之间必须追踪, 如果一个组件不可用, 就要停止工作并通知用户.&为此, 每个程序都通过在起始阶段发布全局变量通知其可用. 在提供的例子中, 在EA交易的 Metsenat_exp() 函数中,&将如下实现:  GV_Exp_Yes = GV+"Exp_Yes" & +S  GlobalVariableSet(GV_Exp_Yes, 1 );  Metsenat_exp() 函数被EA交易的 init() 函数调用,&也就是说, 它只在载入或者修改外部变量值的时候使用一次. 脚本程序必须'知道'改变的设置, 这就是为什么EA交易通过修改全局变量GV_Extern的值来通知脚本程序:  GV_Extern &= GV+"Extern" & &+S  GlobalVariableSet(GV_Extern, &1 );  Component_exp()  - 一个用于完备性控制的函数. 更多的场景依赖于使用Component_exp()函数的EA交易的特殊函数.  // Component_exp.mq4  //===============================================================================================int Component_exp()  {  //=============================================while( Fishka & 3 && & & // 我们在 init()函数或者 start()函数中..  (GlobalVariableGet(GV_Ind_Yes)!=1 ||  GlobalVariableGet(GV_Scr_Yes)!=1))  { & &// ..而程序尚不可用.  Complect=0; & // 因为如果有一个不可用, 就会出错GlobalVariableSet(GV_Exp_Yes, 1);  // 通知EA交易可用  //--if(GlobalVariableGet(GV_Ind_Yes)==1 &&  GlobalVariableGet(GV_Scr_Yes)!=1)  {//如果指标可用而脚本程序不可用, 则..  Graf_Text = "脚本程序尚未安装.";  // 消息文字  Component_uni();  // 把消息文字写到指标窗口.  }  //-Sleep(300);//  {ObjectDelete("Necomplect_1");  // 删除不需要的通知组件不可用的信息  ObjectDelete("Necomplect_2");  ObjectsRedraw(); // 为了快速删除Complect=1; & &&& &// 如果我们离开了循环, 说明所有组件都可用}  //if(Fishka == 3 && GlobalVariableGet(GV_Ind_Yes)==1)// 我们在 deinit() 函数中, 并且有空间写入指标信息{//--------------------------------------------if(GlobalVariableGet(GV_Scr_Yes)!=1) &// 如果没有可用脚本程序,{  Graf_Text = "EA组件和脚本程序没有安装";  // 信息 (因为我们正在退出)  Component_uni(); & & // 在指标窗口写文字信息}  //-}  //==  }  //========模块结束 ========脚本程序和指标的可用追踪是基于对应全局变量的读取的 - GV_Scr_Yes 和 GV_Ind_Yes. 如果组件中有不可用的, 将会一直无限循环直到达到完备性, 即指标和脚本程序全部安装完毕. 应用程序将会通过Component_uni()函数通知用户当前的状态. 它是包含在所有组件中的通用函数.  // Component_uni.mq4  //=======================int Component_uni()  {  //=================================================//Win_ind = WindowFind("Indicator");  // 我们的指标窗口编号是多少?  // ObjectCreate ( "Necomplect_1", OBJ_LABEL, Win_ind, 0, 0 &);// 在指标窗口中创建一个对象  ObjectSet & &( "Necomplect_1", OBJPROP_CORNER, & & & &3 &);// 相对右下角的坐标  ObjectSet & &( "Necomplect_1", OBJPROP_XDISTANCE, & 450 &);// X方向坐标..  ObjectSet & &( "Necomplect_1", OBJPROP_YDISTANCE, & &16 &);// Y方向坐标..  ObjectSetText("Necomplect_1", Graf_Text,10,"Courier New",Tomato);// 文本, 字体, 和颜色  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Graf_Text = "应用程序无法工作.";  // 消息文字  ObjectCreate ( "Necomplect_2", OBJ_LABEL, Win_ind, 0, 0);// 在指标窗口中创建一个对象  ObjectSet & &( "Necomplect_2", OBJPROP_CORNER, & & & &3);// 相对右下角的坐标  ObjectSet & &( "Necomplect_2", OBJPROP_XDISTANCE, & 450);// Х方向坐标..  ObjectSet & &( "Necomplect_2", OBJPROP_YDISTANCE, & & 2);// Y方向坐标..  ObjectSetText("Necomplect_2", Graf_Text,10,"Courier New",Tomato);// 文字, 字体, 颜色  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ObjectsRedraw(); & & & & & & & & & & & & & & & &// 重绘.    //================================================================}  //===================== 模块结束 ============================一旦应用程序结束, EA交易的控制将从循环部分转到之后的代码, 这时已经不需要的关于组件不完整的消息将会被删除.  当EA被卸载时, 特别函数 deinit() 也会调用 Component_exp()函数, 但是是为了别的目的 - 通知关于当前时刻的卸载事件.  在EA交易的 deinit() 函数中, 也会调用Del_GV_exp() 函数.  它用于删除EA交易中创建的全部全局变量. 按照不成文的规矩, 每个程序在卸载时都要"清扫战场", 也就是说把之前创建的全局变量和图形对象删除.  // Del_GV_exp.mq4  //=================================================================int Del_GV_exp()  {  //=================================================================GlobalVariableDel(GV_Exp_Yes & & &);  GlobalVariableDel(GV_Extern & & & );  GlobalVariableDel(GV_AAA & & & & &);  //=================================================================  }  //====================== 模块结束 ============================这样, EA交易就开始工作并且在各个阶段都追踪了其它两个组件的可用性: 一次在 init(), 一次在 deinit(), 另外还有每个订单时刻 - 在 start(). 这样EA的创建就能够用于完成我们的任务了 - 创建可用的控制面板. 作为示例, 文件描述的变量包含AAA变量以及它对应的全局变量GV_AAA, 它的值从脚本程序中读取.  为了详细了解这些是如何工作的, 让我们考虑脚本程序的结构.  3.2. 脚本程序  脚本程序代码:  // Script.mq4  //==================================================== include ====#include &stdlib.mqh&  #include &stderror.mqh&  #include &WinUser32.mqh&  //=================================================================#include &Peremen_scr.mq4&  // 文件所描述的脚本程序变量.  #include &Metsenat_scr.mq4&  // 脚本程序中预先定义变量.  #include &Mess_graf_scr.mq4&  // 图形消息列表.  #include &Novator_scr.mq4&  // 环境扫描, 从一些变量取得新数值  #include &Del_GV_scr.mq4&  // 删除由脚本程序创建的全部全局变量  #include &Component_scr.mq4&  // 检查组件是否可用.  #include &Component_uni.mq4&  // 指标中关于组件不可用的信息.  #include &Del_Obj_scr.mq4&  // 删除由组合程序创建的全部对象.  #include &Work_scr.mq4&  // 脚本程序中的主工作函数.  //=================================================================//  //  //=================================================================int init()  {  Fishka = 1; & & & & & & & & & & & & & & & &// 我们在 init() 函数中Metsenat_scr(); & & & // 预先定义脚本程序中的变量.    }  //================================================================int start()  {  Fishka = 2; & & & & & & & & & & & & & & & // 我们在 start() 函数中while(true)  {  Component_scr(); &// 检查组件是否可用  Work_scr(); & & & // 脚本程序的主要工作函数.  }    }  //=================================================================int deinit()  {  Fishka = 3; & & & & & & & & & & & & & & & &// 我们在 deinit() 函数中Component_scr(); & & &// 检查组件是否可用Del_Obj_scr(); & & & & &// 删除创建的图形对象Del_GV_scr(); & & & &// 删除脚本程序中的全局变量.    }  //==================================================================此代码的基础是在特殊函数 start() 中的无限循环. 在脚本代码中, 使用了类似的名称和内容. 我们要注意它们的特别之处. 在每个循环的开端, 会调用Component_scr()函数.  // Component_scr.mq4  //====================================================================int Component_scr()  {  //====================================================================Iter=0; & & & & & & & & & & & & & & & // 循环计数清零while (Fishka &3 && & & & & & & &// 我们在 init() 函数中或 start() 函数中(GlobalVariableGet(GV_Ind_Yes)!=1 ||  GlobalVariableGet(GV_Exp_Yes)!=1))  { & & & & & & & & & & & & & & & & // 直到程序可用GlobalVariableSet(GV_Scr_Yes, 1);  // 声明脚本可用  //--------------------------------------------------------------------Iter++; & & & & & & & & & & & & & & & & & &// 迭代计数器if(Iter==1) & & & & & & & & & & & & // 跳过第一次迭代{  Sleep(500);    }  //--------------------------------------------------------------------if(Iter==2) & & & & & & // 在第二次迭代开始衡量{  Complect=0; // 程序不可用, 不完整  for (i=0;i&=31;i++)ObjectDelete(Name_Graf_Text[i]);// 删除全部字符串  // 再次可以插入一个函数来清除交易队列.  }  //--------------------------------------------------------------------if(GlobalVariableGet(GV_Ind_Yes)==1 &&  GlobalVariableGet(GV_Exp_Yes)!=1)  { & & & & & & & & & & & // 如果有指标, 但是没有EAGraf_Text = "EA交易没有安装.";  // 消息文字  Component_uni();  // 把文本信息写到指标窗口.  }  //-----------------------------------------------------------------Sleep(300);  }  //-----------------------------------------------------------------if(Complect==0) & & & & & & & &// 结束时开始处理.  {  ObjectDelete("Necomplect_1");  // 删除不需要的消息..  ObjectDelete("Necomplect_2");  // ..关于组件不完整  Mess_graf_scr(1);  // 通知用户完整性  if( IsExpertEnabled())  // 按钮可用  {  Mess_graf_scr(3000);  Knopka_Old = 1;  }  if(!IsExpertEnabled())  // 按钮被禁用  {  Mess_graf_scr(4000);  Knopka_Old = 0;  }  Complect=1;  // 达到了最小安装完整性  Redraw = 1;  // For quick deletion  }  //====================================================================if(Fishka == 3 && GlobalVariableGet(GV_Ind_Yes)==1)// 我们在 deinit() 函数中  {  for(i=0;i&=31;i++)ObjectDelete(Name_Graf_Text[i]);// 删除全部字符串  //--------------------------------------------------------------------if(GlobalVariableGet(GV_Exp_Yes)!=1)  // 有指标, 但是没有EA  Graf_Text="EA交易和脚本程序组件没有安装.";// 消息 (因为我们正在卸载)  if(GlobalVariableGet(GV_Exp_Yes)==1)  // 如果指标和EA都有..  Graf_Text="脚本程序没有安装.";  // 消息 (因为我们正在卸载)  Component_uni(); & // 在指标窗口中写入消息.  //--------------------------------------------------------------------ObjectsRedraw(); & & & & & & & & & &// 为了快速删除}  //====================================================================  }  //====================== 模块结束 ===============================对脚本程序的第一个要求就是它可以持续运行. 在外部变量的更新过程中, EA交易通过了完整安装. 当在EA设置面板上按下OK按钮, 它会被卸载并把操控权交给 deinit(), 然后再很快重新载入, 并陆续执行 init() 和 start() 函数. 然后, EA交易运行一段时间, 再在deinit()函数中删除确认其可用性的全局变量.  脚本程序不会假定EA交易还没有被完全载入, 所以Component_scr() 包含一段代码避免在第一次迭代时作出决定:  Iter++; & & & & & & & & & & & & // 迭代计数器if(Iter==1) & & & & & & &// 跳过第一次迭代{  Sleep(500);    }  500毫秒在大多数情况下是足够让EA交易载入的. 如果您在EA交易的init()函数中使用了更加耗时的代码, 时间必须被延长. 如果在第二次迭代时还是没有侦测到EA交易, 就会认为EA交易完全不可用, 然后脚本程序会停止运行.  Complect = 0; & &// 有个程序不可用, 不完备在之前的段落中, 使用了"脚本程序停止运行"的表述. 在我们的例子中, 没有代码用于此种现象, 因为它超出了我们这篇文章的主题范围. 在您可以调用对应函数的地方, 代码中有一段注释.  // 在此, 可以插入交易计数器清零的代码.  在真正工作程序的Work_scr() 函数中, 除了我们例子中用到的函数, 其他函数用于一些订单事件的处理. 例如, 如果您的程序用于修改几个订单, 它必然会包含一个数组, 如果当前订单时刻有一些交易发生则在数组中保存执行的交易.  如果某个时刻出现了不完备的现象(例如, EA交易或者脚本程序异常退出), 而此时有这样的交易队列, 就可以通过把上面说到的交易队列清零或者根据情况修改某些变量以阻止交易.  脚本程序的无限循环部分也调用Work_scr()函数. 这是脚本程序的主函数部分, 主要代码应当放置其中.  // Work_scr.mq4  //=================================================================int Work_scr()  {  Novator_scr();  //-----------------------------------------------------------------// 整个应用程序的基本代码.  //------------------------------------------------ 例如 ----if(New_Tick==1) & & & & & & & & & & & & & & // 在每一个新订单时刻{  Alert ("ААА 当前数值 = ", AAA);  }  //-----------------------------------------------------------------if(Redraw==1)  {  ObjectsRedraw(); & & & & & & & & & &// 立即显示Redraw=0; & & & & & & & & & & & & // 去掉对象重绘标志}  //-----------------------------------------------------------------Mess_graf_scr(0);  Sleep(1); & & & & & & & & & & & & & // 假如重新载入  }  //====================== 模块结束 ============================Work_scr() 包含了 Novator_scr() 函数, 它的意图是更新在基本代码中使用的环境变量.  // Novator_scr.mq4  //===================================================================int Novator_scr()  {  //===================================================================//---------------------------------------- 更新设置 -----if(GlobalVariableGet(GV_Extern)==1)  // EA交易中有更新  {  Metsenat_scr(); & & & & // 脚本程序变量更新.  Mess_graf_scr(5000); & &// 新设定的消息.  Redraw=1; & & & & & & & // 在循环末尾重绘.  }  //--------------------------------- EA 按钮状态 -----------------Knopka = 0; & & & & & & & & & & & & & & & & & & & & // 重设if( IsExpertEnabled()) Knopka = 1;  // 检查按钮的真实状态  if(Knopka==1 && Knopka_Old==0)  // 如果状态改为"打开"  {  Knopka_Old = 1; & & & & & & & &// 这是旧的Mess_graf_scr(3); & & & & & & &// 把改变通知用户}  if(Knopka==0 && Knopka_Old==1)  // 如果状态是"关闭"  {  Knopka_Old = 0; & & & & & & & & // 这是旧的Mess_graf_scr(4); & & & & & & &// 把改变通知用户}  //-------------------------------------------------- 新订单时刻 --------New_Tick=0; & & & & & & & & & & & & & & &// 首先清零if (RefreshRates()==true) New_Tick=1;  // 如果您知道怎样做, 抓住新订单时刻很简单//--------------------------------------------------------------------//====================================================================  }  //=====================; 模块结束 ===============================让我们仔细研究此函数的必要性. 我们在文章的开头提到, 每次EA交易载入时, 或者当其变量更新时, 其中的Metsenat_exp() 函数会把 GV_Extern 变量的值设为 1. 对脚本程序来说, 它的意思是设置必须要更新. 为此, Novator_scr() 函数包含如下代码段:  //---------------------------------------- 更新设置 ----if (GlobalVariableGet(GV_Extern)==1)  // EA中发生了更新  {  Metsenat_scr(); & & & & & & &// 更新脚本设置.  Mess_graf_scr(5000); & & & & // 新设置消息.  Redraw=1; & & & & & & & & & &// 在循环末尾重绘.  }  以上的变量值会在此分析, 如果有必要更新, 会调用Metsenat_scr() 函数, 它会进行更新工作 (从全局变量中读取新的数值).  // Metsenat_scr.mq4  //===================================================================int Metsenat_scr()  {  //========================================================== int ====//======================================================= double ====//======================================================= string ====MyGrafic & &= "MyGrafic_";  Mess_Graf & = "Mess_Graf_";  Symb & & & &= "_"+Symbol();  GV & & & & &= "MyGrafic_GV_";  //=============================================== 全局变量 ====GV_Ind_Yes &= GV+"Ind_Yes" +S  // 0/1 确认指标已经载入  GV_Exp_Yes &= GV+"Exp_Yes" +S  // 0/1 确认EA交易已经载入  //-------------------------------------------------- 发布 -----GV_Scr_Yes &= GV+"Scr_Yes" +S  GlobalVariableSet(GV_Scr_Yes, & & & & &1 );GV_Extern & = GV+"Extern" &+S  GlobalVariableSet(GV_Extern, & & & & & 0 );//--------------------------------------------------- 读取 -------// &以 AAA 为例:  GV_AAA & & &= GV+"AAA" & & +S  AAA &= GlobalVariableGet(GV_AAA);  //===================================================================  }  //======================== 模块结束 ============================Metsenat_scr() 函数会把全局变量 GV_Extern 的值设为0. 在其后的历史中, 此变量会保持为 0 直到用户打开EA交易的设置窗口.  需要注意的是, 尽管在修改了设定后, EA交易会通过卸载和载入再次重新运行, 脚本程序并不会在用户修改设定前后停止工作. 这样, 把EA交易和脚本程序联合使用就能够达到应用程序在允许用户修改设定时连续运行的要求, 也就是说, 控制了过程.  在函数Novator_scr()后面的代码段中, 控制了EA的按钮来使它可以进行交易. 然后又探测到了新的订单时刻. 如果您的交易系统打算使用那些类似的参数, Novator_scr() 函数就可以用于做这样的计算.  例如, 您可以完成此函数, 写一段代码来侦测是否有新柱出现, 检查是否有重要事件的时间到来, 监测是否交易规则有所改变(例如, 点差, 止损单的最小距离等), 以及分析函数开始运行之前做些其他的计算准备等.  组成程序的主要部分的函数并没有在Work_scr()函数中显示. 在叫做在大型程序中考虑订单的文章中, 我们使用了Terminal() 函数来分析订单. 如果在您的交易系统中采取相同的分析原则, 应该把Terminal() 函数包含在Work_scr() 函数中并且紧跟在Novator_scr()函数之后.  脚本程序还准备了额外一个辅助函数 - Mess_graf_scr(), 它是用于在指标窗口中显示信息的.  // Mess_graf_scr.mq4  //====================================================================int Mess_graf_scr(int Mess_Number)  {  //====================================================================if(Mess_Number== 0) & & & &// 在每次循环中都要进行{  if(Time_Mess&0 && GetTickCount()-Time_Mess&15000)// 打印的颜色会过期  { & & & & & & & & & & & // ..15秒后, 文字行的颜色变灰ObjectSet(Name_Graf_Text[1],OBJPROP_COLOR,Gray);// 最后两行  ObjectSet(Name_Graf_Text[2],OBJPROP_COLOR,Gray);// 最后两行  Time_Mess=0; & & & & // 不要使用颜色的额外标志Redraw=1; & & & & & &// 重画  }   & & & & & & & & // 退出  }  //--------------------------------------------------------------------Time_Mess=GetTickCount(); // 记住消息的发布时间Por_Nom_Mess_Graf++; & & &// 行计数. This is just a name part.  Stroka_2=0; & & & & & &// 假设信息为一行  if(Mess_Number&1000)  // 假如出现了大数字, 数字是有含义的,  // 说明前一行是来自相同的消息  // 颜色不能变灰  {  Mess_Number=Mess_Number/1000;  Stroka_2=1;  }  //====================================================================switch(Mess_Number)  {  //--------------------------------------------------------------------case 1:  Graf_Text = "所有所需的组件都已安装.";  Color_GT = LawnG    //--------------------------------------------------------------------case 2:  Graf_Text = " ";    //--------------------------------------------------------------------case 3:  Graf_Text = "EA交易可用.";  Color_GT = LawnG    //--------------------------------------------------------------------case 4:  Graf_Text = "EA交易禁用.";  Color_GT = T    //--------------------------------------------------------------------case 5:  Graf_Text = "EA交易设置更新.";  Color_GT = W    //---------------------------------------------------- 默认 -------default:  Graf_Text = "默认行 "+ DoubleToStr( Mess_Number, 0);Color_GT = T    }  //====================================================================ObjectDelete(Name_Graf_Text[30]);  // 如果取代了30个对象, 把它删除  int Kol_strok=Por_Nom_Mess_G  if(Kol_strok&30) Kol_strok=30;  //-----------------------------------------------------------------for(int lok=Kol_lok&=2;lok--)  // 遍历图形文本名称  {  Name_Graf_Text[lok]=Name_Graf_Text[lok-1];// 重新赋值 (规范化)  ObjectSet(Name_Graf_Text[lok],OBJPROP_YDISTANCE,2+14*(lok-1));//修改Y值 (规范化)  if(lok==3 || lok==4 || (lok==2 && Stroka_2==0))ObjectSet(Name_Graf_Text[lok],OBJPROP_COLOR,Gray);//老的消息行变灰..  }  //-------------------------------------------------------------------Graf_Text_Number=DoubleToStr( Por_Nom_Mess_Graf, 0);//信息编号部分与名称部分结合  Name_Graf_Text[1] = MyGrafic + Mess_Graf + Graf_Text_N// 生成信息名称.  Win_ind= WindowFind("Indicator");  //指标窗口编号多少?  ObjectCreate ( Name_Graf_Text[1],OBJ_LABEL, Win_ind,0,0);// 在指标窗口中创建一个对象  ObjectSet & &( Name_Graf_Text[1],OBJPROP_CORNER, 3 & );// ..右下角坐标  ObjectSet & &( Name_Graf_Text[1],OBJPROP_XDISTANCE,450);// ..横坐标..  ObjectSet & &( Name_Graf_Text[1],OBJPROP_YDISTANCE, 2);// ..纵坐标..  ObjectSetText(Name_Graf_Text[1],Graf_Text,10,"Courier New",Color_GT);  //文字字体颜色  Redraw=1; & & & & & & & & & & & & & & & & &// 重绘//=================================================================  }  //====================== 模块结束 ============================没有必要详细研究此函数. 我们只要说说它的一些特点.  1. 所有消息通过图形方式显示.  2. 传给函数的前面的参数是消息编号.  3. 如果传入的参数值在1和999之间, 指标窗口中之前的文字会失去其颜色. 如果参数值超过1000, 消息会被显示, 即编号的分界点是1000. 在之后的文字行不会失去颜色.  4. 在最新消息出现15秒后, 所有文字行都失去颜色.  5. 为了保持把文字行颜色消除, 函数需要被一次次调用. 所以, 在Work_scr()函数末尾会调用它:  Mess_graf_scr(0);  在叫做图形EA交易: AutoGraf的文章中, 展示了一个可以运行的组合程序, 它使用了类似的函数, 包含了超过250条以上的不同消息. 您可以以之为例, 在您的交易中使用全部或部分消息.  3.3. 指标  为了完成我们的演示, 让我们也探讨一下指标, 尽管其代码相对简单.  // Indicator.mq4  //===================================================; include ==========#include &stdlib.mqh&  #include &stderror.mqh&  #include &WinUser32.mqh&  //=======================================================================#include &Peremen_ind.mq4&  // 指标变量描述  #include &Metsenat_ind.mq4&  // 指标变量的预先定义.  #include &Del_GV_ind.mq4&  // 删除由指标创建的全部全局.  #include &Component_ind.mq4&  // 检查组件可用性.  #include &Component_uni.mq4&  // 指标中关于组件不可用的信息.  //=======================================================================//  //  //=======================================================================#property indicator_separate_window  //=======================================================================//  //  //=======================================================================int init()  {  Metsenat_ind();    }  //=======================================================================int start()  {  if(Component_ind()==0) // 检查组件的可用性//...    }  //=======================================================================int deinit()  {  Del_GV_ind(); & & & & & & // 删除指标创建的全局变量.    }  //=======================================================================指标中只有一个重要特点要在此处强调: 指标是显示在独立窗口中的:  #property indicator_separate_window  Metsenat_ind() 和 Del_GV_ind() 函数的内容和之前在EA交易和脚本程序中的对应函数非常类似.  Component_ind() 函数的内容也不复杂:  // Component_ind.mq4  //===================================================================int Component_ind()  {  //===================================================================if(GlobalVariableGet(GV_Exp_Yes)==1 &&  GlobalVariableGet(GV_Scr_Yes)==1)  //如果全部组件都可用  { & & & & & & & & & & & &// 关于指标可用的状态if(GlobalVariableGet(GV_Ind_Yes)!=1)  GlobalVariableSet(GV_Ind_Yes,1);  return(1);  }  //--------------------------------------------------------------------if(GlobalVariableGet(GV_Scr_Yes)!=1 &&  GlobalVariableGet(GV_Exp_Yes)!=1)  { & & & & & & & & & & & & & // 如果没有脚本程序和EAGraf_Text = "EA和脚本程序组件没有安装.";  // 消息文字  Component_uni(); & & & &// 把消息写进指标window}  //=====================================================================return(0);  }  //=====================; 模块结束 ================================我们在代码中可以看到, Component_ind() 函数只有在两个其他组件 - 脚本程序和EA交易都没有加载的时候才会给出消息. 如果只有一个程序不可用, 不会进行任何操作. 这里假定, 如果他们在交易品种窗口可用, 这些程序会追踪此复合程序的组件并通知用户结果.  如果有必要, 指标的主要属性 - 绘图 - 也可以使用. 对于本复合程序而言, 此属性不是必须的, 但是它可以用在真实交易中, 例如把子窗口分成不同区域.  4. 实际使用  把应用程序组件附加到交易品种窗口的顺序并不重要. 但是, 推荐的是第一个附加指标, 因为这样我们就能够在附加之后立即读取注释内容了.  所以, 为了演示应用程序如何工作, 我们必须做到如下工作.  1. 在交易品种窗口中附加指标. 这样会立即在指标窗口中显示:  EA交易和脚本程序组件没有安装  应用程序无法工作.  2. 把 EA交易附加到交易品种窗口. Component_exp() 会被触发, 以下信息会显示在指标窗口:  脚本程序没有安装  应用程序无法工作.  3. 把脚本程序附加到交易品种窗口. 此事件将会被脚本程序中的 Component_scr() 函数处理并显示在指标窗口中:  所有所需的组件都安装好了.  EA交易被启用.  如果EA交易被禁用, 消息看起来会像:  所有所需组件都安装好了.  EA交易被禁用.  4. 您可以按下几次EA的按钮并确认这个事件序列被应用程序立即处理并显示在消息行中:  EA交易被禁用.  EA交易被启用.  EA交易被禁用.  EA交易被启用.  EA交易被禁用.  请注意, 因为复合程序中的脚本程序使用了循环代码, 程序对用户控制的回应是立即的, 而不是等到下一个订单时刻.  作为例子, 我们在Work_scr()函数中, 使用函数Alert()来按照订单时刻来显示EA交易设置中的变量.  让我们研究这个特性. Work_scr() 函数是脚本程序的一部分. 脚本程序的基本循环在订单时刻之间会运行几百次, 而Alert()函数发出的信息只出现在订单时刻之间.  5. 打开EA设置的工具条并把AAA的值替换为3. 脚本程序会跟踪到这个事件并且在指标窗口上显示一条信息:  EA交易已被允许使用.  EA交易已被禁用.  EA交易已被允许使用.  EA交易已被禁用.  EA设置已被更新.  Alert()函数的窗口将会每订单时刻显示AAA变量的新值:  6. 现在, 您可以用任何顺序载入或者卸载任何组件, 按下EA的按钮, 修改可调整变量的数值, 然后对这个复合程序的质量做出您自己的评价了.  结论  使用本文描述的技术, 我们的主要收获就是 脚本程序不论环境中是否有事件发生都不会停止工作. 脚本程序只有在它发现另外一个或两个组件(指标, EA交易)不可用的时候才会停止工作.  本文所述的创建复合程序的原则在真正工作的应用程序AutoGraf中有少许修改, 此应用程序在名为图形EA交易: AutoGraf的文章中有更多描述 .  SK. Dnepropetrovsk. 2006  本文译自 MetaQuotes Software Corp. 撰写的俄文原文原文地址: /ru/articles/1393附加的文件 | 下载ZIP  Exp_Scr_Ind.zip (28.57 KB)  注意: MQL5 Ltd.将保留所有关于这些材料的权利。全部或部分复制或者转载这些材料将被禁止。  前往讨论  创建自定义指标的特性  创建自定义指标的特性  在MetaTrader交易系统中创建自定义指标有一些特性.  无缝图表  无缝图表  本文介绍了没有跳空柱形图表的实现.  信息的存储和阅览  信息的存储和阅览  本文介绍了信息存储和阅览的方便而高效的方法. 在这里探讨了终端标准记录文件和Comment()函数的替代方案.  专家系统'解说员'. 在MQL4程序中嵌入指标的实际应用专家系统'解说员'. 在MQL4程序中嵌入指标的实际应用本文描述了在MQL4编程中技术指标的使用.  加入我们-下载MetaTrader 5!  Windows  iPhone/iPad  Mac OS  Android  Linux  MQL5策略语言 | 源代码程序库 | 如何编写EA交易或指标 | 订购开发EA交易下载MetaTrader 5 | MetaTrader 5交易平台 | 应用商店 | MQL5 Cloud Network关于 | 网站历史 | 条件和条款 | 隐私条款 | 联系方式Copyright , MQL5 Ltd.
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 lol突然很多人加好友 的文章

 

随机推荐