backtader indicator self._owner
时间: 2023-08-21 16:01:00 浏览: 42
backtrader 是一个流行的量化交易框架,通过使用其提供的各种指标,可以进行技术分析和交易策略的开发。
在 backtrader 中,self._owner 是指当前指标对象所属的策略或者数据对象。在指标对象中,可以通过 self._owner 来访问和操作策略或数据对象的属性和方法。
例如,可以使用 self._owner.data 来访问策略或数据对象的数据集,可以使用 self._owner.buy() 来进行买入交易指令。通过 self._owner ,指标对象可以与所属的策略或数据对象进行交互和数据共享。
使用 self._owner 的主要目的是为了方便指标对象与所属的策略或数据对象之间的通信和数据传递。通过 self._owner ,指标对象可以获取其所需的输入数据或参数,并将计算结果返回给策略对象进行进一步处理和决策。
总之,backtrader 中的 self._owner 是指当前指标对象所属的策略或数据对象,通过它可以方便地进行数据传递和交互操作,使得指标对象能够更好地与策略和数据对象进行集成和扩展。
相关问题
我的代码是这样的, if (index || index === 0) { currentDimension.indicator_data.find( (indicator) => indicator.indicator_name === indicatorRef.current, )!.indicator_threshold![index] = threshold; indicator.indicator_threshold[index] = threshold; }
在你提供的代码中,`indicator_threshold` 是一个可选的数组类型 `(number | null)[] | number | null`。因为它是可选的,所以在访问它的属性和索引时,需要加上 `!` 断言符号来告诉 TypeScript 这个属性或索引一定存在。
在这个代码块中,你使用了 `!` 断言符号来访问了 `indicator_threshold` 数组的索引,但是你没有进行类型保护来判断 `indicator_threshold` 的类型是否为数组。因此,当 `indicator_threshold` 是一个数字类型时,你会遇到编译错误。
你可以使用类型保护来判断 `indicator_threshold` 的类型是否为数组,只有在它是一个数组时才进行索引操作。例如:
```typescript
if (index || index === 0) {
const foundIndicator = currentDimension.indicator_data.find(
(indicator) => indicator.indicator_name === indicatorRef.current,
);
if (foundIndicator) {
const indicatorThreshold = foundIndicator.indicator_threshold;
if (Array.isArray(indicatorThreshold)) {
indicatorThreshold[index] = threshold;
}
}
}
```
在上面的代码中,我们先使用 `find` 方法查找到了 `indicator_data` 数组中指定名称的指标,然后再判断它的 `indicator_threshold` 属性是否为数组类型,只有在它是数组类型时才进行索引操作。这样可以避免在 `indicator_threshold` 是数字类型时出现编译错误。
在别的python文件中怎么调用 def clustering(self): # 使用了K-means聚类方法将数据分成n_clusters个簇 epsilon = torch.tensor(10**-7).to(self.device) # self.indicator是输入的数据,self.labels是标签数据 indicator = self.indicator / self.indicator.norm(dim=1).reshape((self.data_size, -1)).max(epsilon) indicator = indicator.detach().cpu().numpy() km = KMeans(n_clusters=self.n_clusters).fit(indicator) prediction = km.predict(indicator) print(prediction) acc, nmi, ari, f1 = cal_clustering_metric(self.labels.cpu().numpy(), prediction) return acc, nmi, ari, f1里面的prediction,并输出结果
在别的python文件中调用这个方法,你需要先导入这个类,然后创建这个类的实例对象。在实例化对象后,你就可以调用这个方法了。
假设这个类的名字为 `MyClustering`,那么你可以这样调用:
```python
from my_module import MyClustering
# 创建实例对象
clustering = MyClustering()
# 调用 clustering 方法
acc, nmi, ari, f1 = clustering.clustering()
# 打印 prediction
print(clustering.prediction)
```
注意,在这个示例中,`my_module` 是存储这个类的模块的名称。你需要根据实际情况来修改导入语句。