使用Backtrader做期货跨品种套利回测时策略编写出现问题。
class SmaCross(bt.Strategy):
params = dict(
pfast=10,
pslow=30,
)
def init(self):
# 指定策略的参数
# 计算两条数据(data1,data2)close的差值
self.diff = (self.data1.close - self.data0.close)
# 计算差值的percentrank
self.pdiff = self.diff.Mathematics_score.rank(pct=True)
df['Percentile_rank'] =self.diff.Mathematics_score.rank(pct=True)
print(type((self.diff))
def next(self):
if not self.position:
if self.pdiff > 0.8:
# 买入assets1,卖出Assets2
self.buy(data0, size=1)
self.sell(data1, size=1)
else:
买入assets2, 卖出Assets1
self.buy(data1, size=1)
self.sell(data0, size=1)
else:
if self.pdiff > 0.8:
# 买入assets1,卖出Assets2
self.buy(data1, size=1)
self.sell(data0, size=1)
else:
买入assets2, 卖出Assets1
self.buy(data0, size=1)
self.sell(data1, size=1)
def next(self):
^
SyntaxError: invalid syntax
比如说HC.SHF&RB.SHF 这两个品种,我希望能够达到的效果是当HC-RB的差值的历史排位高于80%时,则买入RB,卖出HC。当差值的历史排位小于30%时,则买入HC,卖出RB。
代码中的ASSET0=RB.SHF ASSET1=HC.SHF