2021-06-09 02:29:35 +00:00
|
|
|
import re
|
|
|
|
import io
|
|
|
|
import requests
|
|
|
|
import demjson
|
|
|
|
import pandas as pd
|
|
|
|
from bs4 import BeautifulSoup
|
|
|
|
from datetime import datetime
|
|
|
|
from urllib.parse import quote, urlencode
|
|
|
|
from fake_useragent import UserAgent
|
|
|
|
|
|
|
|
url = {
|
2021-12-31 19:03:50 +00:00
|
|
|
"dukascopy": "http://data.deluxelau.com/forex/api/v1.0/getdata?"
|
2021-06-09 02:29:35 +00:00
|
|
|
}
|
|
|
|
|
2021-12-31 19:03:50 +00:00
|
|
|
#?instrument=usdcnh&startdate=2014-01-01&enddate=2014-12-31&timeframe=d1&pricetype=ask&utc=0&volume=false&flat=false
|
|
|
|
|
2021-06-09 02:29:35 +00:00
|
|
|
def dukascopy(
|
|
|
|
instrument: str,
|
|
|
|
startdate: str,
|
|
|
|
enddate: str,
|
|
|
|
timeframe: str,
|
|
|
|
pricetype: str,
|
2021-12-31 19:03:50 +00:00
|
|
|
utc: int,
|
2021-06-09 02:29:35 +00:00
|
|
|
volume: bool,
|
|
|
|
flat: bool):
|
|
|
|
tmp_url = url["dukascopy"]
|
|
|
|
ua = UserAgent(verify_ssl=False)
|
|
|
|
request_header = {"User-Agent": ua.random}
|
|
|
|
request_params = {
|
|
|
|
"instrument": "{}".format(instrument),
|
|
|
|
"startdate": "{}".format(startdate),
|
|
|
|
"enddate": "{}".format(enddate),
|
|
|
|
"timeframe": "{}".format(timeframe),
|
2021-12-31 19:03:50 +00:00
|
|
|
"utc": "{}".format(utc),
|
2021-06-09 02:29:35 +00:00
|
|
|
"pricetype": "{}".format(pricetype),
|
2021-12-31 19:03:50 +00:00
|
|
|
"volume": "{}".format(str(volume).lower()),
|
|
|
|
"flat": "{}".format(str(flat).lower())
|
2021-06-09 02:29:35 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
r = requests.get(tmp_url, params=request_params, headers=request_header)
|
|
|
|
data_text = r.text
|
2021-12-31 19:03:50 +00:00
|
|
|
output_file = demjson.decode(data_text)
|
|
|
|
return pd.json_normalize(output_file)
|
|
|
|
|
|
|
|
# example:
|
|
|
|
"""
|
|
|
|
df = dukascopy(instrument = "btcusd",
|
|
|
|
startdate = "2020-01-01",
|
|
|
|
enddate = "2021-01-01",
|
|
|
|
timeframe = "d1",
|
|
|
|
pricetype = "bid",
|
|
|
|
utc = 0,
|
|
|
|
volume = True,
|
|
|
|
flat = True)
|
|
|
|
"""
|