第五章 公式优化与测试平台
在分析家4.0的版本中,突出了这个功能的实现,可以通过测试平台对所有的公式化分析工具或者交易工具进行全方位的测评,并提交一份翔实可信的测试报告,在以下的几节中,我们将通过融合测试平台的使用对指标、条件选股以及交易系统的公式进行优化。 5、1测试平台的基本内容和架构 在工具栏中选中“系统测试平台”,在分析家中为技术指标、条件选股以及交易系统建立了统一的测试平台。 假设我们选择了技术指标当中的MA进行测试,在设定好一定的买入条件和卖出条件以及测试的市场模型之后即可对任意的指标、公式等进行测试。分析家中提供了两种不同的测试模型,一种是针对全部信号的单个股票测试,另外一种是为了最佳的模拟真实的买入和卖出条件,以及参与市场的投资策略的测试模型,具体的内容和区别请参见分析家的说明书。 买入条件设定 测试时段,也即测试的时间区间,分析家默认的区间为19960101到当前。 买入规则,在分析家中有以下的买入规则,如果默认的买入规则无法满足您的要求,您可以在条件选股当中编制您的买入条件。 平仓条件 分析家提供以上5种平仓条件,涵括卖出指令和止损指令: 目标周期为终点,到时自动平仓,20周期以后的收盘价平仓; 目标利润为终点,到时自动平仓,10%帐面盈利以后的收盘价平仓; 三类止损平仓:分别设定不同类型下的规避风险条件 市场模型:分析家提供两类市场模型供测试分析,具体使用请见下列 5、2 测试和公式优化的示例 例一:MA均线指标参数优化和测试 MA均线指标是我们较为常用的一个技术指标,我们通过测试平台来初步检验一下该指标的使用效果,当然我们所能做到的是假设我们在历史的某一天计算机提示了一个买入点,并且我们按照这个提示在当时进行了买入的操作--在一段时间之后的行情将会检验我们在此之前的操作的合理与否! 参数名 最小 最大 缺省 N1 0 300 5 N2 0 300 10 MA5:MA(CLOSE,N1); MA10:MA(CLOSE,10); 因为不同的均线周期数应用了不同的分析市场中有不同的反映,根本的原因在于每一个合理的市场都存在自己的运行周期,所以个股的表现也紧紧地和市场联系在一起,体现在指标分析当中,就效果较好的指标参数可以比较准确地描述和预测股票运行的方向。以下我们利用测试平台来检验和寻找理想的MA均线参数。 第一步:在测试平台中选择MA均线指标 第二步:点击下一步,设定测试时段和交易规则 在上例中,我们选择了从19960101-20010226这一时间段,并且选定了买入规则为指标线MA1向上穿过了MA2的时候使用全部的资金买入。 第三步:设定相应的卖出条件和停损条件,并且选定测试的股票数量和对象,我们假设使用整个沪市的股票进行测试!为简单起见,我们沿用了分析家以往的默认测试方法,只设定20个周期和目标利润10%。 市场模型: 注意这里为了检测真实的全市场的信号状况,我们选择了单股票测试; 10万资金,原来的测试模型里,就是现在的单股票测试,我们是针对的出现的所有的信号都按照20天10%的测评条件进行测试,无论信号出现的时间、次序,是否可以成为真实的买入点;现在提供另外的全市场测试,允许我们模拟真实的10万资金在一段时间内按照规定好的条件连续的买入和卖出,最终统计在一定的时间内的一个模拟帐户的交易收益! 第四步:在浏览了整个测试的结构和条件之后,分析家提供了参数优化的模型--或者您可以直接略过参数优化直接进入到结果测试当中去。 为了简单起见,我们选用了对两条指标线的参数进行优化测试,一条是短期均线;另外是一条长期均线,短期均线的优化步长设定为5,长期为10,整个优化的次数不得超过10000次。 测试的结果分别在以下用两种表达方式分别用图表形象地列出: 分析:通过以上的两图一表,我们可以发现以下的特征:在列表结果中,所有的成功率集中在50%-60%的窄区间内,说明参数周期的长短没有对结果产生太大,太剧烈的影响,在图形方式中,可以观察到参数范围(5,20)-( 15,20)之间的颜色为红色,也就是说净利润最高; 假定以第一个参数为序列递增,信号的数量相反下降,从15367个信号降到了3000个,可见参数对信号的多寡有很大的影响,在实际投资中产生的交易机会的把握会同样有影响; 现在可以解释为什么我们通常会使用5、10、20、30等几个参数作为MA均线的原因了!在保障几乎相当的成功率的前提下,选择最多的信号密集区是我们在实战当中必要的客观技术要求下的环境,也正是这一点促使产生这样的参数,并且被很多的投资者认可,我们通过测评系统的计算,得出了结论!同样我们可以通过这个测评系统得到其它的所有公式、指标等等其相关的最佳参数集,从而完成了公式优化的第一大步! 例二:MA均线交叉的条件选股测试和条件优化 测试: 承接上面的例子,我们结合市场的普通使用状况和我们的优化表中的数据采用其中一组合适的参数作为测试的对象,来分析市场广为流传的均线买入卖出法进行测试。 输入MA均线的公式,并且使用参数5,10进行测试: 注意这里为了模拟真实的10万资金在一段时间内按照规定好的条件连续的买入和卖出,最终统计在一定的时间内的一个模拟帐户的交易收益!我们选择了全市场测试: 从19960101-20000226我们测试了所有的上海市场的A股得出了以上的结论,总共的交易信号数量达到4656个,其中信号的优劣各占5成,但是年收益率为1.72%,就是说条件MA5向上交叉MA10日均线的利润几乎为0! 优化: 既然借助计算机和分析家的我们已经测得“如果只是简单的使用MA均线,即便改变使用最佳的参数,而不考虑其他的因素的话,从概率的角度上讲,基本是两平微亏的局面......所以为了更好的利用计算机的作用帮助我们寻找更高更好的交易策略,需要对原来的条件进行更改或者加以限制,过滤掉多余的错误的信号”。 在优化的过程中,我们需要分析全部的各个信号出现时当天的具体状况,然后剔除比较恶劣的条件......尽量保留真实有效的信号! 以下是我们随机寻找了一个补充条件,当天出现大阳线和MA均线配合使用: 则现在的测试条件变为: A1:=MA(CLOSE,5); A2:=MA(CLOSE,10); AA:=CROSS(A1,A2); B1:=CLOSE/REF(CLOSE,1)>1.07; B2:=CLOSE=HIGH; AA AND B1 AND B2 再用以同样的条件下进行测试,我们得到了以下的图标,可以见到收益有了较为明显的提高!这样一来,说明新的公式所描述的选股条件较原来的条件更有意义,在实际操作中的参考价值也相对要高。 收益率:61.29% 交易数量:48 胜率: 75% 事实上每一个公式都是通过这样的测试,不断的完善之后才会交给到正式的市场去再检验,如果您承认市场是可以找到这样的规律,它们确实存在,那么这个公式才会有意义,您才会去不断的改良它!作为技术分析的前提,也正是我们分析家公式发挥作用的前提! 例三:一个简单交易系统的测评和优化 一个简单的交易系统 “如果在一个KD强势的市场中,如果股价从下方穿过了30日均线,并且当天的成交量有比较明显的放大,我会买入;我的卖出条件是股价跌下10日均线之下立即抛出,当股价跌出买入价的5%时候主动止损”。 在我们前面的介绍中,曾经介绍过一个朋友的最简单的交易系统,交易系统是在不断的重复改良,辩证和创新中得以升华的--现在就这个简单的交易系统,我们来做一下系统的综合评测,让历史上的数据来判断吧! 原来的公式系统为: AA:=“KDJ,D”; A1:=AA>40; A2:=VOL/MA(VOL,5)>2; A3:=CROSS(CLOSE,MA(CLOSE,30)); A4:=CROSS(MA5,CLOSE); ENTERLONG:A1 AND A2 AND A3; EXITLONG::A4 AND COUNT(A1 AND A2 A3,20)=1; 交易系统在卖出条件上与其他的公式系统测试有所不同,其他的都是使用同一个测试平台,都是一样的,我们可以先简单地将交易系统看作是条件选股的扩展,区别是交易系统的卖出条件更加的丰富,可以自己根据实际的经验来编写;而条件选股的公式在这个测试平台上,只能遵守强制卖出和止损的固化的条件。 刚好我们用一笔10万的资金测试一下如果从96.1.1日开始,我们按照这个交易系统去做交易,一直做到今天,做一下测试,结果请看以下图表: 结果确实不理想,和所相差比较远--我想,这里大概验证了一个道理,只有市场是对的!把您的公式、想法让市场去辨别,它会给您一个很好的答案的! 附录: 函数参考 分析家的公式编写系统使用了多类的函数,以达到快速提取数据和提高运算能力,同时简化计算过程的要求。因此在不同类型的函数我们赋予了相当精确的含义,有的函数定义为行情数据提取函数,那么它的功能就是从静态历史上的行情数据或者动态的及时盘中数据提取我们所需要的数据以方便以后的分析和计算;有的函数定义为运算函数,是考虑到一些复杂的数学计算过程过于冗长,从而设计的简化运算的函数等等。在以下的几节中,我们将会分别介绍一共12类的函数。 (1)、函数的基本模型: K(X1,X2,X3......) 1、K表示函数的名称; 2、X1,X2,X3......表示该函数的所有参数。 不同参数用逗号分隔并用括号将所有函数括起来列于函数名称之后;参数的取值可以是变量也可以是一个常量,具体取值和含义因函数不同而不同; (2)、函数的引用周期: 应不同的使用者在分析周期习惯上的差异,分析家特别设定了周期选择,这主要是针对在引用类函数在引用数据时锁定自己所需要的周期,例如在日线上,或者在周线上等等的要求。 如右图所示,一共可以从分笔到多日线等10类选择。 一、行情函数 行情函数是最基本的函数,首先,它为我们提供计算所需的函数,这些函数从存储的数据中取得我们所需要的各类数据,而其他多数函数所需的计算数据一般也是由通过引用行情函数产生的。 1、OPEN 含义:返回本周期的开盘价,简写“O” 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“OPEN”就表示取得当天开盘价的数值。 2、HIGH 含义:本周期的最高价,简写“H” 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“HIGH” 就表示取得当天最高价的数值。 3、LOW 含义:本周期的最低价,简写“L” 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“LOW”就是表示取得当天最低价的数值。 4、CLOSE 含义:本周期的收盘价,简写“C” 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“CLOSE”就表示取得当天收盘价的数值。 5、VOL 含义:本周期的成交量 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“VOL”就表示取得当天成交量的数值。 6、AMOUNT 含义:本周期的成交额 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“AMOUNT”就表示取得当天成交额的数值。 7、ADVANCE 含义:本周期对应大盘内个股上涨家数 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“ADVANCE” 就表示取得当天大盘内个股上涨家数的数值。 8、DECLINE 含义:本周期对应大盘内个股下跌家数 参数:无 单位:无 阐释:如果您选定的分析周期为日线,那么“DECLINE”就表示取得当天大盘内个股下跌家数的数值。 9、BUYVOL 含义:主动性买盘成交量,取得本笔成交主动向买盘成交量。当本笔成交为主动性买盘时,其数值等于成交量,否者为0。 限制:仅在分笔成交分析周期中对个股分析时有效,否则为0 参数:无 单位:手 阐释:测试原理 10、BUYVOL 含义:主动性卖盘成交量,取得本笔成交主动性卖盘成交量。当本笔成交为主动性卖盘时,其数值等于成交量,否者为0。 限制:仅在分笔成交分析周期中对个股分析时有效,否则为0 参数:无 单位:手 11、ISBUYORDER 含义:测试是否以主动性买盘成交,取得本笔成交量是否为主动性买单,当本笔成交为主动性买盘时,返回1,否则为0 限制:仅在分笔成交分析周期中对个股分析时有效,否则为0 参数:无 省略。。。。。。