通达信公式买入9_在线使用最终版.txt 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. { 动态市场状态模型 }
  2. FS:=70;
  3. 分数MIN:=IF(MACHINETIME<094500,FS-15,IF(MACHINETIME<100000,FS-10,IF(MACHINETIME<130000,FS-5,FS)));
  4. { 市场牛熊判断 }
  5. N1:=21;
  6. N2:=55;
  7. VOL_RATIO:=1.2;
  8. ATR_PERIOD:=14;
  9. ANGLE:=5;
  10. EMA_INDEX:=EMA(INDEXC,N1);
  11. LONG_EMA_INDEX:=EMA(INDEXC,N2);
  12. TREND_ANGLE:=IF(REF(EMA_INDEX,5)!=0, ATAN((EMA_INDEX/REF(EMA_INDEX,5)-1)*100)*180/3.1416, 0);
  13. VOL_MA:=MA(INDEXV,N2);
  14. INDEX_ATR:=MA(TR,ATR_PERIOD);
  15. LOW_VOLATILITY:=INDEX_ATR/REF(INDEX_ATR,5)<0.7;
  16. COND_BULL:=
  17. EMA_INDEX > LONG_EMA_INDEX AND
  18. COUNT(TREND_ANGLE>ANGLE,3)>=2 AND
  19. EVERY(INDEXV>VOL_MA*VOL_RATIO,3) AND
  20. NOT(LOW_VOLATILITY);
  21. COND_BEAR:=
  22. EMA_INDEX < LONG_EMA_INDEX AND
  23. COUNT(TREND_ANGLE<-ANGLE,3)>=2 AND
  24. EVERY(INDEXV<VOL_MA*0.7,3) AND
  25. INDEX_ATR > REF(INDEX_ATR,5)*1.3;
  26. HY_EMA:=EMA(HY_INDEXC,N1);
  27. HY_TREND_ANGLE:= IF(REF(HY_EMA,5)!=0, ATAN((HY_EMA/REF(HY_EMA,5)-1)*100)*180/3.1416, 0);
  28. STRONG_INDUSTRY:=
  29. HY_EMA > EMA(HY_INDEXC,N2) AND
  30. HY_TREND_ANGLE > ANGLE AND
  31. COUNT(HY_INDEXV>MA(HY_INDEXV,N2)*VOL_RATIO,5)>=3;
  32. WEAK_INDUSTRY:=
  33. HY_EMA < EMA(HY_INDEXC,N2) AND
  34. HY_TREND_ANGLE < -ANGLE AND
  35. MA(HY_INDEXV,N2)/REF(MA(HY_INDEXV,N2),5)<0.8;
  36. HS300C:="399300$CLOSE";
  37. REL_STR:=IF(REF(C,N1)!=0 AND REF(HS300C,N1)!=0, (C/REF(C,N1)) / (HS300C/REF(HS300C,N1)) - 1, 0);
  38. IND_BULL:=FILTER(REL_STR>0.12 AND REL_STR>REF(REL_STR,1),3);
  39. IND_BEAR:=FILTER(REL_STR<-0.18 AND REL_STR<REF(REL_STR,1),3);
  40. WEEK_EMA:=EMA(C#WEEK,5);
  41. WEEK_TREND:=WEEK_EMA>REF(WEEK_EMA,3);
  42. BULL_SCORE:=(COND_BULL + STRONG_INDUSTRY + IND_BULL + WEEK_TREND)>=3;
  43. BEAR_SCORE:=(COND_BEAR + WEAK_INDUSTRY + IND_BEAR + NOT(WEEK_TREND))>=3;
  44. MARKET:=IF(BULL_SCORE,1, IF(BEAR_SCORE,2,3));{1:牛市,2:熊市,3:震荡市或不确定};
  45. { 动态权重 - 根据市场强度调整 }
  46. 牛熊强度:=EMA_INDEX/LONG_EMA_INDEX-1;
  47. 权重主力 :=IF(MARKET==1, 50*(1+牛熊强度), IF(MARKET==3,35,40));
  48. 权重量价 :=IF(MARKET==1, 20, IF(MARKET==3, 5,10));
  49. 权重板块 :=IF(MARKET==1, 30*(1+牛熊强度/2), IF(MARKET==3,15,30));
  50. 权重资效 :=IF(MARKET==1, 0, IF(MARKET==3,20,5));
  51. 权重波动 := IF(MARKET==1, 0, IF(MARKET==3,10,5));
  52. 权重趋势 := IF(MARKET==1, 0, IF(MARKET==3,5,5));
  53. 权重风险 := IF(MARKET==1, 0, IF(MARKET==3,10,5));
  54. { 主力资金增强 - 加入北向资金 }
  55. 北向占比1:= GPJYVALUE(6,1,1);
  56. 北向占比2:=IF(STRCMP(北向占比1,'-')=0,0,IF(北向占比1>0,北向占比1/CAPITAL,0)); { 深沪股通持股比例 }
  57. 权重DDX:=IF(北向占比2=0,权重主力*0.6,权重主力*0.5);
  58. 权重DDY:=IF(北向占比2=0,权重主力*0.4,权重主力*0.3);
  59. 权重北向:=IF(北向占比2=0,0,权重主力*0.2);
  60. _DDX:=(LARGEINTRDVOL-LARGEOUTTRDVOL)*10000/CAPITAL;
  61. _DDY:=IF(TRADENUM>0,(TRADEOUTNUM-TRADEINNUM)*100/TRADENUM,0);
  62. 资金分DDX:= 权重DDX * MIN(1, MAX(0, (_DDX - 0.3)/(1.4 - 0.3)));
  63. 资金分DDY:= 权重DDY * MIN(1, MAX(0, (_DDY - 10)/(30 - 10)));
  64. 资金分北向:= 权重北向 * MIN(1, MAX(0, 北向占比2/3)); { 3%为阈值 }
  65. 资金分数:=资金分DDX + 资金分DDY + 资金分北向;
  66. { 量价模型优化 - 解决早盘失效 }
  67. 量比:=DYNAINFO(17);
  68. 量比MIN:= 2 + (INDEXV / REF(INDEXV,20) - 1) * 0.5; { 调整量比阈值 }
  69. 量比判断:=量比 > 量比MIN;
  70. 现价:=C;
  71. 分时均价:=IF(MACHINETIME>093000, DYNAINFO(11), REF(DYNAINFO(11),1)); { 早盘用前日数据 }
  72. 日内涨幅:=(C-OPEN)/OPEN*100;
  73. 早盘涨幅:=IF(MACHINETIME<100000, 日内涨幅>1.5, 日内涨幅 > REF(MA(日内涨幅,5),1) AND 日内涨幅 > REF(日内涨幅,1)); { 分段处理 }
  74. LC:=REF(CLOSE,1);
  75. RSI_VAL:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;
  76. RSI上限:=70;
  77. OBV_VAL:=SUM(IF(C>REF(C,1),V,IF(C<REF(C,1),-V,0)),0);
  78. OBV_MA:=MA(OBV_VAL,5);
  79. OBV确认:=OBV_VAL > OBV_MA;
  80. 量价初始分:=IF(量比判断, 权重量价*0.3, 0) +
  81. IF(现价>分时均价, 权重量价*0.3 , 0) +
  82. IF(早盘涨幅, 权重量价*0.2, 0) +
  83. IF(OBV确认, 权重量价*0.2, 0);
  84. 量价分数:=IF(MARKET=1, 量价初始分, IF(RSI_VAL<RSI上限, 量价初始分, 0));
  85. { 行业排名使用内置函数 }
  86. 行业排名:=HORCALC(HYBLOCK, 105, 1, 0);
  87. 行业热度:=HORCALC(HYBLOCK, 105, 2, 0)*100;
  88. 板块分数:=IF(行业热度>=0,
  89. ROUND(
  90. IF(行业排名<=2, 权重板块*0.6,
  91. IF(行业排名<=3, 权重板块*0.5,
  92. IF(行业排名<=5, 权重板块*0.4,
  93. IF(行业排名<=10, 权重板块*0.2,
  94. IF(行业排名<=20, 权重板块*0.1,
  95. 0)))))
  96. + IF(行业热度>=3, 权重板块*0.4,
  97. IF(行业热度>=2, 权重板块*0.3,
  98. IF(行业热度>=1, 权重板块*0.2,
  99. 0)))),
  100. 0);
  101. { 资金效率优化 }
  102. 成交额万元 := AMOUNT/10000;
  103. 行业平均涨幅 := 100 * HORCALC(HYBLOCK, 105, 2, 0);
  104. 当前涨幅:=(C-REF(C,1))/REF(C,1)*100;
  105. 超额涨幅 := 当前涨幅 - 行业平均涨幅;
  106. 阈值 := MA(AMOUNT,20)/1000000; { 调整为百万元 }
  107. 资金效率 := IF(成交额万元 > 阈值 AND 成交额万元 > 0, 超额涨幅 / LOG(成交额万元), 0);
  108. 资效分数:=IF(资金效率 >= 2, 权重资效,
  109. IF(资金效率 >= 1.5, 权重资效*0.8,
  110. IF(资金效率 >= 1.0, 权重资效*0.6,
  111. IF(资金效率 >= 0.5, 权重资效*0.4,
  112. 0))));
  113. { 波动率模型改进 }
  114. 日收益率 := IF(REF(C,1)!=0, C/REF(C,1)-1, 0);
  115. 真实波幅:=MAX(MAX(H-L,ABS(H-REF(C,1))),ABS(L-REF(C,1)));
  116. 波动率:=MA(真实波幅,20)/REF(C,20); { ATR相对波动率 }
  117. VAR1:= -1.645 * 波动率 * SQRT(126); { 半年周期 }
  118. 波动分数:=IF(VAR1 > -0.05, 权重波动,
  119. IF(VAR1 > -0.1, 权重波动*0.8,
  120. IF(VAR1 > -0.15, 权重波动*0.6,
  121. IF(VAR1 > -0.2, 权重波动*0.4, 0))));
  122. { 趋势判断增加流动性 }
  123. MID:=MA(C,20);
  124. UPPER:=MID + 2*STD(C,20);
  125. 短期穿越1:= C > MA(C,5);
  126. 短期穿越2:= MA(C,5) > MA(C,10);
  127. 短期穿越3:= MA(C,10) > MA(C,20);
  128. BOLL穿越:=C > UPPER;
  129. { 流动性风控 }
  130. 流通市值:=FINANCE(40)/100000000;
  131. 挂单厚度:=(DYNAINFO(58)+DYNAINFO(59))/CAPITAL;
  132. 换手率条件:=DYNAINFO(37)>0.5 AND 流通市值>30 AND 挂单厚度>15; { 综合流动性 }
  133. 趋势分1:=IF(换手率条件 AND 短期穿越1 AND 短期穿越2 AND 短期穿越3 AND BOLL穿越, 权重趋势,
  134. IF(换手率条件 AND 短期穿越1 AND 短期穿越2 AND 短期穿越3, 权重趋势*0.8,
  135. IF(换手率条件 AND 短期穿越1 AND 短期穿越2, 权重趋势*0.5,
  136. IF(换手率条件 AND 短期穿越1, 权重趋势*0.2,
  137. 0))));
  138. DIFF := EMA(C,12) - EMA(C,26);
  139. DEA := EMA(DIFF,9);
  140. MACD确认 := CROSS(DIFF,DEA) AND BARSLAST(CROSS(DEA,DIFF))>5;
  141. 趋势分2 :=趋势分1 * IF(MACD确认, 1.2, 1);
  142. 趋势分数:=IF(趋势分2> 权重趋势, 权重趋势, 趋势分2);
  143. { 风险控制增强 }
  144. 大盘趋势:=INDEXC > MA(INDEXC,50) AND (DYNAINFO(60)/(DYNAINFO(60)+DYNAINFO(61)))>0.3;
  145. 流通市值达标:=流通市值>30; { 提高市值门槛 }
  146. 市盈率条件:=IF(STRCMP(DYNAINFO(39),'-')=0,0,IF(DYNAINFO(39)>0 AND DYNAINFO(39)<=50,1,0)); { 动态PE<50 }
  147. { 增加财务因子 }
  148. ROE连续:=COUNT(FINANCE(30)>15,4)=4; { 近4年ROE>15% }
  149. 研发占比:=FINANCE(64)/AMOUNT>0.05; { 研发费用率>5% }
  150. 风险分数:=IF(SAFESCORE>80,
  151. IF(流通市值达标, 权重风险*0.2, 0)
  152. + IF(市盈率条件, 权重风险*0.2, 0)
  153. + IF(大盘趋势, 权重风险*0.2, 0)
  154. + IF(ROE连续, 权重风险*0.2, 0)
  155. + IF(研发占比, 权重风险*0.2, 0)
  156. ,0);
  157. { 其他过滤 }
  158. 量比下限:=0.8;
  159. 市盈率极限:=IF(NOT(DYNAINFO(39)) OR DYNAINFO(39)<=0 OR DYNAINFO(39)>300,1,0);
  160. 其他分数:=IF(量比<=量比下限,-10,0)+IF(市盈率极限,-10,0);
  161. { 股票池过滤 }
  162. 沪市主板:=CODELIKE('60') AND NOT(CODELIKE('688'));
  163. 深市主板:=CODELIKE('000') OR CODELIKE('001') OR CODELIKE('002') OR CODELIKE('30');
  164. 有效代码:=(沪市主板 OR 深市主板) AND NOT(NAMELIKE('ST')) AND NOT(NAMELIKE('*'));
  165. { 总分计算 }
  166. 信号强度初始:= (资金分数 + 量价分数 + 板块分数 + 资效分数 + 波动分数 + 趋势分数 + 风险分数 + 其他分数) * 有效代码;
  167. 信号强度:=MAX(MIN(信号强度初始,100),0);
  168. {熔断条件}
  169. 最高涨幅:=(H-REF(C,1))/REF(C,1)*100;
  170. 涨幅上限:=IF((CODELIKE('688') OR CODELIKE('30')), 12, 6);
  171. 熔断条件1:= 最高涨幅>=涨幅上限;{ 当前涨太高了 }
  172. 熔断条件2:= (INDEXC/REF(INDEXC,5)-1)*100 < -2;{ 大盘瞬间暴跌停止买入建议 }
  173. 买入阈值:=分数MIN + 5*(MARKET-2);
  174. 买入信号:信号强度>=买入阈值 AND NOT(熔断条件1) AND NOT(熔断条件2);