m1andcount(m1,10)=1andc>ma(c,55){andabs(macd)>0.2}andcount(macd<0,5)>=5
稍懂点分析家公式的朋友们一看便知,是macd绿色柱状线,由最长刚变短而给出买点的公式......
事情是这样的:
近几天我的一个朋友经过对某只股票进行了所谓"认真观察""反复研究"得出结论:
一只股票的macd指标的绿色柱状线一但最长(这有点说不清,因为长了还可以再长,是相对的,这里大家注意到了公式中加了abs(macd)>0.2可我遗憾的告诉您,不加还好,有了这条成功率不升反降!
)变短就准有一波行情.打进了****股,就等着赚钱哪!
有兴趣的朋友可对以上公式进行测试,会发现结果一般,不应具有一般意义上的操作价值,可为什么我的那个朋友却把这一所谓"规律"当成金科玉律了哪?
我觉得深究其原因,应该是人的潜意识中那个"贪"字吧.这就需要在这个市场中进行艰苦的磨练了,估计也练成了,手里的钱也练没了!
但这不等于说我们就束手无策了吗?
回头看一下开头的公式,对!
分析家----虽然它有这样或那样的不足,但编个公式简单验证一下,一个客观的,明确的尺子量完的结果就展现在我们面前了.
固执与灵活,主观与客观.用分析家公式完美的统一了.机器会在瞬间找出不合格的股票的,骨子里的"贪心"能不受一点震动吗?
一场面红耳赤的争论不复存在了......
(14)、 我编分析家公式-可用的未来数据
朋友们一看文题,就得问:
"含未来数据的公式还能应用?
"回答是肯定的.能!
请大家看一下的测试结果:
XX搜索:
更多股票公式
1997年1月1日-2001年4月7日5天5%中价计算:
默认即(高+低+收)/3
测试股票数:
1097共发出指示:
807成功指示:
802失败指示:
5未完成指示:
0平均成功率:
99.38%,成功率达到50%的股票有:
43.2%利润1总平均:
13.93%利润1最大值:
41.84%利润1最小值:
4.55%利润2总平均:
10.12%利润2最大值:
41.84%利润2最小值:
-14.16%
1997年1月1日-2001年4月7日5天5%中价计算:
收
测试股票数:
1097共发出指示:
807成功指示:
620失败指示:
187未完成指示:
0平均成功率:
76.83%,成功率达到50%的股票有:
35.5%利润1总平均:
10.47%利润1最大值:
37.23%利润1最小值:
0.57%利润2总平均:
6.20%利润2最大值:
37.23%利润2最小值:
-16.85%
一旦你知道这是由于未来数据造成的就会很失望吧.不过我读了一下公式的内容发现,是可以变通使用的,而且没有未来数据了,实践效果也较好.
请看公式内容:
CLOSE/OPEN>=1.099ANDBACKSET(L>REF(H,1),2)
现在要变通了......假如,所选的股票5日内没有5%的涨幅,而且今日的最低价在<第一天>收盘价附近,依公式测试结果在至少<第四天>,至多<第五天>就应赚5%,也就是说本公式仅在两日内就赚5%!
!
!
但这里有三个小问题需要考虑:
1.分析家软件的测试方法;2.买点;3.卖点.
首先,分析家的测试方法是依<中价计算>,在测试中中价计算应该为依<收盘价>.
其次,买价就可选在C/O>=1.099这一天的收盘了,但要在第三天用这个买价买(如果能买到的话,不防提高个1%-1.5%----少赚点吗,别太贪心了!
).
最后,卖出价请到测试结果中去找5日内最高价有几次没赚5%,即最高利润小于5%的股票有几家?
重算一下成功率:
86家最高价(利润1)小于5%共发指示807(807-86)/807=89.34%成功率高达89.34%就把这个条件定为"美好未来1"吧.
现在就简单的设想一下几个结果可能不全面,还得请网友们共同研究)
一种可能,在买价买入股票,只要在明后天的两日内把卖单埋在买价加5%的位置,就去守株待兔吧,精确点说2天赚2%(扣除印花税和佣金1.5%+买入时多给的1.5%);
二种可能,其实对这种强势股来说,买入的当天收盘就有很大可能已经涨很高了
这样的例子很多,不一一列举了,请大家用我给的公式(美好未来1)好好研究一下,有心得别忘了我;
三种可能,买入的当天,这支股票打一长上影线7-8%,两天内随不一定不上影,但上影线的一半的地方的利润也不只2%吧;
第四种可能......止损!
!
!
!
!
!
这样一来公式转变成(美好未来1):
BARSLAST(ref(c,1)/ref(o,1)>=1.099andl>ref(h,1))=1
结论:
用"原始公式"搞测试;"美好未来1"实际操作.好了,汽车上太颠簸,就写这些吧.
(15)、短线RSI选股指标设计
站长按:
HP朋友设计的这个指标,从短线角度胜率不俗,且分布十分均匀,有很好的实战意义!
由于此公式选出的股票涨幅不是很大,所以目标利润定为5%
首先从分析家自带的RSI开始,当股价从低位开始上涨时6日RSI
会上穿24日RSI,初始公式为:
cross(rsi1,rsi3)
此时此公式所发出的指示有一部分出现在高位,甚至顶部,通
过观察,可以发现在低位发出的指示有一些共同点,即12日RSI
小于40,6日RSI小于50,并且最近5天内RSI曾低于20,所以在
公式中加入以下限制:
rsi2<40andcount(rsi1<20,5)>=1andrsi1<50
经过测试(99.1.1-00.7.7),发现此公式的失败指示主要发出在
99年9-12月,此时大盘不景气,于是加入以下限制:
c/ref(c,1)以下测试条件均为20日5%(请注意目标利润为5%)
-------------------------------------------------------
99.1.1-00.7.7
测试股票数:
984
共发出指示:
250成功指示:
202失败指示:
48未完成指示:
0
平均成功率:
80.80%,成功率达到50%的股票有:
18.8%
利润1总平均:
15.30%利润1最大值:
88.51%利润1最小值:
0.00%
利润2总平均:
11.19%利润2最大值:
88.51%利润2最小值:
-13.41%
-------------------------------------------------------
97.1.1-00.7.7
测试股票数:
984
共发出指示:
443成功指示:
345失败指示:
98未完成指示:
0
平均成功率:
77.88%,成功率达到50%的股票有:
29.3%
利润1总平均:
13.94%利润1最大值:
88.51%利润1最小值:
0.00%
利润2总平均:
9.64%利润2最大值:
88.51%利润2最小值:
-27.26%
-------------------------------------------------------
如果要用此公式选股,只需在条件选股窗口中选中此公式,并
把条件设定为HPRSI大于P1(P1为0)。
(16)、编程接口全攻略
为什么使用编程接口
由于分析家的自编公式缺乏循序、选择及循环三大基本结构中的循环结构,因而不能编制某些公式,作为补救措施,汇天奇公司推出编程接口。
编程接口的优点是能实现任意算法,运算效率高,保密性强;缺点是需要额外的知识,调试困难,善未完善。
所以,笔者建议尽量避免使用它。
使用编程接口需要什么基础知识及软件
原始的编程接口是以C语言提供,以Win32动态连接库的形式实现的,所以任何一个可以生成Win32
动态连接库的开发工具,都可以用于编写扩展函数,如Delphi、BCB、VC、VB等。
由于分析家软件是用VC编写的,故汇天奇公司推荐使用VC作为开发工具。
有鉴于此,笔者编写了VC6.0下的
CustomAppWizard,可自动生成程序框架,并作一些必要的设置,可节省不少时间。
如果使用VC,只需学习C
语言,不必懂得C++知识,更不必掌握MFC,要求可说是相当低了。
本文以VC为例,讲述扩展函数的编制。
扩展函数的命名及引用
扩展函数的命名有以下规定:
1.函数名称须符合C语言的规定,并需全部大写.
2.函数必须以下述A,B两种形式之一声明,请用实际函数名称替代xxxxxxxx。
__declspec(dllexport)intxxxxxxxx(CALCINFO*pData);
----------A
__declspec(dllexport)intxxxxxxxxVAR(CALCINDO*pData);
----------B
3.上述形式A用于声明不带参数或全部参数为常数的函数;
形式B用于声明参数1为序列数的函数;两种函数的区别在于后者以VAR结尾.
4.函数名称长度不能超过15字节,动态连接库文件名不能超过9字节(不包括扩展名),动态库名称不能叫
SYSTEM,EXPLORER;
扩展函数的引用分两个步骤:
XX搜索:
股票公式
1、将生成的动态连接库拷贝到分析家目录下;
2、编写一个公式,引用动态连接库中的扩展函数,格式如下:
"动态库名称@函数名称"(参数表)
例如,您编了一个扩展函数叫FUNCTION(),有两个常数参数,生成的动态连接库叫formula.dll,引用为
"formula@Fuction"(16,8),注意一对半角双引号的位置,库名及函数名不区分大小写。
数据结构
编程接口的一大任务是数据的传递,包括将原始数据传递给扩展函数及将运算结果传递回分析家。
这是通过函数的参数CALCINFO*
pData实现的,结构CALCINFO的定义在头文件FxjFunc.h或Analyst.h中,简介如下:
typedefstructtagCALCINFO
{
constDWORDm_dwSize;//本结构的大小,可用于分配内存
constDWORDm_dwVersion;//调用软件版本(V2.10:
0x210)
constDWORDm_dwSerial;//调用软件序列号
constchar*m_strStkLabel;//股票代码
constBOOLm_bIndex;//大盘
//数据数量(pData,pDataEx,pResultBuf指向的数组大小)
constintm_nNumData;
//常规数据数组指针,注意:
当m_nNumData==0时可能为NULL
constSTKDATA*m_pData;
//扩展数据数组指针,用于描述分笔成交买卖盘,注意:
可能为NULL
constSTKDATAEx*m_pDataEx;
constintm_nParam1Start;//参数1有效位置,详见注4、5
constfloat*m_pfParam1;//调用参数1
constfloat*m_pfParam2;//调用参数2
constfloat*m_pfParam3;//调用参数3
constfloat*m_pfParam4;//调用参数3
float*m_pResultBuf;//结果缓冲区
constDATA_TYPEm_dataType;//数据类型
constfloat*m_pfFinData;//财务数据
}CALCINFO;
注:
1.函数调用参数由m_pfParam1--m_pfParam4带入,若为NULL则表示该参数无效.
2.当一个参数无效时,则其后的所有参数均无效.
如:
m_pfParam2为NULL,则m_pfParam3,m_pfParam4一定为NULL.
3.参数1可以是常数参数或序列数参数,其余参数只能为常数参数.
4.若m_nParam1Start<0,则参数1为常数参数,参数等于*m_pfParam1;
5.若m_nParam1Start>=0,则参数1为序列数参数,m_pfParam1指向一个浮点型数组,
数组大小为m_nNumData,数据有效范围为m_nParam1Start--m_nNumData.
在时间上m_pData[x]与m_pfParam1[x]是一致的
结构CALCINFO中用到的其它数据结构定义可在同一头文件中找到,读者如有疑问可自行查阅。
使用CustomAppWizard编程
XX搜索:
股票公式
由于CustomAppWizard
已完成了所有例行的工作,我们只需要读出原始数据,对其进行处理后,写入结果缓冲区就行了。
具体可参阅网友Normal的大作,此处不再赘
述。
有几点补充如下:
1、函数返回-1表示错误或全部数据无效,否则返回第一个有效值位置,即:
m_pResultBuf[返回值]--m_pResultBuf[m_nNumData-1]间为有效值。
2、CustomAppWizard只适用于VC6.0,不能用于VC5.0。
不使用CustomAppWizard编程
手工编程的话,要注意以下几点:
1、函数参数传递顺序必须按照C规则,如果文件扩展名用.cpp,则函数声明必须包含在extern"C"{}
的括号中;
2、Project->Settings...->C/C++->Category:
General
->Preprocessordefinitions中加入FXJFUNC_EXPORTS;
3、编译时选择1字节对齐,即
Project->Settings...->C/C++->Category:
CodeGeneration
->Structmemberalignment:
选1Byte;
使用其它编程工具的,可参考以上设置。
不足及期望
编程接口虽然大大增强了公式编制的能力及灵活性,但也存在不足之处。
比如,只能被动获取原始数据,不能主动取得其它个股的指定数据;还有,不能同时取得不同周期的数据;另外,不提供基本的函数库,连移动平均也得自己动手。
由上可见,编程接口也有其局限性,并非万能。
我们期望汇天奇对其作进一步的完善。
(17)、自编公式中迭代问题的解决办法
迭代,利用上次计算结果重复计算,和递归概念相近,不同是递归是从后往前推,而迭代是从头到尾计算,从前往后推,很多定义是用递归定义的,但递归占用资源较多,效率较低,所以常常用迭代或回溯实现。
如阶乘的定义:
P(n)=P(n-1)*n;
实现时则可用迭代:
for(P=i=1;i<=n;i++){P=P*i;}
在分析家公式系统中,既不支持递归,又不支持迭代(循环),难道很多递归定义的公式不能实现吗?
有一些可以实现!
有两种方法我们可以尝试:
1。
利用统计函数
如OBV指标,它的算法是:
从上市第一天起,逐日累计股票总成交量,若当日收盘价高于昨收,则前OBV加当日成交量为当日OBV,否则减当日成交量为当日OBV。
从算法上看,它是个典型的需要迭代计算的例子,但让我们看看分析家是怎样实现的:
SUM(IF(CLOSE>REF(CLOSE,1),VOL,IF(CLOSE 它用一个统计函数SUM就解决了迭代的问题。
这种方法能解决每天权重相同的情况(也就是每一天同等对待,特点是用只用加减运算)。
那对于每天不同权重的公式怎么办呢?
2。
利用引用函数
分析家公式系统中有一组引用函数,特别是EMA、DMA、SMA。
EMA既是函数,又是指标,先看看EMA的定义:
EMA(X,N),求X的N日指数平滑移动平均。
算法:
若Y=EMA(X,N)则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。
定义中用了乘除,每天的权重按指数规律变化。
这种公式可以用DMA函数实现。
如我去年编的成本价指标:
CostMA(AMOUNT/VOL/100,VOL/CAPITAL)
这是成本分析中最简单的公式,成本分析的原理详见“成本分布的秘密”一帖,基此思路,应可以轻松编出其它成本分布的公式。
胡呵胡言乱语,贻笑大方
(18)、如何编制高成功率的实战公式
一.引子
1.公式是我们为了用电脑这个设备把依据自己投资理念(衡量我们投资理念正确与否,公式的成功率是重要的评判标准之一)想要选出的股票而编制的一种程序
2.公式的最终定型是为了实战,不允许使用任何可能导致未来数据的函数和超越单一日线的数据,如果不是这样,我们连飞机都可以制造但那是飞不上天的。
3.公式的编制属于预测范畴,由于市场的诸多不确定因素不可能达到100%。
二.思路(大盘背景以后再说)
1.首先我们要考虑的就是成交量。
成交量vol在使用中有一些弊病,它只能反映当天的成交多少,我们把它改为换手率使用比较科学(换手率=vol/capital*100)当日成交与流通盘所占的百分比.
换手率在公式中的应用必须要考虑的因素:
A:
股价在即将启动的时候换手率所表现的形式。
B:
同样的形式与股价循环周期高低位的关系。
C:
换手率在区域时间内的有效性。
D:
阶段调整结束的标志。
2.价格变化在公式应用中的重要作用。
价格的变化不只是涨跌幅的概念,只关注当日价格的变化那将蒙住你智慧的双眼,仅以一天的价格波动来判断未来的趋势是远远不够的。
A:
短期内价格波动的规律性,盘口语言。
B:
同样的规律和盘口语言在高低位的不同性质。
C:
价格循环周期规律。
D:
价格在向下量度调整的结束性标志。
3.趋势因素
在量能和价格的复杂变化过程中,将逐渐演变出一种我们在K线上能用肉眼大至看清的走势,即使这样仍需你有一双慧眼,这种走势仍有许多不确定因素。
A:
个股趋势和大盘背景的关系——同步。
B:
个股走势的独立性和有效性——异步。
C:
均线系统和K线走势的关系。
D:
正偏离和负偏离。
E:
主流资金的短期和中期获利造成的抛售压力。
三.小结
综上所述,一个具有价值的公式需要艰苦的创作过程,它需要你必须有正确的投资理念,强烈的风险意识,对股市深刻的理解。
高涨幅、抄底、多指标过滤可靠吗?
更不用说虚假的未来数据了。
19、未来数据
未来数据大致分为以下几种:
1、使用ZIG类(之字转向函数)
ZIG类(之字转向函数)有:
ZIG(K,N)
之字转向,当价格变化量超过N%时转向。
PEAK(K,N,M)
向前数第M个ZIG转向波峰值,表示之字转向ZIG(K,N)的前M个波峰的数值。
PEAKBARS(K,N,M)
向前数第M个ZIG转向波峰到本周期的距离,表示之字转向ZIG(K,N)的前M个波峰到本周期的周期数。
XX搜索:
股票公式
TROUGH(K,N,M)
向前数第M个ZIG转向波谷值,表示之字转向ZIG(K,N)的前M个波谷的数值。
TROUGHBARS(K,N,M)
向如数第M个ZIG转向波谷到当前距离,表示之字转向ZIG(K,N)的前M个波谷到当前的周期数。
这些函数对于辅助形态判断是有帮助的,可是确实都可能引用未来数据,这是大家要小心的。
2、指定买入卖出日期。
有的公式没有ZIG,可是指定1999.05.18买入,指定1999.06.30卖出,这样自然胜率很高,可是没有意义了。
3、指定买入、卖出价格
一般多发生在交易系统里,比如指定买入价在当日最低价、卖出在当日最高价,可实际上最低、最高是每日交易结束后才可以知道的,所以没有用,我们可以看到一些股票尾市最后一刻突然拉涨停或突然打跌停的情况,除了主力等相关人员,谁事先知道?
4、跨周期或在长周期编制公式。
这是一种比较隐秘的引用未来数据的方法,不容易引起注意,可是危害更大,比如在月线里编制追高类公式,那么如果事后测试,系统将“聪明”地只选取那些还月收阳线的股票,其实当时有的股票先上涨,达到公式要求,于是发出信号,可是马上又大跌,于是信号消失,这样事后是测试不出来的,显得胜率很高,可是没有用。
还有跨周期,比如用KDJ的周线,周初上涨,条件符合,随后下跌,条件不成立,于是信号先发出后消失。