1
1
import os
2
+ import sys
2
3
import pytz
3
4
import pandas as pd
4
- from datetime import datetime
5
+ from pandas .tseries .offsets import DateOffset
6
+ from datetime import date , datetime
5
7
from collections import defaultdict
6
8
7
9
from pytradelib .store import CSVStore
@@ -40,16 +42,21 @@ def initialize_store(self):
40
42
self ._store .set_dfs (self ._provider .download (symbols ))
41
43
42
44
def update_store (self ):
43
- # early return if data is already up-to-date
44
- last_trade_date = self ._store .get_end_date (self ._store .symbols [0 ])
45
- today = pd .Timestamp (datetime .now ().strftime ('%Y-%m-%d' ), tz = pytz .UTC )
46
- if last_trade_date == today :
47
- return
45
+ last_trading_day = pd .Timestamp (date .today (), tz = pytz .UTC )
46
+ while last_trading_day .weekday () > 4 :
47
+ last_trading_day = last_trading_day - DateOffset (days = 1 )
48
+
49
+ symbols = {}
50
+ for symbol in self ._store .symbols :
51
+ latest_dt = self ._store .get_end_date (symbol )
52
+ if latest_dt != last_trading_day :
53
+ symbols [symbol ] = {'start' : latest_dt , 'end' : last_trading_day }
54
+
55
+ if not symbols :
56
+ return []
48
57
49
- symbols = dict ([(symbol , {'start' : self ._store .get_end_date (symbol ),
50
- 'end' : datetime .now ()})
51
- for symbol in self ._store .symbols ])
52
58
self ._store .set_dfs (self ._provider .download (symbols ))
59
+ return symbols .keys ()
53
60
54
61
def analyze (self ):
55
62
results = self ._store .analyze ()
@@ -60,6 +67,6 @@ def analyze(self):
60
67
61
68
62
69
if __name__ == '__main__' :
63
- data_manager = DataManager (CSVStore (), QuandlDailyWikiProvider (batch_size = 30 ))
64
- data_manager .update_store ()
70
+ data_manager = DataManager (CSVStore (), QuandlDailyWikiProvider ())
71
+ # data_manager.update_store()
65
72
data_manager .analyze ()
0 commit comments