-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathbt_main.py
35 lines (27 loc) · 992 Bytes
/
bt_main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import datetime
import backtrader as bt
from strategies import *
#Instantiate Cerebro engine
cerebro = bt.Cerebro()
#Set data parameters and add to Cerebro
data = bt.feeds.YahooFinanceCSVData(
dataname='TSLA.csv',
fromdate=datetime.datetime(2016, 1, 1),
todate=datetime.datetime(2017, 12, 25))
#settings for out-of-sample data
#fromdate=datetime.datetime(2018, 1, 1),
#todate=datetime.datetime(2019, 12, 25))
cerebro.adddata(data)
#Add strategy to Cerebro
cerebro.addstrategy(AverageTrueRange)
#Default position size
cerebro.addsizer(bt.sizers.SizerFix, stake=3)
if __name__ == '__main__':
#Run Cerebro Engine
start_portfolio_value = cerebro.broker.getvalue()
cerebro.run()
end_portfolio_value = cerebro.broker.getvalue()
pnl = end_portfolio_value - start_portfolio_value
print('Starting Portfolio Value: %.2f' % start_portfolio_value)
print('Final Portfolio Value: %.2f' % end_portfolio_value)
print('PnL: %.2f' % pnl)