BigQuant使用文档

BigQuantsdk应用场景

由bq7zuymm创建,最终由bq7zuymm 被浏览 9 用户

获取数据

获取数据平台的数据到本地:

from bigquant.api import strategy, user, run, dai

# 用户登录(所有业务都需要进行登录)
user.login(username='xxxxxxx', password='xxxxxxxxxxxx')

# 获取个股价格数据(和平台的用法完全一样, DAI的用法详见 https://bigquant.com/wiki/doc/Rceb2JQBdS)
data = dai.query("select date, instrument, close from cn_stock_bar1d", filters={'date': ["2020-01-01", "2020-01-31"]}).df()

# 甚至可以在此基础上对因子进行运算(DAI可用函数详见 https://bigquant.com/wiki/doc/Rceb2JQBds)
data = dai.query("select date, instrument, m_avg(close, 5) from cn_stock_bar1d", filters={'date': ["2020-01-01", "2020-01-31"]}).df()

# 若不会SQL, 还可以使用dai.DataSource方法获取数据
data = dai.DataSource('cn_stock_prefactors').read_bdb(
    as_type=pd.DataFrame, 
    partition_filter={
        "date": ("2020-01-01", "2020-01-31"),     # 填入开始日期和结束日期 
        "instrument": {'000001.SZ'}               # 填入个股代码的集合, 不填则返回全市场数据
    }, 
    columns=["instrument", "date", "open"]
)

数据储存

需要用到数据存储的业务场景太多了:

  1. 可当做一个云数据库来存放自己的数据;
  2. 存放本地AI或者机器学习模型训练数据。
from bigquant.api import strategy, user, run, dai

# 用户登录(所有业务都需要进行登录)
user.login(username='xxxxxxx', password='xxxxxxxxxxxx')

# 样例1: 存放面板数据
data = dai.query("select date, instrument, close from cn_stock_bar1d", filters={'date': ["2020-01-01", "2020-01-31"]}).df()
dai.DataSource.write_bdb(
    data=data,
    id="your_table_name",  # 全局唯一id,支持小写字母、数字、下划线,以字母开始
    unique_together=["date", "instrument"],  # 根据这些字段去重
    indexes=["date"],  # 如果有分区,需要传入索引参数
)

# 样例2: 存放任意pandas.DataFrame数据
data = pd.read_csv('your_data.csv')
dai.DataSource.write_bdb(
    data=data,
    id="your_table_name",  # 全局唯一id,支持小写字母、数字、下划线,以字母开始
)

# 样例3: 存放其他任意结构化数据(如机器学习模型的参数)
params = "你训练的模型参数"
data = pd.DataFrame({"params": params})   # 将模型放入DataFrame当中
dai.DataSource.write_bdb(
    data=data,
    id="your_table_name",  # 全局唯一id,支持小写字母、数字、下划线,以字母开始
)

模拟交易

模拟交易部分需配合aistudio中的任务管理使用,也就说使用sdk进行模拟交易相关业务时需要账号上面有进行模拟交易的任务, 功能意义:

  1. 使用sdk可实现模拟交易跟单;
  2. 获取历史交割单;
  3. 获取历史持仓

获取运行中的模拟交易

from bigquant.api import strategy, user, run, dai
import pandas as pd

# 用户登录(所有业务都需要进行登录)
user.login(username='xxxxxxx', password='xxxxxxxxxxxx')

# 获取当下账户的所有模拟交易任务
data = pd.DataFrame(strategy.get_strategy()['items'])
print(data)

获取模拟交易当天产生的信号

首先需要明确的是, 一个id对应一个策略, 所以我们需要先拿id再获取对应策略的计划订单.

from bigquant.api import strategy, user, run, dai
import pandas as pd

# 用户登录(所有业务都需要进行登录)
user.login(username='xxxxxxx', password='xxxxxxxxxxxx')

# 获取当下账户的所有模拟交易任务
data = pd.DataFrame(strategy.get_strategy()['items'])

# 获取策略id(建议记下你的id, 这样就不需要反复通过访问账户下所有任务后来索引你的id了, 可以避免重复工作)
id = data[data['strategy_name']=='你提交的策略名称']['id'].iloc[0]
print(strategy.get_planned_order(strategy_id=id, df=True))

获取模拟交易的历史信号

get_planned_order是获取最新的信号, 那么get_order就是获取从提交至今的所有信号。

from bigquant.api import strategy, user, run, dai
import pandas as pd

# 用户登录(所有业务都需要进行登录)
user.login(username='xxxxxxx', password='xxxxxxxxxxxx')

# 获取当下账户的所有模拟交易任务
data = pd.DataFrame(strategy.get_strategy()['items'])

# 获取策略id(建议记下你的id, 这样就不需要反复通过访问账户下所有任务后来索引你的id了, 可以避免重复工作)
id = data[data['strategy_name']=='你提交的策略名称']['id'].iloc[0]
print(strategy.get_order(strategy_id=id, df=True).head(2))

获取模拟交易的历史持仓

from bigquant.api import strategy, user, run, dai
import pandas as pd

# 用户登录(所有业务都需要进行登录)
user.login(username='xxxxxxx', password='xxxxxxxxxxxx')

# 获取当下账户的所有模拟交易任务
data = pd.DataFrame(strategy.get_strategy()['items'])

# 获取策略id(建议记下你的id, 这样就不需要反复通过访问账户下所有任务后来索引你的id了, 可以避免重复工作)
id = 'XXXXXXXXXXXXXXXXXXXX'
print(strategy.get_position(strategy_id=id, df=True))

远程执行

顾名思义就是将本地代码托管到我们aistudio云平台上运行。

首先编写好你的py或者ipynb文件:

将代码托管到远程执行:

from bigquant.api import strategy, user, run, dai
import pandas as pd

# 用户登录(所有业务都需要进行登录)
user.login(username='xxxxxxx', password='xxxxxxxxxxxx')

# 将文件放到远程上面运行
run.execute('main.py')

\

{link}