FAQ > 金融建模 > 应用案例 > 指标或功能实现

Q:如何统计区间内每日大小单流入流出数据    

简述
本案例中,对于大小单的判定阀值:
1.小单:小于4万元
2.中单:4-20万元
3.大单:20-100万元
4.超大单:大于100万元
选取成交明细中满足条件并按日线,买卖标识汇总成交金额数据
  • 说明:获取个股或累计股票列表区间内每日流入流出的大小单成交金额(万)数据
    代码:

    Function Stock_BuyAndSellTracking(stockid,begt,endt);
    Begin
    {**
      %% @explain(说明)大单跟踪,返回个股或累计股票列表区间每日流入流出的大小单成交金额(万)数据
            包括:小单:单笔交易明细成交金额<4万元
              中单:单笔交易明细成交金额4-20万元
              大单:单笔交易明细成交金额20-100万元
              小单:单笔交易明细成交金额大于100万元
      %% @param(stiockid)(VarChar/array) 股票代码
      %% @param(begt)(DateT) 开始日
      %% @param(endt)(DateT) 截止日
      %% @return(array) 区间每日流入流出大小单数据
    **}

      ov:=BackupSystemParameters2();
      //stockid:="SZ000001";
      //begt:=20220301t;
      //endt:=20220407t;
     
      tradData:=select ['date'],
              dateOf(["date"]) as 'day',
              ['amount']/10000. as '成交金额(万)',
              ['zmm']
           from tradetable datekey begt to endt+16/24 of stockid where ['amount']>0 end;
      trad3:=select *,['成交金额(万)']/2 as "成交金额(万)" from tradData where ["zmm"]=3 end;
      len:=length(trad3);
      for i:=0 to len-1 do
      begin
       trad3[i]:=trad3[i,:];
       trad3[len+i]:=trad3[i,:];
       trad3[i,"zmm"]:=1;
       trad3[len+i,"zmm"]:=2;
      end
      tradData:=select * from tradData where ["zmm"] in array(1,2) end union2 trad3 ;

      if not istable(tradData) then return array();
      tradData[:,array('小单','中单','大单','超大单')]:=0;
      compA:=function(v);
      begin
       case v of
         0 to 4:return '小单';
         4 to 20:return '中单';
         20 to 100:return '大单';
         else return '超大单';
       end;
      end;
      update tradData set [compA.do(['成交金额(万)'])]=['成交金额(万)'] end;
      tradd:=select datetostr(["day"]) as "日期",
             sumof(["超大单"],["zmm"]=1) as "流入额(超大单)",
             sumof(["超大单"],["zmm"]=2) as "流出额(超大单)",
             sumof(["大单"],["zmm"]=1) as "流入额(大 单)",
             sumof(["大单"],["zmm"]=2) as "流出额(大 单)",
             sumof(["中单"],["zmm"]=1) as "流入额(中 单)",
             sumof(["中单"],["zmm"]=2) as "流出额(中 单)",
             sumof(["小单"],["zmm"]=1) as "流入额(小 单)",
             sumof(["小单"],["zmm"]=2) as "流出额(小 单)"
         from tradData group by ["day"] order by ["day"] end;
      return tradd;
    End;

    案例图形:

    附件:附件:Stock_BuyAndSellTracking.fun
    相关链接:FAQ:Q: 天软中如何实现市场的超大单,大单,中单,小单按分钟汇总的成交金额走势图