Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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