hawk-sdk 0.0.11__tar.gz → 0.0.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of hawk-sdk might be problematic. Click here for more details.
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/PKG-INFO +1 -1
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/equities/main.py +14 -2
- {hawk_sdk-0.0.11/hawk_sdk/api/futures → hawk_sdk-0.0.12/hawk_sdk/api/equities}/repository.py +42 -40
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/equities/service.py +12 -2
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/futures/main.py +0 -12
- {hawk_sdk-0.0.11/hawk_sdk/api/equities → hawk_sdk-0.0.12/hawk_sdk/api/futures}/repository.py +25 -26
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/futures/service.py +0 -10
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk.egg-info/PKG-INFO +1 -1
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/setup.py +1 -1
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/README.md +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/__init__.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/__init__.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/equities/__init__.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/futures/__init__.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/system/__init__.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/system/main.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/system/repository.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/api/system/service.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/core/__init__.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/core/common/__init__.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/core/common/base_enum.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/core/common/constants.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/core/common/data_object.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk/core/common/utils.py +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk.egg-info/SOURCES.txt +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk.egg-info/dependency_links.txt +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk.egg-info/requires.txt +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/hawk_sdk.egg-info/top_level.txt +0 -0
- {hawk_sdk-0.0.11 → hawk_sdk-0.0.12}/setup.cfg +0 -0
|
@@ -17,7 +17,7 @@ class Equities:
|
|
|
17
17
|
self.repository = EquitiesRepository(environment=environment)
|
|
18
18
|
self.service = EquitiesService(self.repository)
|
|
19
19
|
|
|
20
|
-
def
|
|
20
|
+
def get_adjusted_ohlcv(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> DataObject:
|
|
21
21
|
"""Fetch open, high, low, close data for the given date range and hawk_ids.
|
|
22
22
|
|
|
23
23
|
:param start_date: The start date for the data query (YYYY-MM-DD).
|
|
@@ -28,5 +28,17 @@ class Equities:
|
|
|
28
28
|
"""
|
|
29
29
|
return DataObject(
|
|
30
30
|
name="adjusted_equities_ohlcv",
|
|
31
|
-
data=self.service.
|
|
31
|
+
data=self.service.get_adjusted_ohlcv(start_date, end_date, interval, hawk_ids)
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
def get_adjusted_ohlcv_snapshot(self, timestamp: str, hawk_ids: List[int]) -> DataObject:
|
|
35
|
+
"""Fetch snapshot data for the given date and hawk_ids.
|
|
36
|
+
|
|
37
|
+
:param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
|
|
38
|
+
:param hawk_ids: A list of specific hawk_ids to filter by.
|
|
39
|
+
:return: A hawk DataObject containing the data.
|
|
40
|
+
"""
|
|
41
|
+
return DataObject(
|
|
42
|
+
name="equities_adjusted_ohlcv_snapshot",
|
|
43
|
+
data=self.service.get_adjusted_ohlcv_snapshot(timestamp, hawk_ids)
|
|
32
44
|
)
|
{hawk_sdk-0.0.11/hawk_sdk/api/futures → hawk_sdk-0.0.12/hawk_sdk/api/equities}/repository.py
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
@description: Repository layer for fetching
|
|
2
|
+
@description: Repository layer for fetching Equities data from BigQuery.
|
|
3
3
|
@author: Rithwik Babu
|
|
4
4
|
"""
|
|
5
5
|
import logging
|
|
@@ -10,8 +10,8 @@ from google.cloud import bigquery
|
|
|
10
10
|
from hawk_sdk.core.common.utils import get_bigquery_client
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class
|
|
14
|
-
"""Repository for accessing
|
|
13
|
+
class EquitiesRepository:
|
|
14
|
+
"""Repository for accessing Equities raw data."""
|
|
15
15
|
|
|
16
16
|
def __init__(self, environment: str) -> None:
|
|
17
17
|
"""Initializes the repository with a BigQuery client.
|
|
@@ -21,19 +21,25 @@ class FuturesRepository:
|
|
|
21
21
|
self.bq_client = get_bigquery_client()
|
|
22
22
|
self.environment = environment
|
|
23
23
|
|
|
24
|
-
def
|
|
25
|
-
|
|
24
|
+
def fetch_adjusted_ohlcv(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> Iterator[
|
|
25
|
+
dict]:
|
|
26
|
+
"""Fetches raw adjusted OHLCV data from BigQuery for the given date range and hawk_ids using query parameters."""
|
|
27
|
+
open_field = f"adjusted_open_{interval}"
|
|
28
|
+
high_field = f"adjusted_high_{interval}"
|
|
29
|
+
low_field = f"adjusted_low_{interval}"
|
|
30
|
+
close_field = f"adjusted_close_{interval}"
|
|
31
|
+
volume_field = f"volume_{interval}"
|
|
32
|
+
|
|
26
33
|
query = f"""
|
|
27
34
|
WITH records_data AS (
|
|
28
35
|
SELECT
|
|
29
36
|
r.record_timestamp AS date,
|
|
30
37
|
hi.value AS ticker,
|
|
31
|
-
MAX(CASE WHEN f.field_name = @open_field THEN r.double_value END) AS
|
|
32
|
-
MAX(CASE WHEN f.field_name = @high_field THEN r.double_value END) AS
|
|
33
|
-
MAX(CASE WHEN f.field_name = @low_field THEN r.double_value END) AS
|
|
34
|
-
MAX(CASE WHEN f.field_name = @close_field THEN r.double_value END) AS
|
|
35
|
-
MAX(CASE WHEN f.field_name = @volume_field THEN r.int_value END) AS
|
|
36
|
-
MAX(CASE WHEN f.field_name = @open_interest_field THEN r.int_value END) AS open_interest
|
|
38
|
+
MAX(CASE WHEN f.field_name = @open_field THEN r.double_value END) AS {open_field},
|
|
39
|
+
MAX(CASE WHEN f.field_name = @high_field THEN r.double_value END) AS {high_field},
|
|
40
|
+
MAX(CASE WHEN f.field_name = @low_field THEN r.double_value END) AS {low_field},
|
|
41
|
+
MAX(CASE WHEN f.field_name = @close_field THEN r.double_value END) AS {close_field},
|
|
42
|
+
MAX(CASE WHEN f.field_name = @volume_field THEN r.int_value END) AS {volume_field}
|
|
37
43
|
FROM
|
|
38
44
|
`wsb-hc-qasap-ae2e.{self.environment}.records` AS r
|
|
39
45
|
JOIN
|
|
@@ -44,7 +50,7 @@ class FuturesRepository:
|
|
|
44
50
|
ON r.hawk_id = hi.hawk_id
|
|
45
51
|
WHERE
|
|
46
52
|
r.hawk_id IN UNNEST(@hawk_ids)
|
|
47
|
-
AND f.field_name IN (@open_field, @high_field, @low_field, @close_field, @volume_field
|
|
53
|
+
AND f.field_name IN (@open_field, @high_field, @low_field, @close_field, @volume_field)
|
|
48
54
|
AND r.record_timestamp BETWEEN @start_date AND @end_date
|
|
49
55
|
GROUP BY
|
|
50
56
|
date, ticker
|
|
@@ -52,12 +58,11 @@ class FuturesRepository:
|
|
|
52
58
|
SELECT DISTINCT
|
|
53
59
|
date,
|
|
54
60
|
ticker,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
open_interest
|
|
61
|
+
{open_field},
|
|
62
|
+
{high_field},
|
|
63
|
+
{low_field},
|
|
64
|
+
{close_field},
|
|
65
|
+
{volume_field}
|
|
61
66
|
FROM
|
|
62
67
|
records_data
|
|
63
68
|
ORDER BY
|
|
@@ -68,12 +73,11 @@ class FuturesRepository:
|
|
|
68
73
|
bigquery.ArrayQueryParameter("hawk_ids", "INT64", hawk_ids),
|
|
69
74
|
bigquery.ScalarQueryParameter("start_date", "STRING", start_date),
|
|
70
75
|
bigquery.ScalarQueryParameter("end_date", "STRING", end_date),
|
|
71
|
-
bigquery.ScalarQueryParameter("open_field", "STRING",
|
|
72
|
-
bigquery.ScalarQueryParameter("high_field", "STRING",
|
|
73
|
-
bigquery.ScalarQueryParameter("low_field", "STRING",
|
|
74
|
-
bigquery.ScalarQueryParameter("close_field", "STRING",
|
|
75
|
-
bigquery.ScalarQueryParameter("volume_field", "STRING",
|
|
76
|
-
bigquery.ScalarQueryParameter("open_interest_field", "STRING", f"open_interest_{interval}"),
|
|
76
|
+
bigquery.ScalarQueryParameter("open_field", "STRING", open_field),
|
|
77
|
+
bigquery.ScalarQueryParameter("high_field", "STRING", high_field),
|
|
78
|
+
bigquery.ScalarQueryParameter("low_field", "STRING", low_field),
|
|
79
|
+
bigquery.ScalarQueryParameter("close_field", "STRING", close_field),
|
|
80
|
+
bigquery.ScalarQueryParameter("volume_field", "STRING", volume_field)
|
|
77
81
|
]
|
|
78
82
|
|
|
79
83
|
job_config = bigquery.QueryJobConfig(query_parameters=query_params)
|
|
@@ -82,22 +86,21 @@ class FuturesRepository:
|
|
|
82
86
|
query_job = self.bq_client.query(query, job_config=job_config)
|
|
83
87
|
return query_job.result()
|
|
84
88
|
except Exception as e:
|
|
85
|
-
logging.error(f"Failed to fetch
|
|
89
|
+
logging.error(f"Failed to fetch OHLC data: {e}")
|
|
86
90
|
raise
|
|
87
91
|
|
|
88
|
-
def
|
|
92
|
+
def fetch_adjusted_ohlcv_snapshot(self, timestamp: str, hawk_ids: List[int]) -> Iterator[dict]:
|
|
89
93
|
"""Fetches the most recent snapshot data from BigQuery for the given time and hawk_ids."""
|
|
90
94
|
query = f"""
|
|
91
95
|
WITH records_data AS (
|
|
92
96
|
SELECT
|
|
93
97
|
r.record_timestamp AS date,
|
|
94
98
|
hi.value AS ticker,
|
|
95
|
-
MAX(CASE WHEN f.field_name = '
|
|
96
|
-
MAX(CASE WHEN f.field_name = '
|
|
97
|
-
MAX(CASE WHEN f.field_name = '
|
|
98
|
-
MAX(CASE WHEN f.field_name = '
|
|
99
|
-
MAX(CASE WHEN f.field_name = '
|
|
100
|
-
MAX(CASE WHEN f.field_name = 'ask_snapshot' THEN r.double_value END) AS ask_snapshot
|
|
99
|
+
MAX(CASE WHEN f.field_name = 'adjusted_open_snapshot' THEN r.double_value END) AS adjusted_open_snapshot,
|
|
100
|
+
MAX(CASE WHEN f.field_name = 'adjusted_high_snapshot' THEN r.double_value END) AS adjusted_high_snapshot,
|
|
101
|
+
MAX(CASE WHEN f.field_name = 'adjusted_low_snapshot' THEN r.double_value END) AS adjusted_low_snapshot,
|
|
102
|
+
MAX(CASE WHEN f.field_name = 'adjusted_close_snapshot' THEN r.double_value END) AS adjusted_close_snapshot,
|
|
103
|
+
MAX(CASE WHEN f.field_name = 'volume_snapshot' THEN r.int_value END) AS volume_snapshot,
|
|
101
104
|
FROM
|
|
102
105
|
`wsb-hc-qasap-ae2e.{self.environment}.records` AS r
|
|
103
106
|
JOIN
|
|
@@ -108,7 +111,7 @@ class FuturesRepository:
|
|
|
108
111
|
ON r.hawk_id = hi.hawk_id
|
|
109
112
|
WHERE
|
|
110
113
|
r.hawk_id IN UNNEST(@hawk_ids)
|
|
111
|
-
AND f.field_name IN ('
|
|
114
|
+
AND f.field_name IN ('adjusted_open_snapshot', 'adjusted_high_snapshot', 'adjusted_low_snapshot', 'adjusted_close_snapshot', 'volume_snapshot')
|
|
112
115
|
AND r.record_timestamp <= @timestamp
|
|
113
116
|
GROUP BY
|
|
114
117
|
date, ticker
|
|
@@ -116,12 +119,11 @@ class FuturesRepository:
|
|
|
116
119
|
SELECT DISTINCT
|
|
117
120
|
date,
|
|
118
121
|
ticker,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
ask_snapshot
|
|
122
|
+
adjusted_open_snapshot,
|
|
123
|
+
adjusted_high_snapshot,
|
|
124
|
+
adjusted_low_snapshot,
|
|
125
|
+
adjusted_close_snapshot,
|
|
126
|
+
volume_snapshot,
|
|
125
127
|
FROM
|
|
126
128
|
records_data
|
|
127
129
|
ORDER BY
|
|
@@ -130,7 +132,7 @@ class FuturesRepository:
|
|
|
130
132
|
|
|
131
133
|
query_params = [
|
|
132
134
|
bigquery.ArrayQueryParameter("hawk_ids", "INT64", hawk_ids),
|
|
133
|
-
bigquery.ScalarQueryParameter("timestamp", "
|
|
135
|
+
bigquery.ScalarQueryParameter("timestamp", "TIMESTAMP", timestamp)
|
|
134
136
|
]
|
|
135
137
|
|
|
136
138
|
job_config = bigquery.QueryJobConfig(query_parameters=query_params)
|
|
@@ -19,7 +19,7 @@ class EquitiesService:
|
|
|
19
19
|
"""
|
|
20
20
|
self.repository = repository
|
|
21
21
|
|
|
22
|
-
def
|
|
22
|
+
def get_adjusted_ohlcv(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> pd.DataFrame:
|
|
23
23
|
"""Equities and normalizes data into a pandas DataFrame.
|
|
24
24
|
|
|
25
25
|
:param start_date: The start date for the data query (YYYY-MM-DD).
|
|
@@ -28,7 +28,17 @@ class EquitiesService:
|
|
|
28
28
|
:param hawk_ids: A list of specific hawk_ids to filter by.
|
|
29
29
|
:return: A pandas DataFrame containing the normalized data.
|
|
30
30
|
"""
|
|
31
|
-
raw_data = self.repository.
|
|
31
|
+
raw_data = self.repository.fetch_adjusted_ohlcv(start_date, end_date, interval, hawk_ids)
|
|
32
|
+
return self._normalize_data(raw_data)
|
|
33
|
+
|
|
34
|
+
def get_adjusted_ohlcv_snapshot(self, timestamp: str, hawk_ids: List[int]) -> pd.DataFrame:
|
|
35
|
+
"""Fetches and normalizes snapshot data for the given date and hawk_ids.
|
|
36
|
+
|
|
37
|
+
:param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
|
|
38
|
+
:param hawk_ids: A list of specific hawk_ids to filter by.
|
|
39
|
+
:return: A pandas DataFrame containing the normalized data.
|
|
40
|
+
"""
|
|
41
|
+
raw_data = self.repository.fetch_adjusted_ohlcv_snapshot(timestamp, hawk_ids)
|
|
32
42
|
return self._normalize_data(raw_data)
|
|
33
43
|
|
|
34
44
|
@staticmethod
|
|
@@ -30,15 +30,3 @@ class Futures:
|
|
|
30
30
|
name="futures_ohlcvo",
|
|
31
31
|
data=self.service.get_ohlcvo(start_date, end_date, interval, hawk_ids)
|
|
32
32
|
)
|
|
33
|
-
|
|
34
|
-
def get_snapshot(self, timestamp: str, hawk_ids: List[int]) -> DataObject:
|
|
35
|
-
"""Fetch snapshot data for the specified timestamp and hawk_ids.
|
|
36
|
-
|
|
37
|
-
:param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
|
|
38
|
-
:param hawk_ids: A list of specific hawk_ids to filter by.
|
|
39
|
-
:return: A hawk DataObject containing the snapshot data.
|
|
40
|
-
"""
|
|
41
|
-
return DataObject(
|
|
42
|
-
name="futures_snapshot",
|
|
43
|
-
data=self.service.get_snapshot(timestamp, hawk_ids)
|
|
44
|
-
)
|
{hawk_sdk-0.0.11/hawk_sdk/api/equities → hawk_sdk-0.0.12/hawk_sdk/api/futures}/repository.py
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
@description: Repository layer for fetching
|
|
2
|
+
@description: Repository layer for fetching Futures data from BigQuery.
|
|
3
3
|
@author: Rithwik Babu
|
|
4
4
|
"""
|
|
5
5
|
import logging
|
|
@@ -10,8 +10,8 @@ from google.cloud import bigquery
|
|
|
10
10
|
from hawk_sdk.core.common.utils import get_bigquery_client
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class
|
|
14
|
-
"""Repository for accessing
|
|
13
|
+
class FuturesRepository:
|
|
14
|
+
"""Repository for accessing Futures raw data."""
|
|
15
15
|
|
|
16
16
|
def __init__(self, environment: str) -> None:
|
|
17
17
|
"""Initializes the repository with a BigQuery client.
|
|
@@ -21,22 +21,19 @@ class EquitiesRepository:
|
|
|
21
21
|
self.bq_client = get_bigquery_client()
|
|
22
22
|
self.environment = environment
|
|
23
23
|
|
|
24
|
-
def
|
|
25
|
-
"""Fetches raw
|
|
26
|
-
open_field = f"adjusted_open_{interval}"
|
|
27
|
-
high_field = f"adjusted_high_{interval}"
|
|
28
|
-
low_field = f"adjusted_low_{interval}"
|
|
29
|
-
close_field = f"adjusted_close_{interval}"
|
|
30
|
-
|
|
24
|
+
def fetch_ohlcvo(self, start_date: str, end_date: str, interval: str, hawk_ids: List[int]) -> Iterator[dict]:
|
|
25
|
+
"""Fetches raw OHLCVO data from BigQuery for the given date range and hawk_ids using query parameters."""
|
|
31
26
|
query = f"""
|
|
32
27
|
WITH records_data AS (
|
|
33
28
|
SELECT
|
|
34
29
|
r.record_timestamp AS date,
|
|
35
30
|
hi.value AS ticker,
|
|
36
|
-
MAX(CASE WHEN f.field_name = @open_field THEN r.double_value END) AS
|
|
37
|
-
MAX(CASE WHEN f.field_name = @high_field THEN r.double_value END) AS
|
|
38
|
-
MAX(CASE WHEN f.field_name = @low_field THEN r.double_value END) AS
|
|
39
|
-
MAX(CASE WHEN f.field_name = @close_field THEN r.double_value END) AS
|
|
31
|
+
MAX(CASE WHEN f.field_name = @open_field THEN r.double_value END) AS open,
|
|
32
|
+
MAX(CASE WHEN f.field_name = @high_field THEN r.double_value END) AS high,
|
|
33
|
+
MAX(CASE WHEN f.field_name = @low_field THEN r.double_value END) AS low,
|
|
34
|
+
MAX(CASE WHEN f.field_name = @close_field THEN r.double_value END) AS close,
|
|
35
|
+
MAX(CASE WHEN f.field_name = @volume_field THEN r.int_value END) AS volume,
|
|
36
|
+
MAX(CASE WHEN f.field_name = @open_interest_field THEN r.int_value END) AS open_interest
|
|
40
37
|
FROM
|
|
41
38
|
`wsb-hc-qasap-ae2e.{self.environment}.records` AS r
|
|
42
39
|
JOIN
|
|
@@ -47,7 +44,7 @@ class EquitiesRepository:
|
|
|
47
44
|
ON r.hawk_id = hi.hawk_id
|
|
48
45
|
WHERE
|
|
49
46
|
r.hawk_id IN UNNEST(@hawk_ids)
|
|
50
|
-
AND f.field_name IN (@open_field, @high_field, @low_field, @close_field)
|
|
47
|
+
AND f.field_name IN (@open_field, @high_field, @low_field, @close_field, @volume_field, @open_interest_field)
|
|
51
48
|
AND r.record_timestamp BETWEEN @start_date AND @end_date
|
|
52
49
|
GROUP BY
|
|
53
50
|
date, ticker
|
|
@@ -55,26 +52,28 @@ class EquitiesRepository:
|
|
|
55
52
|
SELECT DISTINCT
|
|
56
53
|
date,
|
|
57
54
|
ticker,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
open,
|
|
56
|
+
high,
|
|
57
|
+
low,
|
|
58
|
+
close,
|
|
59
|
+
volume,
|
|
60
|
+
open_interest
|
|
62
61
|
FROM
|
|
63
62
|
records_data
|
|
64
63
|
ORDER BY
|
|
65
64
|
date;
|
|
66
65
|
"""
|
|
67
66
|
|
|
68
|
-
|
|
69
|
-
|
|
70
67
|
query_params = [
|
|
71
68
|
bigquery.ArrayQueryParameter("hawk_ids", "INT64", hawk_ids),
|
|
72
69
|
bigquery.ScalarQueryParameter("start_date", "STRING", start_date),
|
|
73
70
|
bigquery.ScalarQueryParameter("end_date", "STRING", end_date),
|
|
74
|
-
bigquery.ScalarQueryParameter("open_field", "STRING",
|
|
75
|
-
bigquery.ScalarQueryParameter("high_field", "STRING",
|
|
76
|
-
bigquery.ScalarQueryParameter("low_field", "STRING",
|
|
77
|
-
bigquery.ScalarQueryParameter("close_field", "STRING",
|
|
71
|
+
bigquery.ScalarQueryParameter("open_field", "STRING", f"open_{interval}"),
|
|
72
|
+
bigquery.ScalarQueryParameter("high_field", "STRING", f"high_{interval}"),
|
|
73
|
+
bigquery.ScalarQueryParameter("low_field", "STRING", f"low_{interval}"),
|
|
74
|
+
bigquery.ScalarQueryParameter("close_field", "STRING", f"close_{interval}"),
|
|
75
|
+
bigquery.ScalarQueryParameter("volume_field", "STRING", f"volume_{interval}"),
|
|
76
|
+
bigquery.ScalarQueryParameter("open_interest_field", "STRING", f"open_interest_{interval}"),
|
|
78
77
|
]
|
|
79
78
|
|
|
80
79
|
job_config = bigquery.QueryJobConfig(query_parameters=query_params)
|
|
@@ -83,5 +82,5 @@ class EquitiesRepository:
|
|
|
83
82
|
query_job = self.bq_client.query(query, job_config=job_config)
|
|
84
83
|
return query_job.result()
|
|
85
84
|
except Exception as e:
|
|
86
|
-
logging.error(f"Failed to fetch
|
|
85
|
+
logging.error(f"Failed to fetch OHLCVO data: {e}")
|
|
87
86
|
raise
|
|
@@ -31,16 +31,6 @@ class FuturesService:
|
|
|
31
31
|
raw_data = self.repository.fetch_ohlcvo(start_date, end_date, interval, hawk_ids)
|
|
32
32
|
return self._normalize_data(raw_data)
|
|
33
33
|
|
|
34
|
-
def get_snapshot(self, timestamp: str, hawk_ids: List[int]) -> pd.DataFrame:
|
|
35
|
-
"""Fetches snapshot data and normalizes it into a pandas DataFrame.
|
|
36
|
-
|
|
37
|
-
:param timestamp: The timestamp for the data query (YYYY-MM-DD HH:MM:SS).
|
|
38
|
-
:param hawk_ids: A list of specific hawk_ids to filter by.
|
|
39
|
-
:return: A pandas DataFrame containing the normalized snapshot data.
|
|
40
|
-
"""
|
|
41
|
-
raw_data = self.repository.fetch_snapshot(timestamp, hawk_ids)
|
|
42
|
-
return self._normalize_data(raw_data)
|
|
43
|
-
|
|
44
34
|
@staticmethod
|
|
45
35
|
def _normalize_data(data: Iterator[dict]) -> pd.DataFrame:
|
|
46
36
|
"""Converts raw data into a normalized pandas DataFrame.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|