麻烦谁给我好好讲讲context和data,新手真的懵了

新手专区
context
data
标签: #<Tag:0x00007fd65ea14f50> #<Tag:0x00007fd65ea14ca8> #<Tag:0x00007fd65ea14b18>

(wujunjun) #1

context和data到底是什么啊?怎么里面有很多变量、甚至还有函数?
下面这个语句[]里面不是个布尔值么?怎么解释?
ranker_prediction = context.ranker_prediction[
context.ranker_prediction.date == data.current_dt.strftime(’%Y-%m-%d’)]


(iQuant) #2

您好,收到您的提问,已提交给策略工程师,我们会尽快为您解答。


(达达) #3

context(或者叫 TradingAlgorithm)是回测模块的重要对象,这个对象记录了回测引擎需要的起止时间、标的范围、初始资金和每日仓位(包括股票名称和持仓数量) 同时你自己定义的变量比如自己计算的风控技术指标也通常存在context下的变量,比如context.ma5,这个对象因为是全局变量,因此可以在回测模块中至关重要。

回测模块包含了初始化函数(定义费率和滑点等参数,获取AI模型的预测结果数据放到context.predictions), 数据准备函数(计算自己需要的指标),主函数(每日运行的策略买卖主逻辑)和盘前处理函数(通常用来处理订单,例如撮合前的取消某个订单)

使用context对象定义变量是为了方便在这四个函数中交叉引用,例如在数据准备中计算了大盘风控双均线死叉信号context.signal,然后在主函数中就可以调用context.signal变量来获取信号值然后每日判断是否清仓。

系统中默认的仓位、资金的等数据也都存在这个context对象中。

data对象提供了一些具体的数据查询方法,例如获取历史数据的方法data.history。还提供了查询当日股票是否可交易的 can_trade方法等。这些方法通常在策略构建中比较重要。

因此熟练掌握data对象的查询数据方法和context对象中默认的仓位、资金、时间等数据的查询方法是和重要的。


(wujunjun) #4

有没有这样的示意图介绍


对每个复杂的对象的层次以及没级都是什么类型的变量进行一个介绍


(iQuant) #5

示意图我们还在制作中哈,文档及学院教程我们也在逐步更新,您的需求我们已经记下了。


(dts) #6

您好,我在context下面定义了一个dict变量context.buy_trade_date={},用于保存每天买入股票的日期,在回测环境下没有问题,但在模拟交易下就不行,想问下,这种写法模拟交易有问题吗?


(达达) #7

是的,模拟交易的数据库中没有存储自定义的变量,您可以通过系统内置的变量last_sale获取这个买入日期
参考学院


(dts) #8

好的,多谢~


(wicked_code) #9

prepare中怎么获取时间啊,怎么获取数据啊,比如计算上证指数的均线。


(达达) #10

参考学院中的大盘风控对应的代码