diff --git a/CEDA/Market/market.py b/CEDA/Market/market.py index 3cd32e4..1bd11a2 100644 --- a/CEDA/Market/market.py +++ b/CEDA/Market/market.py @@ -49,11 +49,16 @@ def dukascopy( ] return df -def FX(instrument = "eurusd", startdate="01/01/2020", enddate = "01/01/2021", long=False): - """ - https://www.marketwatch.com/investing/ - """ - if long == False: + +def FX(instrument = "eurusd", startdate = "2019-01-01", enddate = "2021-01-01"): + startdate = datetime.strptime(startdate, "%Y-%m-%d").strftime("%m/%d/%y") + enddate = datetime.strptime(enddate, "%Y-%m-%d").strftime("%m/%d/%y") + df = pd.DataFrame() + + def _FX(instrument = "eurusd", startdate = "01/01/2020", enddate = "01/01/2021"): + """ + https://www.marketwatch.com/investing/ + """ tmp_url = url["moneywatch"] + "currency/{}/downloaddatapartial".format(instrument) ua = UserAgent(verify_ssl=False) request_header = {"User-Agent": ua.random} @@ -74,40 +79,26 @@ def FX(instrument = "eurusd", startdate="01/01/2020", enddate = "01/01/2021", lo df["Date"] = Date return df - else: - tmp_url = url["moneywatch"] + "currency/{}/downloaddatapartial".format(instrument) - ua = UserAgent(verify_ssl=False) - request_header = {"User-Agent": ua.random} - df = pd.DataFrame() - for i in range(int(startdate[6:10]), int(enddate[6:10])): + + for i in range(int(startdate[6:10]), int(enddate[6:10])): + if i == int(startdate[6:10]): + tmp_startdate = startdate + else: tmp_startdate = "01/01/" + str(i) + " 00:00:00" - if i+1 == int(enddate[6:10]): - tmp_enddate = enddate[0:6] + str((i+1)) + " 00:00:00" - else: - tmp_enddate = "01/01" + str((i+1)) + " 00:00:00" - request_params = urlencode({ - "startdate": r"{}".format(tmp_startdate), - "enddate": r"{}".format(tmp_enddate), - "daterange": "d30", - "frequency": "p1d", - "csvdownload": "true", - "downloadpartial": "false", - "newdates": "false"}, quote_via= quote) - r = requests.get(tmp_url, params=request_params.replace("%2F", "/").replace("%20", " ").replace("%3A", ":"), headers=request_header) - data_text = r.content - tmp_df = pd.read_csv(io.StringIO(data_text.decode('utf-8'))) - Date = [] - for i in range(0, len(tmp_df)): - Date.append(datetime.strptime(tmp_df["Date"][i], "%m/%d/%Y")) - - tmp_df["Date"] = Date - if i == int(startdate[6:10]): - df = tmp_df - else: - df = pd.concat([tmp_df, df], axis=0) + if (i+1) == int(enddate[6:10]): + tmp_enddate = enddate + else: + tmp_enddate = "01/01/" + str(i+1) + " 00:00:00" - df.reset_index(drop=True, inplace = True) - return df + tmp_df = _FX(instrument=instrument, startdate = tmp_startdate, enddate = tmp_enddate) + if i == int(startdate[6:10]): + df = tmp_df + else: + df = pd.concat([tmp_df, df], axis=0) + + df = df.reset_index(drop = True) + return df +