Указание массивов для сравнения для создания Стратегии не удается, потому что массив не является DataFrame?
Я пытаюсь создать объект стратегии в bt, сравнивая два массива. Объект Strategy создается, но при запуске Strategy мой код выдает ошибку.
Основываясь на чтении документов здесь для SelectWhere()
Метод, я думаю, моя проблема в том, что массив sma50
который используется для тестирования Стратегии, не передается при тестировании Стратегии (используя bt.run()
). Как это исправить? Обратите внимание, что рабочий пример этой стратегии существует здесь
#http://pmorissette.github.io/bt/
#https://www.quantstart.com/articles/Research-Backtesting-Environments-in-Python-with-pandas
import bt
import pandas as pd
###################################################################################################
symbol='EUR=X'
data = bt.get(symbol, start='2016-01-01') #compares EUR to USD
print(data.head())
sma50 = data.rolling(50).mean()
sma200 = data.rolling(200).mean()
sma50=bt.Strategy('sma50',[bt.algos.SelectWhere(data>sma50),
bt.algos.WeighEqually(),
bt.algos.Rebalance()])
sma50_bt=bt.Backtest(sma50, data)
res = bt.run(sma50_bt)
res.plot()