您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 一个神经网络的EA的示例
一个神经网络的EA的示例(含源码)——Combo_Right.mq4软件简介:去年年底结束的国际大赛的第一名为Better所夺得他采用的就是神经网络原理的EA这使得用神经网络方法做EA成为不少人关注的焦点这里翻译一篇采用神经网络做EA的不错的示例文章当然附有源码是吸引人的地方不过也许作者提出了研究神经网络EA的一些思考更为值得注意作者提出了∶1。“如果有飞机,为什么还要教人类去飞?”意思是研究是经网络不必从零起步。MT4里已有了不错的“遗传算法”文中介绍了如何利用MT4已有的“遗传算法”2。大家都说做单子最重要的是“顺势而为”,但更需要解决的是∶“一个基于趋势的交易系统是不能成功交易在盘整(sidewaystrends),也不能识别市场的回调(setbacks)和逆转(reversals.,反向走势)!”这可是抓到不少人心中的“痒处”,有多少人不是到了该逆势时没转向而产生亏损呢?3。训练神经网络需要用多长的历史数据,提出了并不是用的历史数据越长越好,另外也不是训练的间隔越短越好,文中提出了什么情况下有需再训练它。等等。。下面是译文和作者的源码Theproblemisstatedforthisautomatedtradingsystem(ATS)asfollows:(ATS)自动的(智能的,采用神经网络的)交易系统的问题表述如下Let'sconsiderwehaveabasictradingsystem-BTS.ItisnecessarytocreateandteachaneuralnetworkinorderittodothingsthatcannotbedonewiththeBTS.ThismustresultincreationofatradingsystemconsistingoftwocombinedandmutuallycomplementaryBTSandNN(neuralnetwork).如果我们有一个(BTS,basictradingsystem),同时需要用创建一个神经网络系统并教会它做BTS所不能做的事,按这个思路就是要创建这样一个交易系统∶它由互相补充(配合)的两部分组成,BTS和NN(神经网络)。Or,theEnglishofthisis:Thereisnoneedtodiscoverthecontinentsagain,theywerealldiscovered.Whytoteachsomebodytorunfast,ifwehaveacar,ortofly,ifwehaveaplane?呃,英语说,我们不需要再去发现“新大陆”,它们是已经存在的东西!进一步说,如果我们已经有了汽车,那为什么还要教人如何跑得快?如果有飞机,为什么还要教人类去飞?Oncewehaveatrend-followingATS,wejusthavetoteachtheneuralnetworkincountertrendstrategy.Thisisnecessary,becauseasystemintendedfortrend-basedtradingcannottradeonsidewaystrendsorrecognizemarketsetbacksorreversals.Youcan,ofcourse,taketwoATSes-atrend-followingoneandacountertrendone-andattachthemtothesamechart.Ontheotherhand,youcanteachaneuralnetworktocomplementyourexistingtradingsystem.一旦有一个趋势交易系统的ATS,我们仅需要教会这个神经网络如何逆势(反趋势)交易的策略。这一点是非常必要的,因为一个基于趋势的交易系统是不能成功交易在盘整(sidewaystrends),也不能识别市场的回调(setbacks)和逆转(reversals.,反向走势)!当然,你可以采用两个ATS,一个基于“趋势”,一个基于“反趋势”(逆向),然后把它们挂到同一图表上。另一个办法是,你能教会神经网络如何与你现有的系统“互补地”协调工作!Forthispurpose,wedesignedatwo-layerneuralnetworkconsistingoftwoperceptronsinthelowerlayerandoneperceptronintheupperlayer.为实现这个目标,我们设计了一个两层的神经网络,下层有两个感知机(perceptrons)上层有一个感知机。Theoutputoftheneuralnetworkcanbeinoneofthesethreestates:这个神经网络的能输出下列三种状态之一Enteringthemarketwithalongposition(Entering)市场是处在多向仓Enteringthemarketwithashortposition(Entering)市场是处在空向仓Indeterminatestate不确定的,(不明确的,模糊的)状态Actually,thethirdstateisthestateofpassingcontrolovertotheBTS,whereasinthefirsttwostatesthetradesignalsaregivenbytheneuralnetwork.实际上,第三种状态是就把控制权交给BTS,反之前两种状态是交易信号由神经网络给出。Theteachingoftheneuralnetworkisdividedintothreestages,eachstageforteachingoneperceptron.Atanystage,theoptimizedBTSmustbepresentforperceptronstoknowwhatitcando.神经网络的“教育”分成三步骤,每一步骤“教育”一个感知机,在任何一步骤,这个优化了的BTS必须存在为的是“感知机们”知道它自己能做什么。Theseparateteachingofperceptronsbyageneticalgorithmisdeterminedbythelackofthisalgorithm,namely:Theamountofinputssearchedinwiththehelpofsuchalgorithmislimited.However,eachteachingstageiscoherentandtheneuralnetworkisnottoolarge,sothewholeoptimizationdoesnottaketoomuchtime.感知机们分别的“教育”由遗传算法来承担,由于这样的算法的缺乏,换句话说,搜索到的这样的算法有限,限制了“输入”(参数变量)的数量(借助这样算法得到的参数变量的值),然而,每一步骤的“教育”是密切配合补充的。(因此效果还是不错),这样这个神经网络不会太大,整个的优化也不会耗费太多的时间。Theveryfirststage,precedingtheteachingofanNN,consistsinoptimizationoftheBTS.在“教育”NN之前的一步是对BTS进行优化。Inordernottoloseourselves,wewillrecordthestagenumberintheinputoftheATSidentifiedaspass.Identifiersofinputscorrespondingwiththestagenumberwillandinthenumberequaltothisstagenumber.为了不使我们自己也被搞糊涂了,我们将已经测试通过的ATS的输入(参数变量)记录上(”通过”(pass)的步骤号(stagenumber).,输入s(参数变量)的标识符将和stagenumber(步骤号)一致(等同)。Thus,let'sstartpreparationsforoptimizationandteachingtheNN.Let'ssettheinitialdepositas$1000000(inordernottocreateanartificialmargincallduringoptimization)andtheinputtobeoptimizedasBalanceinExpertAdvisorpropertiesonthetabofTestingintheStrategyTester,andstartgeneticalgorithm.这样,我们开始对这个NN进行优化和“教育”的准备。存入初始保证金为$100万(以便于在优化期间不产生人为的补充保证金的通知)。Input(参数变量)是按“余额”进行优化,设置EA的StrategyTester的测试的属性tab为Testing。开始运行遗传算法。Let'sgototheInputstaboftheEA'spropertiesandspecifythevolumeofpositionstobeopenedbyassigningthevalue1totheidentifierlots.在这个EA的开仓量lots.的值设为1lot。Optimizationwillbeperformedaccordingtothemodel:Openpricesonly(fastestmethodtoanalyzethebarjustcompleted,onlyforEAsthatexplicitlycontrolbaropening),sincethismethodisavailableintheATSalgorithm.从这个ATS算法明确地有效开始,实施优化,所采用复盘模型是∶“仅用开盘价(以最快速的方法分析刚形成的柱线)”。Stage1ofoptimization.OptimizationoftheBTS:优化步骤1,BTS的优化Setthevalue1fortheinputpass.设置为1为这input(参数变量)“为通过”(theinputpass)。Wewilloptimizeonlyinputsthatcorrespondwiththefirststage,i.e.,thatendin1.Thus,wecheckonlytheseinputsforoptimization,anduncheckallothers.我们仅仅优化步骤1相关的那些inputs(参数变量),即,尾标为1的参数变量,于是,我们仅仅测试优化有关的inputs而不测试其他的变量参数tp1-TakeProfitoftheBTS.Itisoptimizedwiththevalueswithintherangeof10to100,step1tp1,BTS的所取的止盈值(TakeProfit)。在step1,优化的值的范围在10到100,sl1-StopLossoftheBTS.Itisoptimizedwiththevalueswithintherangeof10to100,step1sl1,BTS的所取的止损值(StopLoss)。在step1,优化的值的范围在10到100。p1-periodofCCIusedintheBTS.Itisoptimizedwiththevalueswithintherangeof3to100,step1p1,用于BTS的CCI的周期值。在step1,优化的值的范围在3到100BelowaretheresultsoftheBTSoptimization:下面是BTS优化的结果Stage2.Teachingtheperceptronresponsibleforshortpositions:步骤2,“教育负责管“开空仓”(shortpositions)的感知机Setthevalue2(accordingtothestage
本文标题:一个神经网络的EA的示例
链接地址:https://www.777doc.com/doc-4223938 .html