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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hedgequantx",
3
- "version": "2.6.25",
3
+ "version": "2.6.26",
4
4
  "description": "HedgeQuantX - Prop Futures Trading CLI",
5
5
  "main": "src/app.js",
6
6
  "bin": {
@@ -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
- return { isOpen: true, message: 'Market is open' };
164
+ const session = getTradingSession();
165
+ return { isOpen: true, message: 'Market is open', session };
139
166
  };
140
167
 
141
168
  module.exports = {