通达信公式买入1.txt 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. FS:=75;
  2. 分数MIN:=IF(MACHINEDATE<094500,FS-15,IF(MACHINEDATE<100000,FS-10,IF(MACHINEDATE<130000,FS-5,FS)));
  3. {多维度市场牛熊状态模型}
  4. N1:=21;
  5. N2:=55;
  6. VOL_RATIO:=1.2;
  7. ATR_PERIOD:=14;
  8. ANGLE:=5;
  9. EMA_INDEX:=EMA(INDEXC,N1);
  10. LONG_EMA_INDEX:=EMA(INDEXC,N2);
  11. TREND_ANGLE:=IF(REF(EMA_INDEX,5)!=0, ATAN((EMA_INDEX/REF(EMA_INDEX,5)-1)*100)*180/3.1416, 0);
  12. VOL_MA:=MA(INDEXV,N2);
  13. INDEX_ATR:=MA(TR,ATR_PERIOD);
  14. LOW_VOLATILITY:=INDEX_ATR/REF(INDEX_ATR,5)<0.7;
  15. COND_BULL:=
  16. EMA_INDEX > LONG_EMA_INDEX AND
  17. COUNT(TREND_ANGLE>ANGLE,3)>=2 AND
  18. EVERY(INDEXV>VOL_MA*VOL_RATIO,3) AND
  19. NOT(LOW_VOLATILITY);
  20. COND_BEAR:=
  21. EMA_INDEX < LONG_EMA_INDEX AND
  22. COUNT(TREND_ANGLE<-ANGLE,3)>=2 AND
  23. EVERY(INDEXV<VOL_MA*0.7,3) AND
  24. INDEX_ATR > REF(INDEX_ATR,5)*1.3;
  25. HY_EMA:=EMA(HY_INDEXC,N1);
  26. HY_TREND_ANGLE:= IF(REF(HY_EMA,5)!=0, ATAN((HY_EMA/REF(HY_EMA,5)-1)*100)*180/3.1416, 0);
  27. STRONG_INDUSTRY:=
  28. HY_EMA > EMA(HY_INDEXC,N2) AND
  29. HY_TREND_ANGLE > ANGLE AND
  30. COUNT(HY_INDEXV>MA(HY_INDEXV,N2)*VOL_RATIO,5)>=3;
  31. WEAK_INDUSTRY:=
  32. HY_EMA < EMA(HY_INDEXC,N2) AND
  33. HY_TREND_ANGLE < -ANGLE AND
  34. MA(HY_INDEXV,N2)/REF(MA(HY_INDEXV,N2),5)<0.8;
  35. HS300C:="SZ399300$CLOSE";
  36. REL_STR:=(C/REF(C,N1))/(HS300C/REF(HS300C,N1))-1;
  37. IND_BULL:=FILTER(REL_STR>0.12 AND REL_STR>REF(REL_STR,1),3);
  38. IND_BEAR:=FILTER(REL_STR<-0.18 AND REL_STR<REF(REL_STR,1),3);
  39. WEEK_EMA:=EMA(C#WEEK,5);
  40. WEEK_TREND:=WEEK_EMA>REF(WEEK_EMA,3);
  41. BULL_SCORE:=(COND_BULL + STRONG_INDUSTRY + IND_BULL + WEEK_TREND)>=3;
  42. BEAR_SCORE:=(COND_BEAR + WEAK_INDUSTRY + IND_BEAR + NOT(WEEK_TREND))>=3;
  43. MARKET:=IF(BULL_SCORE,1, IF(BEAR_SCORE,2,3));{1:牛市,2:熊市,3:震荡市或不确定};
  44. {动态阈值设定,满分100}
  45. 权重主力 :=IF(MARKET==1, 50, IF(MARKET==3, 35, 40));
  46. 权重量价 :=IF(MARKET==1, 20, IF(MARKET==3, 5, 10));
  47. 权重板块 :=IF(MARKET==1, 30, IF(MARKET==3, 15, 30));
  48. 权重资效 :=IF(MARKET==1, 0, IF(MARKET==3, 20, 5));
  49. 权重波动 := IF(MARKET==1, 0, IF(MARKET==3, 10, 5));
  50. 权重趋势 := IF(MARKET==1, 0, IF(MARKET==3, 5, 5));
  51. 权重风险 := IF(MARKET==1, 0, IF(MARKET==3, 10, 5));
  52. {主力资金动态捕捉}
  53. 权重DDX:=权重主力*0.6;
  54. 权重DDY:=权重主力*0.4;
  55. _DDX:=(LARGEINTRDVOL-LARGEOUTTRDVOL)*10000/FINANCE(7);
  56. _DDY:=IF(TRADENUM>0,(TRADEOUTNUM-TRADEINNUM)*100/TRADENUM,0);
  57. 资金分DDX:= IF(_DDX>1.4, 权重DDX, IF(_DDX>1.2, 权重DDX-1, IF(_DDX>1.0, 权重DDX-2, IF(_DDX>0.8, 权重DDX-3, IF(_DDX>0.6, 权重DDX-4, IF(_DDX>0.3, 权重DDX-5, 0))))));
  58. 资金分DDY:= IF(_DDY>50, 权重DDY, IF(_DDY>40, 权重DDY-1, IF(_DDY>30, 权重DDY-2, IF(_DDY>20, 权重DDY-3, IF(_DDY>15, 权重DDY-4, 0)))));
  59. 资金分:=资金分DDX + 资金分DDY;
  60. {量价动能共振模型}
  61. 量比:=DYNAINFO(17);
  62. 量比MIN:=IF (TIME<1000,3,IF (TIME<1430, 2, 1.5));
  63. 量比判断:=量比 > 量比MIN;
  64. 现价:=DYNAINFO(7);
  65. 分时均价:=DYNAINFO(11);
  66. 当前涨幅:=(C-REF(C,1))/REF(C,1)*100;
  67. 涨幅扩大:=当前涨幅 > MA(当前涨幅,5) AND 当前涨幅 > REF(当前涨幅,1);
  68. RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
  69. K:=SMA(RSV,3,1);
  70. D:=SMA(K,3,1);
  71. J:=3*K-2*D;
  72. KDJ上限:=90;
  73. 量价初始分:=IF(量比判断, 权重量价*0.4, 0) + IF(现价>分时均价, 权重量价*0.4, 0) + IF(涨幅扩大, 权重量价*0.2, 0);
  74. 量价分:=IF(MARKET==1, 量价初始分, IF(J<KDJ上限, 量价初始分, 0));
  75. {板块效应强化机制}
  76. 行业排名:=HORCALC(HYBLOCK, 105, 1, 0);
  77. 行业热度:=HORCALC(HYBLOCK, 105, 2, 0)*100;
  78. 板块分:=IF(行业热度>=0,
  79. ROUND(
  80. IF(行业排名<=2, 权重板块*0.6,
  81. IF(行业排名<=3, 权重板块*0.5,
  82. IF(行业排名<=5, 权重板块*0.4,
  83. IF(行业排名<=10, 权重板块*0.2,
  84. 0))))
  85. + IF(行业热度>=3, 权重板块*0.4,
  86. IF(行业热度>=2, 权重板块*0.3,
  87. IF(行业热度>=1, 权重板块*0.2,
  88. 0)))),
  89. 0);
  90. {资金效率筛选}
  91. 成交额万元 := DYNAINFO(8)/10000;
  92. 行业平均涨幅 := 100 * HORCALC(HYBLOCK, 105, 2, 0);
  93. 超额涨幅 := 当前涨幅 - 行业平均涨幅;
  94. 阈值 := MA(VOL,20)/10000;
  95. 资金效率 := IF(成交额万元 > 阈值 AND 成交额万元 > 0, 超额涨幅 / LOG(成交额万元), 0);
  96. 资效分:=IF(资金效率 >= 2, 权重资效,
  97. IF(资金效率 >= 1.5, 权重资效*0.8,
  98. IF(资金效率 >= 1.0, 权重资效*0.6,
  99. IF(资金效率 >= 0.5, 权重资效*0.4,
  100. 0))));
  101. {夏普比率筛选器}
  102. RF := 0.025; {2025年最新无风险利率(2.5%)}
  103. 日收益率 := IF(REF(C,1)!=0, C/REF(C,1)-1, 0);
  104. 年化收益 := (EMA(日收益率,20)*252) - RF;
  105. 年化波动 := (STD(日收益率,20)+0.0001)*SQRT(252);
  106. 夏普值 := 年化收益 / 年化波动;
  107. 夏普阈值 := IF(年化波动>0.3, 0.5, 0.8);
  108. 波动分:=IF(夏普值>夏普阈值 AND 夏普值>=8,权重波动,
  109. IF(夏普值>夏普阈值 AND 夏普值>=6,权重波动*0.8,
  110. IF(夏普值>夏普阈值 AND 夏普值>=4,权重波动*0.6,
  111. IF(夏普值>夏普阈值 AND 夏普值>=2,权重波动*0.4,
  112. IF(夏普值>夏普阈值 AND 夏普值>=1,权重波动*0.2,
  113. 0)))));
  114. {趋势判断}
  115. 短期穿越1:= 现价 > MA(C,5);
  116. 短期穿越2:= MA(C,5) > MA(C,10);
  117. 短期穿越3:= MA(C,10) < MA(C,20);
  118. 换手率下限:=IF (MACHINETIME<094500,0.1,IF (MACHINETIME<100000, 0.15, 0.2));
  119. 换手率条件:=DYNAINFO(36)<换手率下限;
  120. 趋势分:=IF(换手率条件 AND 短期穿越1 AND 短期穿越2 AND 短期穿越3, 权重趋势,
  121. IF(换手率条件 AND 短期穿越1 AND 短期穿越2, 权重趋势*0.5,
  122. IF(换手率条件 AND 短期穿越1, 权重趋势*0.2,
  123. 0)));
  124. {风险控制与信号强化}
  125. 大盘趋势:=INDEXC > MA(INDEXC,50) AND (DYNAINFO(60)/(DYNAINFO(60)+DYNAINFO(61)))>0.3;
  126. 流通市值过滤:=FINANCE(40)/100000000;
  127. 流通市值达标:=流通市值过滤>20;
  128. 市盈率条件:=IF(DYNAINFO(40)>0 AND DYNAINFO(40)<=HYSYL*1.1,1,0);
  129. 风险分:=IF(SAFESCORE>80,
  130. IF(流通市值达标, 权重风险*0.2, 0)
  131. + IF(市盈率条件, 权重风险*0.3, 0)
  132. + IF(大盘趋势, 权重风险*0.5, 0)
  133. ,0);
  134. {量比过小不买}
  135. 量比下限:=0.8;
  136. 市盈率极限:=IF(DYNAINFO(40)<=0 OR DYNAINFO(40)>300,1,0);
  137. 其他分:=IF(量比<=量比下限,-10,0)+IF(市盈率极限,-10,0);
  138. {不是有效代码直接得分为0}
  139. 沪市主板:=CODELIKE('60') AND NOT(CODELIKE('688'));
  140. 深市主板:=CODELIKE('000') OR CODELIKE('001') OR CODELIKE('002') OR CODELIKE('30');
  141. 有效代码:=沪市主板 OR 深市主板 AND NOT(NAMELIKE('ST'));
  142. {总分计算(满分100)}
  143. 信号强度:= (资金分 + 量价分 + 板块分 + 资效分 + 波动分 + 趋势分 + 风险分 + 其他分) * 有效代码;
  144. 买入阈值:=IF(MARKET==1,分数MIN+5, IF(MARKET==3,分数MIN-5,分数MIN));
  145. {即时价格必须小于某涨幅}
  146. 最高涨幅:=(H-REF(C,1))/REF(C,1)*100;
  147. 涨幅上限:=IF((CODELIKE('688') OR CODELIKE('30')), 12, 6);
  148. 买入信号:信号强度>=买入阈值 AND 最高涨幅<涨幅上限;