@pierre-cilliers-0
The entire code is like that.
backtrader_demo
Test areas
1. Data Feed from MySQL
from future import(absolute_import, division,
print_function, unicode_literals)
import datetime
import os.path
import sys
import backtrader as bt
import numpy as np
import mysql.connector
import MySQLCredentials as mc
import pandas
from pprint import pprint
Data to MySQL
connection = mysql.connector.connect(
host=mc.host,
port=mc.port,
user=mc.user,
password=mc.password,
database='stock_db')
cerebro = bt.Cerebro()
Datas are selected from TABLE in MySQL
temp_table = "goog"
CREATE db table "stock_temp"
sql = """SELECT * FROM """ + temp_table + """;"""
cursor.execute(sql)
stock_data = cursor.fetchall()
dataframe = pd.DataFrame(stock_data, columns=[
'date', 'open', 'high', 'low', 'close', 'volume'])
dataframe["date"] = pd.to_datetime(dataframe["date"])
class pandaDataFeed(bt.feeds.PandasData):
#lines =('line_name/newparameter')
params = (
('fromdate', dt.datetime(2005, 1, 1)),
('todate', dt.datetime.now()),
('dtformat', '%Y-%m-%d'),
('datetime', None),
('open', 'open'),
('high', 'high'),
('low', 'low'),
('close', 'close'),
('volume', 'volume')
)
data = pandaDataFeed(dataname=dataframe)
cerebro.adddata(data)
cerebro.run
cerebro.plot()