# 事件套利 / 事件发生器

## `tsedEventGenerator`

声明：class

事件发生器框架

<!-- tags: 事件驱动 事件研究 事件生成 -->

### `FBegT`

声明：field

开始日 当前系统时间往前推 3 年

可见性：`public`

类型：date

### `FEndT`

声明：field

截止日 当前系统时间

可见性：`public`

类型：date

### `FConInfo`

声明：field

样本剔除

可见性：`public`

类型：array

### `FIndexArr`

声明：field

（指数定期调整类型事件设置）指数池 array("SH000300")

可见性：`public`

类型：array

### `GetSampleData(output_type)`

声明：function

获取事件样本数据，可以选择是否标准化输出，1：标准化输出（默认）0：非标准化输出

<!-- tags: 查询 归一化 筛选 打印 事件驱动 事件研究 -->

可见性：`public`

| 参数          | 类型    | 说明                   |
| ------------- | ------- | ---------------------- |
| `output_type` | boolean | 整数型，是否标准化输出 |

返回：table

### `GetEventInfo()`

声明：function

获取天软事件库数据信息

<!-- tags: 查询 事件驱动 事件研究 -->

可见性：`public`

返回：table

### `GetStockArr(beg_t, end_t)`

声明：function

获取初始样本池，可重写，详细可见范例二；

<!-- tags: 查询 证券池 证券 个股 -->

可见性：`public`

| 参数    | 类型     | 说明                                       |
| ------- | -------- | ------------------------------------------ |
| `beg_t` | datetime | 日期型，开始日，数值为区间开始日FBegT 的值 |
| `end_t` | datetime | 日期型，截止日，数值为区间截止日FEndT 的值 |

返回：array

#### 示例

范例01：调用示例

```tsl
obj := CreateObject('tsedEventGenerator');
obj.FEventID := "0201";                       //设置事件编号
obj.FBegT := 20191124T;                       //设置开始日
obj.FEndT := 20221124T;                       //设置截止日
obj.FBKName := "A 股;暂停上市;终止上市";        //设置初始样本池
obj.main();
return obj.GetSampleData(0);               //返回事件样本数据
```

范例02：调用示例

```tsl
obj := CreateObject('myEDEventGenerator');
obj.FEventID := "0201";                      //设置事件编号
obj.FBegT := 20191124T;                      //设置开始日
obj.FEndT := 20221124T ;                     //设置截止日
obj.FStockArr := StockArr;                   //设置用户自有样本池
obj.main();
return obj.GetSampleData(0);              //返回事件样本数据
Type myEDEventGenerator=class(tsedEventGenerator)
   FStockArr;    //样本池
   //导入用户自有样本池
   function GetStockArr(BegT,EndT);override;
   begin
      return FStockArr;
   end;
End
```

范例03：调用示例

```tsl
obj := CreateObject('tsedEventGenerator');
obj.FEventID := "0101";                       //设置事件编号
obj.FBegT := 20191124T;                       //设置开始日
obj.FEndT := 20221124T;                       //设置截止日
obj.FIndexArr := array("SH00300");          //设置初始样本池




obj.main();
return obj.GetSampleData(0);              //返回事件样本数据
```
