FAQ > 金融建模 > 应用案例 > 资金流向

Q:如何获取个股日内分钟级主力流入流出(大小单)    

简述
本案例中,对于大中小单的判定阈值:
1.小单:单笔成交金额<20万
2.中单:单笔成交金额>=20万 且 <100万元
3.大单:单笔成交金额>=100万元
用户可根据自己的需求参考相关模型调整阈值大小。
  • A:使用模型Stock_MoneyFlow_Grading统计个股日内分钟级资金流入流出(大小单)。
    本文中提供以下取数范例:
    范例说明
    范例一个股指定日分钟线大小单资金流入流出
    范例二多个股票指定日30分钟线大小单资金流入流出
    范例三多个股票指定区间30分钟线大小单资金流入流出
    范例四(网格计算)多个股票指定区间30分钟线大小单资金流入流出
    实现范例
    范例一:获取个股指定日分钟线大小单资金流入流出
    endt:=20260310T;
    stock:="SZ000001";
    cycle:=cy_1m();
    BSType:=3;
    DType:=3;
    Option:=Array(1000000,200000,0);//自定义分档下界,从大单到小单
    data:=Stock_MoneyFlow_Grading(Stock,EndT,Cycle,BSType,DType,Option); //获取资金流向数据
    //大小单相关字段
    cols:=array("时间","大单流入成交金额","大单流出成交金额","中单流入成交金额","中单流出成交金额","小单流入成交金额","小单流出成交金额");
    name:=StockName(stock);
    return select stock as "代码",name as "名称",* from data[:,cols] end;
    部分结果:


    范例二:获取多个股票指定日30分钟线大小单资金流入流出
    endt:=20260310T;
    stocks:=GetBKByDate("SH000016",endt);//上证50指定日成份股
    cycle:=cy_30m();
    BSType:=3;
    DType:=3;
    Option:=Array(1000000,200000,0);//自定义分档下界,从大单到小单
    cols:=array("时间","大单流入成交金额","大单流出成交金额","中单流入成交金额","中单流出成交金额","小单流入成交金额","小单流出成交金额");
    data:=array();
    for i,stock in stocks do
    begin
      name:=StockName(stock);
      tmp:=Stock_MoneyFlow_Grading(Stock,EndT,Cycle,BSType,DType,Option);
      data&=select stock as "代码",name as "名称",* from tmp[:,cols] end;
    end
    return data;
    部分结果:


    范例三:获取多个股票指定区间30分钟线大小单资金流入流出
      cycle:=cy_30m();
      BSType:=3;
      DType:=3;
      Option:=Array(1000000,200000,0);//自定义分档下界,从大单到小单
      begt:=20250501T; //开始时间
      endt:=20250531T; //截止时间
      cols:=array("时间","大单流入成交金额","大单流出成交金额","中单流入成交金额","中单流出成交金额","小单流入成交金额","小单流出成交金额");
      setsysparam(pn_cycle(),cy_day());//周期-日线
      dayarr:=markettradedayqk(begt,endt);//获取市场交易日序列
      data:=array();
      for i,day in dayarr do
      begin
        echo datetostr(day); //打印执行时间
        stocks:=GetBKByDate("SH000016",day);//上证50指定日成份股
        for j,stock in stocks do
        begin
         name:=StockName(stock);
         tmp:=Stock_MoneyFlow_Grading(stock,day,Cycle,BSType,DType,Option);
         data&=select stock as "代码",name as "名称",* from tmp[:,cols] end;
        end
      end
      //对数据进行排序
      data:=select * from data order by ["代码"],["时间"] end;
      return data;
    部分结果:


    范例四:(网格计算)获取多个股票指定区间30分钟线大小单资金流入流出
    网格计算使用说明:FAQ:Q:天软网格计算
    优化效果说明
    范例三不使用网格计算执行结果约45秒,范例四使用4个网格执行时间约12秒,
    有效提升了执行效率
      begt:=20250501T; //开始时间
      endt:=20250531T; //截止时间
      GN:=4;//网格数
      setsysparam(pn_cycle(),cy_day());//周期-日线
      dayarr:=markettradedayqk(begt,endt);//获取市场交易日序列
      //循环指定日期计算指标的值
      ret:=rt:=array();
      GNR:=array();
      for i:=0 to length(dayarr)-1 do
      begin
        endt:=dayarr[i];
        stocks:=GetBKByDate("SH000016",endt);//上证50指定日成份股
        lenGR:=length(GNR);
        if lenGR<GN then
        begin
          ret[i]:=#doStocksData(stocks,endt);
          GNR&=array(i);
        end
        else if lenGR=GN then
        begin
          ret[i]:=doStocksData(stocks,endt);
          GNR&=array(i);
          for j,v in GNR do  //等待网格数据结果并合并到rt中
            rt&=dupvalue(ret[v]);
          GNR:=array();
        end
      end
      for j,v in GNR do
        rt&=dupvalue(ret[v]);
       
      //对数据进行排序
      rt:=select * from rt order by ["代码"],["时间"] end;
      return rt;

    Function doStocksData(stocks,endt);
    begin
      echo datetostr(endt);
      cycle:=cy_30m();
      BSType:=3;
      DType:=3;
      Option:=Array(1000000,200000,0);//自定义分档下界,从大单到小单
      //输出字段
      cols:=array("时间","大单流入成交金额","大单流出成交金额","中单流入成交金额","中单流出成交金额","小单流入成交金额","小单流出成交金额");
      data:=array();
      for i,stock in stocks do
      begin
        name:=StockName(stock);
        tmp:=Stock_MoneyFlow_Grading(Stock,EndT,Cycle,BSType,DType,Option);
        data&=select stock as "代码",name as "名称",* from tmp[:,cols] end;
      end
      return data;
    end
    部分结果: