@@ -410,6 +410,9 @@ def place_order(
410410 "customTag" : custom_tag ,
411411 "linkedOrderId" : linked_order_id ,
412412 }
413+
414+ # 🔍 DEBUG: Log order parameters to diagnose placement issues
415+ self .logger .debug (f"🔍 Order Placement Request: { payload } " )
413416
414417 try :
415418 response = requests .post (
@@ -421,9 +424,14 @@ def place_order(
421424 self .project_x ._handle_response_errors (response )
422425
423426 data = response .json ()
427+
428+ # 🔍 DEBUG: Log the actual API response to diagnose issues
429+ self .logger .debug (f"🔍 Order API Response: { data } " )
430+
424431 if not data .get ("success" , False ):
425- error_msg = data .get ("errorMessage" , "Unknown error" )
432+ error_msg = data .get ("errorMessage" ) or "Unknown error - no error message provided"
426433 self .logger .error (f"Order placement failed: { error_msg } " )
434+ self .logger .error (f"🔍 Full response data: { data } " )
427435 raise ProjectXOrderError (f"Order placement failed: { error_msg } " )
428436
429437 result = OrderPlaceResponse (** data )
@@ -949,7 +957,20 @@ def search_open_orders(
949957 return []
950958
951959 orders = data .get ("orders" , [])
952- return [Order (** order ) for order in orders ]
960+ # Filter to only include fields that Order model expects
961+ expected_fields = {
962+ 'id' , 'accountId' , 'contractId' , 'creationTimestamp' , 'updateTimestamp' ,
963+ 'status' , 'type' , 'side' , 'size' , 'fillVolume' , 'limitPrice' , 'stopPrice'
964+ }
965+ filtered_orders = []
966+ for order in orders :
967+ if isinstance (order , dict ):
968+ # Only keep fields that Order model expects
969+ filtered_order = {k : v for k , v in order .items () if k in expected_fields }
970+ filtered_orders .append (Order (** filtered_order ))
971+ else :
972+ filtered_orders .append (Order (** order ))
973+ return filtered_orders
953974
954975 except requests .RequestException as e :
955976 self .logger .error (f"❌ Order search request failed: { e } " )
0 commit comments