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

Q:在盘中如何实时筛选出符合条件的股票    

  • 一般实现逻辑:
    第一步:指定初始样本,将盘前可提取到的指标及条件放到循环前计算,提高盘中循环效率
    第二步:循环样本,计算条件指标值,并进行判断过滤
      盘中实时行情,推荐rd取数(优点:即时性强,缺点:不能用于历史指定时间,只能用于盘中)
    第三步:存放过滤后的数据结果,根据需求组织展示结构

    示例:在盘中实现每10秒运行一下,实时选出符合条件的个股列表
    注:仅适合在当日开盘后运行
     //第一步:指定初始样本,将盘前可提取到的指标及条件放到循环前计算,提高盘中循环效率
      stocks:=getbk("A股");
    //--在循环监控前获取与盘中无关的指标---提交监控时的运行效率
      setsysparam(pn_cycle(),cy_day());
      setsysparam(pn_date(),now());
      //注:由于开盘前未开始交易时,当前时间会显示为上个交易日
      NowDay:=spec(sp_time(),"SH000001");
      if NowDay<today() then return "今日还未开盘,请稍后再试~";//此时未开盘,防止运行获取到错位数据

      //--如:获取代码名称、昨收、提前过滤掉当日不交易的证券等
      Arr:=select thisrow as '代码',stockname(thisrow) as '名称',
         spec(SectionPrevClose(),thisrow) as "昨收",
         spec(ref(EMA(close(),5),1),thisrow) as "5日均价",//用的移动平均
         spec(open(),thisrow) as "开盘价"
         from stocks
         where spec(istradeday(today()),thisrow)
         end;
      Arr:=select *,100*(["开盘价"]/["昨收"]-1) as "开盘涨幅(%)" from Arr end;
      //--开盘时条件筛选:只跟踪开盘涨幅为正的样本
      Arr_:=select * from Arr where ["开盘涨幅(%)"]>0 end;
      //盘中循环监控
      T0:=StrToTime('15:01:00');
      repeat //使用repeat循环使选股过程至少能执行一次
     //第二步:循环样本,计算条件指标值,并进行判断过滤
        r:=array(); k:=0;
        for i:=0 to length(Arr_)-1 do
        begin
          setsysparam(pn_stock(),Arr_[i,"代码"]);
          c:=rd(6);//当前最新价
          if c<Arr_[i,"5日均价"] then continue;//去掉小于5日均价的
          zf:=100*(c/Arr_[i,"昨收"]-1);//盘中实时涨幅
          if zf<6 then continue;//去掉涨幅小于6%的
          amt:=rd(7);//当前成交金额
          if amt<5*100000000 then continue;//去掉成交额小于5亿的
     //第三步:存放过滤后的数据结果,根据需求组织展示结构
          r[k]:=Arr_[i];
          r[k,"价格"]:=c;
          r[k,"当前涨幅(%)"]:=zf;
          r[k,"成交额"]:=amt;
          k++;
        end;
        r::=ifnumber(mcell)?roundto(mcell,-2):mcell;//保留2位小数
        r:=select * from r order by ["当前涨幅(%)"] end;//排序
        sendrunningdata(r,"盘中实时选股"); //在数据窗口中返回筛选结果
        sleep(10*1000);  //10秒刷一次
      until TimeOf(Now())> T0;//超过指定时间则结束循环
      return "已收盘";


    运行结果展示: