Python 反向交易者错误:';数据帧';对象没有属性';setenvironment';
我是个新手,我有个大问题。我想开始我的策略(只是一个简单的GoldenCross策略)。此GoldenCross.py脚本如下所示:Python 反向交易者错误:';数据帧';对象没有属性';setenvironment';,python,feed,backtrader,Python,Feed,Backtrader,我是个新手,我有个大问题。我想开始我的策略(只是一个简单的GoldenCross策略)。此GoldenCross.py脚本如下所示: import math import backtrader as bt class GoldenCross(bt.Strategy): params = (("fast", 50), ("slow", 200), ("order percentage", 0.95),
import math
import backtrader as bt
class GoldenCross(bt.Strategy):
params = (("fast", 50),
("slow", 200),
("order percentage", 0.95),
("ticker", "AAPL"))
def __init__(self):
self.fast_moving_average = self.bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.fast,
plotname="50 day moving average")
self.slow_moving_average = self.bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.slow,
plotname="200 day moving average")
self.crossover = self.bt.indicators.crossover(self.fast_moving_average, self.slow_moving_average)
def next(self):
pass
import os, sys, argparse
import pandas as pd
import backtrader as bt
from Strategien.GoldenCross import GoldenCross
import datetime
cerebro = bt.Cerebro()
cerebro.broker.setcash(100000)
symbol = "AAPL"
path = "/Users/me/Desktop/allgemein/Visual Studio/Stock Data/S&P500 Aktien 1H/" + symbol + ".csv"
stock_prices = pd.read_csv(path)
feed = bt.feeds.PandasData(dataname=stock_prices)
#(dataname=stock_prices)
cerebro.adddata(stock_prices)
cerebro.addstrategy(GoldenCross)
cerebro.run()
cerebro.plot()
现在我想用run.py脚本运行策略。在此脚本中,代码如下所示:
import math
import backtrader as bt
class GoldenCross(bt.Strategy):
params = (("fast", 50),
("slow", 200),
("order percentage", 0.95),
("ticker", "AAPL"))
def __init__(self):
self.fast_moving_average = self.bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.fast,
plotname="50 day moving average")
self.slow_moving_average = self.bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.slow,
plotname="200 day moving average")
self.crossover = self.bt.indicators.crossover(self.fast_moving_average, self.slow_moving_average)
def next(self):
pass
import os, sys, argparse
import pandas as pd
import backtrader as bt
from Strategien.GoldenCross import GoldenCross
import datetime
cerebro = bt.Cerebro()
cerebro.broker.setcash(100000)
symbol = "AAPL"
path = "/Users/me/Desktop/allgemein/Visual Studio/Stock Data/S&P500 Aktien 1H/" + symbol + ".csv"
stock_prices = pd.read_csv(path)
feed = bt.feeds.PandasData(dataname=stock_prices)
#(dataname=stock_prices)
cerebro.adddata(stock_prices)
cerebro.addstrategy(GoldenCross)
cerebro.run()
cerebro.plot()
现在visual studio编译器返回一个名为“AttributeError:'DataFrame'对象没有属性'setenvironment'”的错误
我不知道有什么问题。可能问题出在我的csv数据中。。“我的日期”列如下所示:
Unnamed: 0 date close high low open
0 0 2017-01-03T15:00:00.000Z 115.450 115.815 115.400 115.600
1 1 2017-01-03T16:00:00.000Z 115.370 115.670 115.135 115.450
2 2 2017-01-03T17:00:00.000Z 115.470 115.525 115.270 115.365
3 3 2017-01-03T18:00:00.000Z 115.235 115.495 115.235 115.475
4 4 2017-01-03T19:00:00.000Z 115.435 115.445 115.160 115.235
... ... ... ... ... ... ...
但我已尝试使用以下方法将此日期转换为日期时间:
stock_prices['date'] = pd.to_datetime(stock_prices['date']) #object to datetime
但这也不能改变问题
有人给我一个好的小费吗
致意
克里斯蒂安从自我移除开始。不管怎样。。。英国电信在这里不是自我的一员。此外,您没有调用正确的交叉指示器。名称应为驼色大小写。尝试:
class GoldenCross(bt.Strategy):
params = (("fast", 50),
("slow", 200),
("order percentage", 0.95),
("ticker", "AAPL"))
def __init__(self):
self.fast_moving_average = bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.fast,
plotname="50 day moving average")
self.slow_moving_average = bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.slow,
plotname="200 day moving average")
self.crossover = bt.indicators.CrossOver(self.fast_moving_average, self.slow_moving_average)
先从self.bt.whatever中删除self。。。英国电信在这里不是自我的一员。此外,您没有调用正确的交叉指示器。名称应为驼色大小写。尝试:
class GoldenCross(bt.Strategy):
params = (("fast", 50),
("slow", 200),
("order percentage", 0.95),
("ticker", "AAPL"))
def __init__(self):
self.fast_moving_average = bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.fast,
plotname="50 day moving average")
self.slow_moving_average = bt.indicators.SmoothedMovingAverage(
self.data.close,
period=self.p.slow,
plotname="200 day moving average")
self.crossover = bt.indicators.CrossOver(self.fast_moving_average, self.slow_moving_average)
必须添加数据源(非股票价格)
feed=bt.feeds.PandasData(dataname=stock\u prices)
大脑添加数据(股票价格)
到
对我来说,如果将datetime设置为索引并解析datetime,那么这种方法是有效的
stock_prices = pd.read_csv(path, index_col='datetime', parse_dates=True)
必须添加数据源(非股票价格)
feed=bt.feeds.PandasData(dataname=stock\u prices)
大脑添加数据(股票价格)
到
对我来说,如果将datetime设置为索引并解析datetime,那么这种方法是有效的
stock_prices = pd.read_csv(path, index_col='datetime', parse_dates=True)
我没有加载选项卡式数据文件的经验。我通常使用csv文件,它可以很容易地与这里找到的GenericCSVData一起加载:我没有加载选项卡式数据文件的经验。我通常使用csv文件,这些文件可以很容易地与此处找到的GenericCSVData一起加载: