hedgequantx 2.6.25 → 2.6.26
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.
package/package.json
CHANGED
|
@@ -103,6 +103,32 @@ const checkHoliday = () => {
|
|
|
103
103
|
return { isHoliday: false };
|
|
104
104
|
};
|
|
105
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Get current trading session based on ET time
|
|
108
|
+
* Sessions (in ET):
|
|
109
|
+
* - ASIA: 6:00 PM - 2:00 AM (18:00-02:00)
|
|
110
|
+
* - LONDON: 2:00 AM - 8:00 AM (02:00-08:00)
|
|
111
|
+
* - AMERICAN: 8:00 AM - 5:00 PM (08:00-17:00)
|
|
112
|
+
* - MAINTENANCE: 5:00 PM - 6:00 PM (17:00-18:00)
|
|
113
|
+
*/
|
|
114
|
+
const getTradingSession = () => {
|
|
115
|
+
const now = new Date();
|
|
116
|
+
// Convert to ET (UTC-5 or UTC-4 for DST)
|
|
117
|
+
const etOptions = { timeZone: 'America/New_York', hour: 'numeric', hour12: false };
|
|
118
|
+
const etHour = parseInt(new Intl.DateTimeFormat('en-US', etOptions).format(now));
|
|
119
|
+
|
|
120
|
+
// Determine session based on ET hour
|
|
121
|
+
if (etHour >= 18 || etHour < 2) {
|
|
122
|
+
return 'ASIA';
|
|
123
|
+
} else if (etHour >= 2 && etHour < 8) {
|
|
124
|
+
return 'LONDON';
|
|
125
|
+
} else if (etHour >= 8 && etHour < 17) {
|
|
126
|
+
return 'AMERICAN';
|
|
127
|
+
} else {
|
|
128
|
+
return 'MAINTENANCE';
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
106
132
|
/**
|
|
107
133
|
* Check if futures market is open based on CME hours and holidays
|
|
108
134
|
*/
|
|
@@ -113,29 +139,30 @@ const checkMarketHours = () => {
|
|
|
113
139
|
|
|
114
140
|
const holidayCheck = checkHoliday();
|
|
115
141
|
if (holidayCheck.isHoliday) {
|
|
116
|
-
return { isOpen: false, message: `Market closed - ${holidayCheck.holiday.name}
|
|
142
|
+
return { isOpen: false, message: `Market closed - ${holidayCheck.holiday.name}`, session: null };
|
|
117
143
|
}
|
|
118
144
|
if (holidayCheck.holiday && holidayCheck.holiday.earlyClose && utcHour >= 18) {
|
|
119
|
-
return { isOpen: false, message: `Market closed early - ${holidayCheck.holiday.name}
|
|
145
|
+
return { isOpen: false, message: `Market closed early - ${holidayCheck.holiday.name}`, session: null };
|
|
120
146
|
}
|
|
121
147
|
|
|
122
148
|
if (utcDay === 6) {
|
|
123
|
-
return { isOpen: false, message: 'Market closed - Weekend (Saturday)' };
|
|
149
|
+
return { isOpen: false, message: 'Market closed - Weekend (Saturday)', session: null };
|
|
124
150
|
}
|
|
125
151
|
|
|
126
152
|
if (utcDay === 0 && utcHour < 23) {
|
|
127
|
-
return { isOpen: false, message: 'Market closed - Opens Sunday 6:00 PM ET' };
|
|
153
|
+
return { isOpen: false, message: 'Market closed - Opens Sunday 6:00 PM ET', session: null };
|
|
128
154
|
}
|
|
129
155
|
|
|
130
156
|
if (utcDay === 5 && utcHour >= 22) {
|
|
131
|
-
return { isOpen: false, message: 'Market closed - Weekend' };
|
|
157
|
+
return { isOpen: false, message: 'Market closed - Weekend', session: null };
|
|
132
158
|
}
|
|
133
159
|
|
|
134
160
|
if (utcHour === 22 && utcDay !== 5) {
|
|
135
|
-
return { isOpen: false, message: 'Market closed - Daily maintenance (5:00-6:00 PM ET)' };
|
|
161
|
+
return { isOpen: false, message: 'Market closed - Daily maintenance (5:00-6:00 PM ET)', session: 'MAINTENANCE' };
|
|
136
162
|
}
|
|
137
163
|
|
|
138
|
-
|
|
164
|
+
const session = getTradingSession();
|
|
165
|
+
return { isOpen: true, message: 'Market is open', session };
|
|
139
166
|
};
|
|
140
167
|
|
|
141
168
|
module.exports = {
|