FAQ > 金融建模 > 应用案例 > 样本筛选

Q:如何筛选出指定日符合条件的A股    

  • A:一般实现逻辑:
    第一步:取指定日初始样本;
    第二步:循环样本,计算指定日条件指标值,并进行判断过滤
    第三步:存放过滤后的数据结果,根据需求组织展示结构

    实现示例:筛选出指定日全市场股票收盘价大于五日移动均价,且成交金额大于20亿的样本
      endt:=20250903T; //指定日
      upAmt:=20*100000000;//成交金额对比阀值-20亿,方便调整
      N:=5;//最近5日均价,方便调整
      //第一步:取指定日初始样本;
      stocks:=getAbkbydate("A股",endt);
      
      //第二步:循环样本,计算指定日条件指标值,并进行判断过滤
      r:=array();k:=0;
      setsysparam(pn_date(),endt);
      for i,stockid in stocks do
      begin
        setsysparam(pn_stock(),stockid);
        if not istradeday(endt) then continue;//当日不交易的去掉
        amt:=amount();
        if amt<=upAmt then continue;//成交金额小于等于upAmt的去掉
        emaC:=ref(EMa(close(),N),1);//N日移动平均-不包括当日
        c:=close();
        if c<=emaC then continue;//收盘价小于等于N日移动均价的去掉
       //满足条件的留下,并将相关数据存放在数组r中
       //第三步:存放过滤后的数据结果,根据需求组织展示结构
        r[k++]:=array("StockID":stockid,"close":c,"eMA5":emaC,"amount":amt);
      end;
      //结果按成交金额从大到小排序
      return select * from r order by ["amount"] desc end;

    返回结果:(2位精度显示)