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"]
)
数据储存
需要用到数据存储的业务场景太多了:
- 可当做一个云数据库来存放自己的数据;
- 存放本地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进行模拟交易相关业务时需要账号上面有进行模拟交易的任务, 功能意义:
- 使用sdk可实现模拟交易跟单;
- 获取历史交割单;
- 获取历史持仓
获取运行中的模拟交易
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')
\