深信服python面试题目汇总 python3.11
时间: 2023-11-06 22:00:40 浏览: 161
可以通过以下步骤实现:
1. 创建一个自定义指标类,该类需要继承backtrader的Indicator类,并定义两个输入参数-收盘价和MACD的histo柱。
```python
class Divergence(Indicator):
lines = ('div',)
params = (('close', 0), ('histo', 1),)
```
2. 在__init__方法中,定义一个空列表,用于存储背离的数据点。
```python
def __init__(self):
self.div = []
```
3. 在next方法中,判断当前的收盘价和MACD的histo柱是否存在背离。如果存在,将背离的数据点添加到列表中,并将指标值设置为当前的背离状态。
```python
def next(self):
close = self.data.close[0]
histo = self.data.histo[0]
if len(self.div) > 0:
last_div = self.div[-1]
if last_div['type'] == 'bearish' and close > last_div['close'] and histo < last_div['histo']:
self.div.append({'type': 'bullish', 'close': close, 'histo': histo})
self.lines.div[0] = 1
elif last_div['type'] == 'bullish' and close < last_div['close'] and histo > last_div['histo']:
self.div.append({'type': 'bearish', 'close': close, 'histo': histo})
self.lines.div[0] = -1
else:
self.lines.div[0] = 0
else:
self.div.append({'type': 'bearish', 'close': close, 'histo': histo})
self.lines.div[0] = -1
```
4. 最后,在策略中添加该指标即可。
```python
class MyStrategy(bt.Strategy):
def __init__(self):
self.div = Divergence(close=self.data.close, histo=self.macd.lines.histo)
```
阅读全文