## 函数命名规则

<ul>
<li>
函数名以 <code>get_</code> 开头的，表示数据来源于客户端内存
</li>
<li>
函数名以 <code>query_</code> 开头的，表示数据是向服务查询
</li>
</ul>

## 账号类型说明

<ul>
<li>
&#x27;FUTURE&#x27; - 期货账号
</li>
<li>
&#x27;STOCK&#x27; - 股票账号
</li>
<li>
&#x27;CREDIT&#x27; - 信用账号
</li>
<li>
&#x27;FUTURE_OPTION&#x27; - 期货期权
</li>
<li>
&#x27;STOCK_OPTION&#x27; - 股票期权
</li>
<li>
&#x27;HUGANGTONG&#x27; - 沪港通
</li>
<li>
&#x27;SHENGANGTONG&#x27; - 深港通
</li>
</ul>

## symbol_code - 代码表示

迅投代码(symbol_code)是迅投平台统一用于表示交易标的的代码 其格式为:**交易标的代码.交易所代码**,例如深圳证券交易所的平安银行,迅投代码为`000001.SZ`(不区分大小写)。代码表示可以在迅投研终端的行情列表或者按键精灵中查询。

<figure class="docs-official-figure" data-source-url="https://dict.thinktrader.net/assets/内置API_交易代码查询界面示例-e39483ea.png">
  <img src="assets/images/docs/qmt/official/variable-convention/内置API_交易代码查询界面示例-e39483ea-e39483ea95.png" alt="迅投研终端示例" loading="lazy">
  <figcaption>迅投研终端示例</figcaption>
</figure>

## 交易所代码

目前迅投研支持国内12个交易所,12个交易所的代码缩写如下:

| 交易所名称 | 迅投简称 | 显示后缀 |
| --- | --- | --- |
| 上海证券交易所 | SH | SH |
| 深圳证券交易所 | SZ | SZ |
| 北京证券交易所 | BJ | BJ |
| 香港证券交易所 | HK | HK |
| 沪港通 | HGT | HGT |
| 深港通 | SGT | SGT |
| 中国金融期货交易所 | IF | CFFEX |
| 上海期货交易所 | SF | SHFE |
| 大连商品交易所 | DF | DCE |
| 郑州商品交易所 | ZF | CZCE |
| 上海国际能源交易中心 | INE | INE |
| 广州期货交易所 | GF | GFEX |

迅投研系统目前支持一站式获取全球多市场数据，详情链接：[全球市场数据在新窗口打开](https://xuntou.net/#/shoppingMall?goback=1&id=7zqjlm)

<figure class="docs-official-figure" data-source-url="https://dict.thinktrader.net/assets/内置API_全球市场数据-941c5b28.png">
  <img src="assets/images/docs/qmt/official/variable-convention/内置API_全球市场数据-941c5b28-941c5b282b.png" alt="全球行情展示" loading="lazy">
  <figcaption>全球行情展示</figcaption>
</figure>

## 交易标的代码

交易标的代码是指交易所给出的交易标的代码, 包括股票（如 600000）, 期货（如 rb2011）, 期权（如 10002498）, 指数（如 000001）, 基金（如 510300）等代码。

!!! warning "注意"
    对于期货合约代码来说，我们仅对`market`做了简化处理，`symbol`仍遵守交易所标准命名规则，且**严格区分大小写**，例如`AP401.ZF`不能写成`ap401.ZF`,`rb2401.SF`不能写成`RB2401.SF`

### symbol示例

| 市场中文名 | 市场代码 | 示例代码 | 显示后缀 | 证券简称 |
| --- | --- | --- | --- | --- |
| 上交所 | SH | 600000.SH | SH | 浦发银行 |
| 深交所 | SZ | 000001.SZ | SZ | 平安银行 |
| 北交所 | BJ | 830779.BJ | BJ | 武汉蓝电 |
| 中金所 | IF | IC2311.IF | CFFEX | 中证 500 指数 2023 年 11 月期货合约 |
| 上期所 | SF | rb2311.SF | SHFE | 螺纹钢 2023 年 11 月期货合约 |
| 大商所 | DF | m2311.DF | DCE | 豆粕 2023 年 11 月期货合约 |
| 郑商所 | ZF | FG305.ZF | CZCE | 玻璃 2023 年 5 月期货合约 |
| 上海国际能源交易中心 | INE | sc2311.INE | INE | 原油 2023 年 11 月期货合约 |
| 广期所 | GF | lc2405.GF | GFEX | 碳酸锂 2024 年 05 月期货合约 |
| 上证期权 | SHO | 10005334.SHO | SH | 50ETF购12月2650 |
| 深证期权 | SZO | 90002114.SZO | SZ | 深证100ETF沽12月2700 |
| 板块指数 | BKZS | 290001.BKZS | BKZS | 工业品期货板块指数 |

## 期货主力连续合约

仅支持回测模式下交易，`期货主力连续合约`为量价数据的简单拼接，未做平滑处理，如`rb00.SF`螺纹钢主连合约。其他主连合约代码请参考[迅投期货数据说明](https://dict.thinktrader.net/dictionary/future.html#%E4%B8%BB%E5%8A%9B%E8%BF%9E%E7%BB%AD%E5%90%88%E7%BA%A6%E5%8F%8A%E5%8A%A0%E6%9D%83)。

## 期货加权连续合约

仅支持回测模式下交易，`期货加权连续合约`为迅投按照一定规则加权合成的连续合约，相比主力连续合约更加平滑，如`rbJQ00.SF`。其他加权合约代码请参考[迅投期货数据说明](https://dict.thinktrader.net/dictionary/future.html#%E4%B8%AD%E9%87%91%E6%89%80)。

## mode - 模式选择

迅投研终端中，策略可以以四种模式运行，分别为`调试运行模式`，`回测模式`,`模拟信号模式`,`实盘交易模式`，模式需要在运行策略时手动选择

## 调试运行模式

调试运行模式需要在策略编辑界面点击编辑栏上方的`运行`，该模式下策略会以实时行情进行运算，但迅投研终端`不会记录交易信号`

<figure class="docs-official-figure" data-source-url="https://dict.thinktrader.net/assets/内置API_运行模式-5e259f69.png">
  <img src="assets/images/docs/qmt/official/variable-convention/内置API_运行模式-5e259f69-5e259f6984.png" alt="迅投研终端示例" loading="lazy">
  <figcaption>迅投研终端示例</figcaption>
</figure>

## 回测模式

回测模式需要在策略编辑界面点击编辑栏上方的`回测`，该模式下策略会以右侧栏设定的回测周期推进行情进行运算，回测模式下，发生的交易会被记录在回测结果页面

<figure class="docs-official-figure" data-source-url="https://dict.thinktrader.net/assets/内置API_回测模式-922c1015.png">
  <img src="assets/images/docs/qmt/official/variable-convention/内置API_回测模式-922c1015-922c10154b.png" alt="迅投研终端示例" loading="lazy">
  <figcaption>迅投研终端示例</figcaption>
</figure>

## 模拟信号模式

模拟信号模式需要在策略交易界面，在左侧策略文件栏中选择要进行计算运行的策略，点击`右侧圆形按钮`选择**模拟**，点击`三角形运行按钮`后策略会以实时行情进行运算，该模式下调用的下单函数(passorder)**不会产生实际交易，仅会记录交易信号在下方的`策略信号`栏中**

<figure class="docs-official-figure" data-source-url="https://dict.thinktrader.net/assets/内置API_模拟信号模式-f1af1ef8.png">
  <img src="assets/images/docs/qmt/official/variable-convention/内置API_模拟信号模式-f1af1ef8-f1af1ef8a0.png" alt="迅投研终端示例" loading="lazy">
  <figcaption>迅投研终端示例</figcaption>
</figure>

## 实盘交易模式

实盘交易模式需要在策略交易界面，在左侧策略文件栏中选择要进行计算运行的策略，点击`右侧圆形按钮`选择**实盘**，点击`三角形运行按钮`后策略会以实时行情进行运算，该模式下调用的下单函数(passorder)**会对账户实际下单，同时交易信号会记录在下方的`策略信号`栏中**

<figure class="docs-official-figure" data-source-url="https://dict.thinktrader.net/assets/内置API_实盘模式-81101369.png">
  <img src="assets/images/docs/qmt/official/variable-convention/内置API_实盘模式-81101369-81101369b2.png" alt="迅投研终端示例" loading="lazy">
  <figcaption>迅投研终端示例</figcaption>
</figure>

## ContextInfo - 上下文对象

## ContextInfo.start/ContextInfo.end - 回测开始/结束时间

!!! warning "注意"
    一、此属性只在回测模式生效；
    
    二、仅在init中设置生效，应在init中设置完毕；
    
    三、缺省值为策略编辑界面设定的回测时间范围；
    
    四、回测起止时间也可在策略编辑器的回测参数面板中设置，若两处同时设置，则以代码中设置的值为准；
    
    五、结束时间小于等于开始时间则计算范围为空。

**释义**

可通过此属性设定回测开始/结束的时间,以`%Y-%m-%d %H:%M:%S`格式传入

**原型**

```python
ContextInfo.start # 回测开始时间属性
ContextInfo.end # 回测结束时间属性
```

**返回值**`none`

**示例**

```python
# coding:gbk
def init(ContextInfo):
	ContextInfo.start = "2017-01-01 00:00:00"# 回测开始时间为 2017-01-01
	ContextInfo.end = "2020-01-01 00:00:00"# 回测结束时间为 2020-01-01
def handlebar(ContextInfo):
	# 打印输出当前回测时间
	print(timetag_to_datetime(ContextInfo.get_bar_timetag(ContextInfo.barpos), "%Y-%m-%d %H%M%S"))
```

```
2017-01-03 103000
2017-01-03 113000
2017-01-03 140000
2017-01-03 150000
2017-01-04 103000
2017-01-04 113000
2017-01-04 140000
2017-01-04 150000
2017-01-05 103000
2017-01-05 113000
...
```

## ContextInfo.capital - 设定回测初始资金

!!! warning "注意"
    此函数只支持回测模式。回测初始资金也可在策略编辑器的回测参数面板中设置，若两处同时设置，则以代码中设置的值为准。

**释义** 设定回测初始资金，**支持读写**，默认为 1000000

**原型**

```python
ContextInfo.capital = 10000000 # 设定ContextInfo.capital 值为10000000
```

**返回值**`float`类型的数值，代表当前策略设定的回测金额

**示例**

```python
# coding:gbk
def init(ContextInfo):
    ContextInfo.capital = 10000000
def handlebar(ContextInfo):
    print(ContextInfo.capital)
```

```
10000000.0
10000000.0
10000000.0
...
```

## ContextInfo.period - 获取当前周期

**释义** 获取当前周期，即基本信息中设置的默认周期，**只读**

**原型**

```python
ContextInfo.period
```

**返回**`string`,返回值含义:

| 值 | 含义 |
| --- | --- |
| '1d' | 日线 |
| '1m' | 1分钟线 |
| '3m' | 3分钟线 |
| '5m' | 5分钟线 |
| '15m' | 15分钟线 |
| '30m' | 30分钟线 |
| '1h' | 小时线 |
| '1w' | 周线 |
| '1mon' | 月线 |
| '1q' | 季线 |
| '1hy' | 半年线 |
| '1y' | 年线 |

**示例**

```python
# coding:gbk
def init(ContextInfo):
    pass
def handlebar(ContextInfo):
    print(ContextInfo.period)
```

```
1d
```

## ContextInfo.barpos - 获取当前运行到 K 线索引号

**释义**

获取主图当前运行到的 K 线索引号，只读，索引号从0开始

**原型**

```python
ContextInfo.barpos
```

**返回值**`int`类型值,代表着当前K线的索引号

**示例**

```python
# coding:gbk
def init(ContextInfo):
    pass
def handlebar(ContextInfo):
    print(ContextInfo.barpos)
```

```
0
1
2
3
4
5
...
```

## ContextInfo.time_tick_size - 获取当前图 K 线数目

**释义**

获取当前图 K 线bar的数量，只读

**原型**

```python
ContextInfo.time_tick_size
```

**返回值**`int`

**示例**

```python
# coding:gbk
def init(ContextInfo):
    pass
def handlebar(ContextInfo):
    print(ContextInfo.time_tick_size)
```

```
5297
5297
5297
5297
5297
5297
...
```

## ContextInfo.stockcode - 获取当前图代码

**释义**

获取当前主图代码，只读

**原型**

```python
ContextInfo.stockcode
```

**返回值**`string`：对应主图代码

**示例**

```python
# coding:gbk
def init(ContextInfo):
    pass
def handlebar(ContextInfo):
    print(ContextInfo.stockcode)
```

```
000300
000300
000300
000300
000300
...
```

## ContextInfo.market - 获取当前主图市场

**释义**

获取当前主图市场，只读

**原型**

```python
ContextInfo.market
```

**返回值**`string`：对应主图市场

**示例**

```python
# coding:gbk
def init(ContextInfo):
    pass
def handlebar(ContextInfo):
    print(ContextInfo.market)
```

```
SH
SH
SH
SH
SH
...
```

## ContextInfo.dividend_type - 获取当前主图复权处理方式

**释义**

获取当前主图复权处理方式

**原型**

```python
ContextInfo.dividend_type
```

**返回值**`string`，返回值含义：

| 值 | 含义 |
| --- | --- |
| 'none' | 不复权 |
| 'front' | 向前复权 |
| 'back' | 向后复权 |
| 'front_ratio' | 等比向前复权 |
| 'back_ratio' | 等比向后复权 |

**示例**

```python
# coding:gbk
def init(ContextInfo):
    pass
def handlebar(ContextInfo):
    print(ContextInfo.dividend_type)
```

```
front_ratio
front_ratio
front_ratio
front_ratio
front_ratio
...
```

## ContextInfo.benchmark - 获取回测基准标的

!!! warning "注意"
    该属性只在回测模式可用

**释义** 获取回测基准的代码，只读

**原型**

```python
ContextInfo.benchmark
```

**返回值**`string`

**示例**

```python
# coding:gbk
def init(ContextInfo):
    pass
def handlebar(ContextInfo):
    print(ContextInfo.benchmark)
```

```
000300.SH
000300.SH
000300.SH
000300.SH
000300.SH
...
```

## ContextInfo.do_back_test - 表示当前是否为回测模式

**释义**

表示当前是否为回测模式，只读，默认值为 False

**原型**

```python
ContextInfo.do_back_test
```

**返回值**`bool`
