import sys sys.path.append("C:/Users/j291414/my algorithms") import backtrader as bt from datetime import datetime from collections import OrderedDict import pandas as pd from backtrader.feeds import PandasData import technical_analysis.technical_analysis as ta import sqlite3 import matplotlib.pyplot as plt from base import start_backtest import strategies as st import analyzers as ay conn = sqlite3.connect( "C:/Users/j291414/my algorithms/quant_trading/cn_stock.db") code = '601988' sql = "select Adj_Open as Open, Adj_Close as Close, Adj_High as High, Adj_Low as Low, Date \ from cn_stocks_daily where code = '{}'".format(code) df = pd.read_sql_query(sql, conn) df['date'] = pd.to_datetime(df['Date'], format="%Y-%m-%dT%H:%M:%S") df.index = df['date'] df = df[df.index > '2016-01-01'] data = bt.feeds.PandasData(dataname=df) start_backtest([ data, ], st.TrixSignalStrategy) conn.close()
Created on Wed Nov 22 10:38:15 2017 @author: junbai plot custom-created indicators """ import sys sys.path.append("../../dev") import pandas as pd from base import start_backtest import strategies as st import indicators as ind df = pd.read_csv("../data/AAPL.csv") df.index = pd.to_datetime(df['Date'], format="%d/%m/%Y") class NullStrategy(st.BaseStrategy): params = (('trixperiod', 15), ) def __init__(self): super(NullStrategy, self).__init__() ind.MyTrixSignalInherited(self.data, period=self.p.trixperiod) if __name__ == '__main__': start_backtest([ df, ], NullStrategy, analysis=False)
import sys sys.path.append("C:/Users/j291414/my algorithms") import backtrader as bt from datetime import datetime from collections import OrderedDict import pandas as pd from backtrader.feeds import PandasData import technical_analysis.technical_analysis as ta import sqlite3 import matplotlib.pyplot as plt from base import start_backtest import strategies as st import analyzers as ay conn = sqlite3.connect( "C:/Users/j291414/my algorithms/quant_trading/cn_stock.db") code = '601988' sql = "select Adj_Open as Open, Adj_Close as Close, Adj_High as High, Adj_Low as Low, Date \ from cn_stocks_daily where code = '{}'".format(code) df = pd.read_sql_query(sql, conn) df['date'] = pd.to_datetime(df['Date'], format="%Y-%m-%dT%H:%M:%S") df.index = df['date'] df = df[df.index > '2016-01-01'] start_backtest([ df, ], st.TestStrategy) conn.close()
('datetime', None), ('open', -1), ('high', -1), ('low', -1), ('close', -1), ('volume', -1), ('openinterest', -1), ('spread', -1), ) datafields = [ 'datetime', 'open', 'high', 'low', 'close', 'volume', 'openinterest',\ 'spread', ] # get EU and CN index data tianjin = nd.get_data('tj_hrc', 'spot_daily', 'tj', frm='2016-01-01') shanghai = nd.get_data('sh_hrc', 'spot_daily', 'sh', frm='2016-01-01') merged = nd.merge_data([tianjin, shanghai]) merged['spread'] = merged.tj - merged.sh merged.index = merged.date tj = pd.DataFrame({'close':merged.tj, 'spread':merged.spread}) sh = pd.DataFrame({'close':merged.sh, 'spread':merged['spread']}) data0 = myPandas(dataname=tj) data1 = myPandas(dataname=sh) if __name__ == '__main__': start_backtest([data0, data1], strategy=st.MultiDataTestStrategy, analysis=True)
# -*- coding: utf-8 -*- """ Created on Wed Nov 22 15:59:45 2017 @author: junbai Test Pair Trading """ import sys sys.path.append("C:/Users/j291414/my algorithms") import pandas as pd from base import start_backtest import strategies as st import backtrader as bt from data_handling.new_data import get_data, merge_data from quant_trading.backtrader.dev import base plt = get_data('plt_io62', 'spot_daily') plt.index = plt['date'] tsi = get_data('tsi_io62', 'spot_daily') tsi.index = tsi['date'] #merged = merge_data([plt,tsi]) start_backtest([plt, tsi], st.MultiDataTestStrategy, analysis=False)
# -*- coding: utf-8 -*- """ Created on Mon Dec 11 10:20:00 2017 @author: junbai Three days drop strategy. Work towards to multiple assets """ import sys sys.path.append("C:/Users/j291414/my algorithms/quant_trading/backtrader/dev") sys.path.append("C:/Users/j291414/my algorithms/quant_trading/scripts") import pandas as pd import numpy as np import backtrader as bt from dbaccess import get_stock_data, get_stock_codes from base import start_backtest import strategies as st stock = get_stock_data('601988', frm='2017-01-01') datafeed = bt.feeds.PandasData(dataname=stock) start_backtest([datafeed,], strategy=st.TestStrategy, commission=0.004)
# -*- coding: utf-8 -*- """ Created on Thu Dec 07 11:42:13 2017 @author: junbai RSI signal on Chinese stocks """ import sys sys.path.append("C:/Users/j291414/my algorithms/quant_trading/backtrader/dev") sys.path.append("C:/Users/j291414/my algorithms/quant_trading/scripts") import pandas as pd import numpy as np import backtrader as bt from dbaccess import get_stock_data, get_stock_codes from base import start_backtest import strategies as st stock = get_stock_data('601988', frm='2016-05-01') stock.index = stock['Date'] datafeed = bt.feeds.PandasData(dataname=stock) start_backtest([datafeed], params={'low': 35.0}, commission=0.004, strategy=st.RSIStrategy)