花生网

标题: 请高手修改'飞狐MACD买点'改成选股指标 [打印本页]

作者: kpgood    时间: 2013-5-9 11:54     标题: 请高手修改'飞狐MACD买点'改成选股指标

本帖最后由 kpgood 于 2013-5-9 12:15 编辑

请老师帮我改成飞狐选股公式,谢谢了
有FmlDLL文件
大交易师系统软件
改个底背驰


VARV:=VOL/((HIGH-LOW)*2-(ABS(CLOSE-OPEN)));
ZB:=IF(CLOSE>OPEN,VARV*(HIGH-LOW),IF(CLOSE<OPEN,VARV*(HIGH-OPEN+CLOSE-LOW),VOL/2));
ZS:=ABS(IF(CLOSE>OPEN,-VARV*(HIGH-CLOSE+OPEN-LOW),IF(CLOSE<OPEN,-VARV*(HIGH-LOW),-VOL/2)));
主动买盘:=EMA(ZB,2);
主动卖盘:=EMA(ZS,2);
Z:=主动买盘-主动卖盘;
DIFF:EMA(Z,144)-EMA(Z,189);
DEA:EMA(DIFF,36);
macd:3*(DIFF-DEA),COLORSTICK,LINETHICK1;

STICKLINE(macd>0 and macd<=REF(MACD,1),0,macd,0.5,0),coloryellow;
STICKLINE(macd<0 and macd>=REF(MACD,1),0,macd,0.5,0),colorwhite;
var1:="chzhshch@kxian";
var2:="chzhshch@bi";
var4:="chzhshch@duan";
drawline(var2=1,macd,var2=-1,macd,0),LINEDASH,colorgreen;
drawline(var2=-1,macd,var2=1,macd,0),LINEDASH,colorred;
drawline(var4=-1,macd,var4=1,macd,0),LINEDASH,colorFF6600,linethick2;
drawline(var4=1,macd,var4=-1,macd,0),LINEDASH,colorFF6600,linethick2;

MACDA:=if(macd>0,macd,0);
MACDB:=if(macd<0,abs(macd),0);
红柱面积:=SUM(MACDA,BARSLAST(ref(var2,1)<0));
绿柱面积:=SUM(MACDB,BARSLAST(ref(var2,1)>0));
B1:=BARSLAST(var2>0);
B2:=BARSLAST(var2<0);
目前方向:=if(B1>B2,1,0);
drawnumber(var2<=0 and ref(var2,1)>0,macd,红柱面积-MACDA,3),align4,pxdn50,colorred;
drawnumber(var2>=0 and ref(var2,1)<0,macd,绿柱面积-MACDB,3),align5,pxup50,colorgreen;
drawnumber(islastbar and 目前方向=1,macd,红柱面积,3),align4,pxdn50,colorred;
drawnumber(islastbar and 目前方向=0,macd,绿柱面积,3),align5,pxup50,colorgreen;

DM1:=BARSLAST(REF(var2=1,1));  
DM2:=REF(H,DM1+1)<H AND REF(红柱面积-MACDA,DM1+1)>红柱面积-MACDA AND var2=1;  
DRAWTEXT(IF(DM2>0,1,0),macd,'顶背驰'),align4,pxdn20,colorffff66;
DM3:=BARSLAST(REF(var2=-1,1));  
DM4:=REF(L,DM3+1)>L AND REF(绿柱面积-MACDB,DM3+1)>绿柱面积-MACDB AND var2=-1;  
DRAWTEXT(IF(DM4>0,1,0),macd,'底背驰'),align5,pxup20,colorff66ff;


作者: jackong    时间: 2013-5-9 14:06

请参考这个帖子:http://www.hs633.com/forum.php?mod=viewthread&tid=1498
  1. VARV:=VOL/((HIGH-LOW)*2-(ABS(CLOSE-OPEN)));
  2. ZB:=IF(CLOSE>OPEN,VARV*(HIGH-LOW),IF(CLOSE<OPEN,VARV*(HIGH-OPEN+CLOSE-LOW),VOL/2));
  3. ZS:=ABS(IF(CLOSE>OPEN,-VARV*(HIGH-CLOSE+OPEN-LOW),IF(CLOSE<OPEN,-VARV*(HIGH-LOW),-VOL/2)));
  4. 主动买盘:=EMA(ZB,2);
  5. 主动卖盘:=EMA(ZS,2);
  6. Z:=主动买盘-主动卖盘;
  7. DIFF:EMA(Z,144)-EMA(Z,189);
  8. DEA:EMA(DIFF,36);
  9. macd:3*(DIFF-DEA),COLORSTICK,LINETHICK1;

  10. STICKLINE(macd>0 and macd<=REF(MACD,1),0,macd,0.5,0),coloryellow;
  11. STICKLINE(macd<0 and macd>=REF(MACD,1),0,macd,0.5,0),colorwhite;
  12. var1:="chzhshch@kxian"();
  13. var2:="chzhshch@bi"();
  14. var4:="chzhshch@duan"();
  15. drawline(var2=1,macd,var2=-1,macd,0),LINEDASH,colorgreen;
  16. drawline(var2=-1,macd,var2=1,macd,0),LINEDASH,colorred;
  17. drawline(var4=-1,macd,var4=1,macd,0),LINEDASH,colorFF6600,linethick2;
  18. drawline(var4=1,macd,var4=-1,macd,0),LINEDASH,colorFF6600,linethick2;

  19. MACDA:=if(macd>0,macd,0);
  20. MACDB:=if(macd<0,abs(macd),0);
  21. 红柱面积:=SUM(MACDA,BARSLAST(ref(var2,1)<0));
  22. 绿柱面积:=SUM(MACDB,BARSLAST(ref(var2,1)>0));
  23. B1:=BARSLAST(var2>0);
  24. B2:=BARSLAST(var2<0);
  25. 目前方向:=if(B1>B2,1,0);
  26. drawnumber(var2<=0 and ref(var2,1)>0,macd,红柱面积-MACDA,3),align4,pxdn50,colorred;
  27. drawnumber(var2>=0 and ref(var2,1)<0,macd,绿柱面积-MACDB,3),align5,pxup50,colorgreen;
  28. drawnumber(islastbar and 目前方向=1,macd,红柱面积,3),align4,pxdn50,colorred;
  29. drawnumber(islastbar and 目前方向=0,macd,绿柱面积,3),align5,pxup50,colorgreen;

  30. DM1:=BARSLAST(REF(var2=1,1));  
  31. DM2:=REF(H,DM1+1)<H AND REF(红柱面积-MACDA,DM1+1)>红柱面积-MACDA AND var2=1;  
  32. DRAWTEXT(IF(DM2>0,1,0),macd,'顶背驰'),align4,pxdn20,colorffff66;
  33. DM3:=BARSLAST(REF(var2=-1,1));  
  34. DM4:=REF(L,DM3+1)>L AND REF(绿柱面积-MACDB,DM3+1)>绿柱面积-MACDB AND var2=-1;  
  35. DRAWTEXT(IF(DM4>0,1,0),macd,'底背驰'),align5,pxup20,colorff66ff;
复制代码运行代码

作者: kpgood    时间: 2013-5-9 14:24

jackong 发表于 2013-5-9 14:06
请参考这个帖子:http://www.hs633.com/forum.php?mod=viewthread&tid=1498

改成飞狐选股公式
作者: bt11    时间: 2013-5-13 08:45

kpgood 发表于 2013-5-9 14:24
改成飞狐选股公式

我试试
作者: bt11    时间: 2013-5-13 09:17

  1. VARV:=VOL/((HIGH-LOW)*2-(ABS(CLOSE-OPEN)));
  2. ZB:=IF(CLOSE>OPEN,VARV*(HIGH-LOW),IF(CLOSE<OPEN,VARV*(HIGH-OPEN+CLOSE-LOW),VOL/2));
  3. ZS:=ABS(IF(CLOSE>OPEN,-VARV*(HIGH-CLOSE+OPEN-LOW),IF(CLOSE<OPEN,-VARV*(HIGH-LOW),-VOL/2)));
  4. 主动买盘:=EMA(ZB,2);
  5. 主动卖盘:=EMA(ZS,2);
  6. Z:=主动买盘-主动卖盘;
  7. DIFF:=EMA(Z,144)-EMA(Z,189);
  8. DEA:=EMA(DIFF,36);
  9. macd:=3*(DIFF-DEA),COLORSTICK,LINETHICK1;

  10. //STICKLINE(macd>0 and macd<=REF(MACD,1),0,macd,0.5,0),coloryellow;
  11. //STICKLINE(macd<0 and macd>=REF(MACD,1),0,macd,0.5,0),colorwhite;
  12. var1:="chzhshch@kxian";
  13. var2:="chzhshch@bi";
  14. var4:="chzhshch@duan";
  15. //drawline(var2=1,macd,var2=-1,macd,0),LINEDASH,colorgreen;
  16. //drawline(var2=-1,macd,var2=1,macd,0),LINEDASH,colorred;
  17. //drawline(var4=-1,macd,var4=1,macd,0),LINEDASH,colorFF6600,linethick2;
  18. //drawline(var4=1,macd,var4=-1,macd,0),LINEDASH,colorFF6600,linethick2;

  19. MACDA:=if(macd>0,macd,0);
  20. MACDB:=if(macd<0,abs(macd),0);
  21. 红柱面积:=SUM(MACDA,BARSLAST(ref(var2,1)<0));
  22. 绿柱面积:=SUM(MACDB,BARSLAST(ref(var2,1)>0));
  23. B1:=BARSLAST(var2>0);
  24. B2:=BARSLAST(var2<0);
  25. 目前方向:=if(B1>B2,1,0);
  26. //drawnumber(var2<=0 and ref(var2,1)>0,macd,红柱面积-MACDA,3),align4,pxdn50,colorred;
  27. //drawnumber(var2>=0 and ref(var2,1)<0,macd,绿柱面积-MACDB,3),align5,pxup50,colorgreen;
  28. //drawnumber(islastbar and 目前方向=1,macd,红柱面积,3),align4,pxdn50,colorred;
  29. //drawnumber(islastbar and 目前方向=0,macd,绿柱面积,3),align5,pxup50,colorgreen;

  30. DM1:=BARSLAST(REF(var2=1,1));  
  31. DM2:=REF(H,DM1+1)<H AND REF(红柱面积-MACDA,DM1+1)>红柱面积-MACDA AND var2=1;  
  32. //DRAWTEXT(IF(DM2>0,1,0),macd,'顶背驰'),align4,pxdn20,colorffff66;
  33. DM3:=BARSLAST(REF(var2=-1,1));  
  34. DM4:=REF(L,DM3+1)>L AND REF(绿柱面积-MACDB,DM3+1)>绿柱面积-MACDB AND var2=-1;  
  35. //DRAWTEXT(IF(DM4>0,1,0),macd,'底背驰'),align5,pxup20,colorff66ff;
  36. {底背驰}DM4>0;
复制代码运行代码
试试看,用于大交易师
作者: kpgood    时间: 2013-5-16 11:31

1分钟5分钟15分钟30分钟60分钟日线
选股和条件选股一个没有
条件5分钟一天出个100多个吧
可一个没有!!
作者: bluechina    时间: 2013-5-16 12:09

bt11 发表于 2013-5-13 09:17
试试看,用于大交易师

选股公式的参数更改 有bug。
选定一次参数之后选股出来,再更改参数,还是按照上一次设置的参数选。
作者: ptLibert    时间: 2013-5-18 10:37

bluechina 发表于 2013-5-16 12:09
选股公式的参数更改 有bug。
选定一次参数之后选股出来,再更改参数,还是按照上一次设置的参数选。 ...

您好。我试过,没有您说的现象哦?
请问你是用哪个公式进行测试的?
作者: kpgood    时间: 2013-5-18 10:52

本帖最后由 kpgood 于 2013-5-18 11:01 编辑

大神们请帮我看看吧!
作者: kpgood    时间: 2013-5-20 09:51

安装金魔方上出票不出票啊!
作者: kpgood    时间: 2013-5-20 14:54

不出票啊!
作者: bluechina    时间: 2013-5-20 16:18

kpgood 发表于 2013-5-20 14:54
不出票啊!

呵呵,改了之后我的软件崩溃了
作者: bluechina    时间: 2013-5-20 16:19

kpgood 发表于 2013-5-20 14:54
不出票啊!

VARV:=VOL/((HIGH-LOW)*2-(ABS(CLOSE-OPEN)));
ZB:=IF(CLOSE>OPEN,VARV*(HIGH-LOW),IF(CLOSE<OPEN,VARV*(HIGH-OPEN+CLOSE-LOW),VOL/2));
ZS:=ABS(IF(CLOSE>OPEN,-VARV*(HIGH-CLOSE+OPEN-LOW),IF(CLOSE<OPEN,-VARV*(HIGH-LOW),-VOL/2)));
主动买盘:=EMA(ZB,2);
主动卖盘:=EMA(ZS,2);
Z:=主动买盘-主动卖盘;
DIFF:=EMA(Z,144)-EMA(Z,189);
DEA:=EMA(DIFF,36);
macd:=3*(DIFF-DEA),COLORSTICK,LINETHICK1;

var1:="chzhshch@kxian"();
var2:="chzhshch@bi"();
var4:="chzhshch@duan"();


MACDA:=if(macd>0,macd,0);
MACDB:=if(macd<0,abs(macd),0);
红柱面积:=SUM(MACDA,BARSLAST(ref(var2,1)<0));
绿柱面积:=SUM(MACDB,BARSLAST(ref(var2,1)>0));
B1:=BARSLAST(var2>0);
B2:=BARSLAST(var2<0);
目前方向:=if(B1>B2,1,0);

DM1:=BARSLAST(REF(var2=1,1));  
DM2:=REF(H,DM1+1)<H AND REF(红柱面积-MACDA,DM1+1)>红柱面积-MACDA AND var2=1;  

DM3:=BARSLAST(REF(var2=-1,1));  
DM4:=REF(L,DM3+1)>L AND REF(绿柱面积-MACDB,DM3+1)>绿柱面积-MACDB AND var2=-1;  

DM4 > 0;
作者: bluechina    时间: 2013-5-20 16:20

估计dll在金魔方上用来选股有点问题
作者: bluechina    时间: 2013-5-20 16:24

不好意思啦,这个dll的问题的话,我就没法帮你了,只有找悟多了
作者: bluechina    时间: 2013-5-20 16:25

ptLibert 发表于 2013-5-18 10:37
您好。我试过,没有您说的现象哦?
请问你是用哪个公式进行测试的?

新的版本用着就没问题了。
也可能是我的公式逻辑有问题。

这个帖子用到的dll没法在金魔方上用来选股。是否是多线程导致的?
作者: kpgood    时间: 2013-5-20 21:54

本帖最后由 kpgood 于 2013-5-20 21:59 编辑
bluechina 发表于 2013-5-20 16:25
新的版本用着就没问题了。
也可能是我的公式逻辑有问题。

新的版可以出票吗?




作者: kpgood    时间: 2013-5-20 21:59

bluechina 发表于 2013-5-20 16:19
VARV:=VOL/((HIGH-LOW)*2-(ABS(CLOSE-OPEN)));
ZB:=IF(CLOSE>OPEN,VARV*(HIGH-LOW),IF(CLOSEOPEN,-VARV*( ...

什么版可以出票啊!
作者: bluechina    时间: 2013-5-20 23:05

kpgood 发表于 2013-5-20 21:59
什么版可以出票啊!

去下一个大交易师或许可以,前面有研发人员提到
作者: kpgood    时间: 2013-5-21 12:50

本帖最后由 kpgood 于 2013-5-21 13:00 编辑
bluechina 发表于 2013-5-20 23:05
去下一个大交易师或许可以,前面有研发人员提到

我安装的大交易师可不出票啊!
作者: kpgood    时间: 2013-5-21 13:12

bluechina 发表于 2013-5-20 23:05
去下一个大交易师或许可以,前面有研发人员提到

最近经手的选股指标比较多,两个多月约有一两千个,很多朋友因为选不出票而提出种种问题或者抱怨,甚至怀疑指标有错而反复要求重写。平时实在无力一一回答这些问题,现在简要总结一下,算是给朋友们一个交代,也希望以后再遇到类似的问题时先对照下面这些内容自查,如果确认是指标有的错误而不是其他方面的问题再重新提出来。大部分朋友要的都是“买入”提示,所以下面提到的都是“买入”条件。

  一、选股指标产生的错误或误解

   1、按照条件选股指标的语法要求,一个条件选股指标应该有且仅有一个输出,也就是说最后一条语句应该是一条输出语句,如果最后一句使用了“:=”输出,其结果是测试能通过,但选不出票。这是个常识性问题,有经验的写手一般不会出这种错误错,除非是粗心或一时疏忽。对这种错误使用者可以自行检查,如果发现最后一行出现了“:=”,将“=”删除即可。

   2、逻辑错误。通常,条件选股指标的“条件”包含在“drawicon”、“ STICKLINE”等输出函数的头部,条件的输出只有“1”或者“0”两个值(既真、假两个值),比如最常见的“a>b”或者“cross(a,b)”等都是常见的条件,但如果件写成类似“c=c”、“a=a”这样的语句,意味着条件永远成立(永远为真或永远为假),而这些指标的作者在写的时候往往会使用嵌套的方式,使人不易察觉。其结果一是能选出股市上全部股票,二是选不出任何股,而测试也能通过。这种问题一般非常隐蔽,要有一定的鉴别力才能发现,不过,我们不必恐惧,因为这种情况出现的概率相当低,目前我见过的上千个指标里也只有两三个有这种问题。

   3、条件范围不同、书写顺序不同产生的误解。如果一个指标里有多个输出信号,则有可能产生选股条件范围大小不同,但有交叉的现象出现,比如常见的是利用颜色来进行选股,我们做个实验:
STICKLINE(CROSS(C,MA(C,10)),0,2,5,0),COLORYELLOW;
STICKLINE(CROSS(C,MA(C,10)) AND CROSS(C,MA(C,5)),0,2,5,0),COLORRED;
{当满足条件收盘价上穿收盘价的10日简单移动平均时,在0和2位置之间画柱状线,宽度为5,0不为0则画空心柱.,画黄色.
   当满足条件收盘价上穿收盘价的10日简单移动平均ANDCROSS(收盘价,收盘价的5日简单移动平均)时,在0和2位置之间画柱状线,宽度为5,0不为0则画空心柱.,画红色.}。
   如果我们要选出黄色柱线出现的语句,其条件是CROSS(C,MA(C,10)),而我们真这样去选股时,会发现不但选出来了黄色柱线对应的股票,还选出了部分红色柱线的股票。其原因是红色柱线所对应的条件也成立了,而且画红柱线的语句写在黄柱线语句的后面,红色覆盖了黄色(简单理解成这样)。
  但是,如果颠倒以上两条语句的书写顺序,即改变成:
STICKLINE(CROSS(C,MA(C,10)) AND CROSS(C,MA(C,5)),0,2,5,0),COLORRED;
STICKLINE(CROSS(C,MA(C,10)),0,2,5,0),COLORYELLOW;
  再用上面的选股条件选出黄色柱线,会发现选出的票都是黄色柱线对应的票,却没有出现红色柱线,这个原因大家自己想想吧?发生这种情况,选股指标和技术指标都没有错误。对写有兴趣的朋友可以玩玩颠倒语序的游戏,可能有以外惊喜哦。

   4、未来函数出现在买卖条件上造成选不出票。如果在买入条件上使用了TROUGHBARS、zig等大名鼎鼎的未来函数,买入信号的出现依据的是将来发生的信号,会造成从图形上看很准,但实施起来却选不出票的问题。这样的例子数不胜数,论坛里的介绍很多,不必赘述。

   二、选股指标使用不当

   1、“抄底”指标使用不当。很多朋友钟情于各种“抄底”指标,但却对指标中的“底”的来由不清楚,造成不能使用不当。一般情况,设计“底”部有两种思路(自编的说法,未经专家考证):(1)绝对底部:底部以一个或多个绝对数字为准,如-10、0、5、10、20等等,设计者往往是通过当时的股票或大盘的走势以及经验和部分理论来设置,相当于针对当时的形势定制,所以在当时看来会比较受用,但如果走势远远强于当时的状况,这种指标发出的信号就非常少,而如果走势弱于当时的走势,指标往往又会频繁发出买入信号,在比如,在08年9月到09年2月之间很多抄底指标发出了信号,而现在发出信号就很少,造成选不出票或选票数量极少。有指标基础的使用者可以尝试适当调高底部区域,当然,还要看指标的具体设计而定,也有不少指标不适合做局部修改。(2)相对底部:底部的设置是以大盘、板块、均线等为参考,“底”部出现的频率比较多,适应性较强,因为符合股票(股市)的“底”部相对性的道理,适用于不同的时间段。只是,在涨势中,从图形上看,不少使用者往往会感觉第一种情况获利比较大。其实,两类指标各有千秋而已。“追涨”指标道理类似。

   2、中长线指标用于短线选股。中长线指标的设计思路往往与短线有差异,其信号一般都比较少,如果用于短线选股,往往造成选票很少的结果。不少指标里都同时包含中长线信号和短线信号,所以使用时要辨清这些信号的使用策略。

   3、数据不齐全。本地数据不全是造成选股失败的最常见原因,一般要求日线数据和5分钟数据要下载完整,尤其是盘中选股,一般软件都要求完整的5分钟数据。

   4、其他。在股票或大盘的相对顶部时“买入”信号一般会明显减少,这是常理;不适宜的跨周期选股或预警也经常会导致选不出票;某些的指标由于设计的原因,信号非常少。

   以上只是针对条件选股指标选不出票的常见原因进行了小结,一切都来源于经验,没什么理论依据,提供给大家作为分析问题的一种参考,有不完全之处请大家补充,有错误之处请各位及时提出,便于大家共同交流、提高。
作者: kpgood    时间: 2013-5-21 13:15

bluechina 发表于 2013-5-20 23:05
去下一个大交易师或许可以,前面有研发人员提到

帮我看看我的有错误吗




欢迎光临 花生网 (http://hs633.com/) Powered by Discuz! X2