FAQ > 金融建模 > 数据提取 > 行情数据

Q:按用户自定义时间序列生成周期行情数据    

  • A:天软的固定周期与滚动周期,原则上都是尽可能地使区间内的交易时间长度保持一致,所以股票的1小时线为10:30:00,11:30:00,14:00:00,15:00:00这种。
    而有用户希望生成按10点、11点、13点、14点、15点等这样划分的周期线数据。
    所以,本文提供按用户指定时间划分序列,生成指定日周期线数据的实现范例。
    除了可以生成上面用户的划分外,用户还可以根据自己的特殊需求自定义周期的截止时间序列。

    注:本文中实现逻辑仅供用户参考,用户可根据自己的需求,重写自定义部分,或增改其它细节。

    具体案例实现:
    1、说明:按用户指定划分区间,生成日内周期线数据,前开后闭规则。
    2、原则上,当天第一个区间包括集合竞价的数据,最后一个区间包括收盘的所有数据。保证数据完整性。
    3、只支持日内划分,不支持跨日处理。
    4、字段支持:["open"],["high"],["low"],["close"],["amount"],["vol"],["sectional_cjbs"]
    若需其它字段的实现,可自行进行添加实现。
    5、实现过程建模:附件:TradeDataToDIYTimeData.fun
    用户需要下载该附件后,导入该函数后使用,导入方法可参考:FAQ:Q:如何导入函数
    6、用户时间划分自定义:需要重写方法getDIYTimeList,该方法在主程序(TradeDataToDIYTimeData)的实现底部。
    接口定义:getDIYTimeList(S:String,bT:DateTime,eT:DateTime): Array of DateTime
    参数:S,字符串,证券代码
    bT,开始时间,代表当日交易明细的起点,程序中给的是上个交易日的止点。
    eT,截止时间,代表当日交易明细的止点。
    返回:日期时间序列,一维数组。
    重写范例:

    //用户需要按自己需求重写这部分,比如这里是按10点、11点、13点、14点、15点、16点划分的生成实现
    Function getDIYTimeList(S,bT,eT);
    begin
      ov:=BackupSystemParameters2();
      day:=dateof(eT);
      Tarr:=array(day+10/24,1/24)->(day+16/24);
      // 若不需要12点,可以去掉
      Tarr:=Tarr minus array(day+12/24);
      return Tarr;
    end;

    执行:return TradeDataToDIYTimeData('SZ000001',20200602T);
    返回: