Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions broker/angel/api/order_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,13 @@ def get_api_response(endpoint, auth, method="GET", payload=''):

# Handle empty response
if not response.text:
return {}
return {'status': 'error', 'message': 'Empty response from API'}

try:
return json.loads(response.text)
except json.JSONDecodeError:
logger.error(f"Failed to parse JSON response from {endpoint}: {response.text}")
return {}
return {'status': 'error', 'message': f'Invalid JSON response from API: {response.text}'}

def get_order_book(auth):
return get_api_response("/rest/secure/angelbroking/order/v1/getOrderBook",auth)
Expand Down
40 changes: 4 additions & 36 deletions broker/angel/streaming/angel_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -413,10 +413,10 @@ def _normalize_market_data(self, message, mode) -> Dict[str, Any]:
'ltp': message.get('last_traded_price', 0) / 100, # Divide by 100 for correct price
'ltt': message.get('exchange_timestamp', 0),
'volume': message.get('volume_trade_for_the_day', 0),
'open': message.get('open_price', 0) / 100,
'high': message.get('high_price', 0) / 100,
'low': message.get('low_price', 0) / 100,
'close': message.get('close_price', 0) / 100,
'open': message.get('open_price_of_the_day', 0) / 100,
'high': message.get('high_price_of_the_day', 0) / 100,
'low': message.get('low_price_of_the_day', 0) / 100,
'close': message.get('closed_price', 0) / 100,
'last_quantity': message.get('last_traded_quantity', 0),
'oi': message.get('open_interest', 0),
'upper_circuit': message.get('upper_circuit_limit', 0) / 100,
Expand Down Expand Up @@ -516,38 +516,6 @@ def _extract_depth_data(self, message, is_buy: bool) -> List[Dict[str, Any]]:
'orders': level.get('no of orders', 0)
})

# For MCX, the data might be in a different format, check for best_five_buy/sell_market_data
elif 'best_five_buy_market_data' in message and is_buy:
depth_data = message.get('best_five_buy_market_data', [])
self.logger.debug(f"Found {side_label} depth data using best_five_buy_market_data: {len(depth_data)} levels")

for level in depth_data:
if isinstance(level, dict):
price = level.get('price', 0)
if price > 0:
price = price / 100

depth.append({
'price': price,
'quantity': level.get('quantity', 0),
'orders': level.get('no of orders', 0)
})

elif 'best_five_sell_market_data' in message and not is_buy:
depth_data = message.get('best_five_sell_market_data', [])
self.logger.debug(f"Found {side_label} depth data using best_five_sell_market_data: {len(depth_data)} levels")

for level in depth_data:
if isinstance(level, dict):
price = level.get('price', 0)
if price > 0:
price = price / 100

depth.append({
'price': price,
'quantity': level.get('quantity', 0),
'orders': level.get('no of orders', 0)
})

# If no depth data found, return empty levels as fallback
if not depth:
Expand Down
Loading