@@ -844,8 +844,7 @@ private OrderResponse HandleSubmitOrderRequest(SubmitOrderRequest request)
844
844
}
845
845
846
846
// check to see if we have enough money to place the order
847
- var validationResult = ValidateSufficientBuyingPowerForOrders ( order , request , orders , securities ) ;
848
- if ( validationResult != null )
847
+ if ( ! HasSufficientBuyingPowerForOrders ( order , request , out var validationResult , orders , securities ) )
849
848
{
850
849
return validationResult ;
851
850
}
@@ -945,8 +944,7 @@ private OrderResponse HandleUpdateOrderRequest(UpdateOrderRequest request)
945
944
{
946
945
var updatedOrder = order . Clone ( ) ;
947
946
updatedOrder . ApplyUpdateOrderRequest ( request ) ;
948
- var validationResult = ValidateSufficientBuyingPowerForOrders ( updatedOrder , request ) ;
949
- if ( validationResult != null )
947
+ if ( ! HasSufficientBuyingPowerForOrders ( updatedOrder , request , out var validationResult ) )
950
948
{
951
949
return validationResult ;
952
950
}
@@ -1055,8 +1053,9 @@ private OrderResponse HandleCancelOrderRequest(CancelOrderRequest request)
1055
1053
/// Returns an error response if validation fails or an exception occurs.
1056
1054
/// Returns null if validation passes.
1057
1055
/// </summary>
1058
- private OrderResponse ValidateSufficientBuyingPowerForOrders ( Order order , OrderRequest request , List < Order > orders = null , Dictionary < Order , Security > securities = null )
1056
+ private bool HasSufficientBuyingPowerForOrders ( Order order , OrderRequest request , out OrderResponse response , List < Order > orders = null , Dictionary < Order , Security > securities = null )
1059
1057
{
1058
+ response = null ;
1060
1059
HasSufficientBuyingPowerForOrderResult hasSufficientBuyingPowerResult ;
1061
1060
try
1062
1061
{
@@ -1066,35 +1065,34 @@ private OrderResponse ValidateSufficientBuyingPowerForOrders(Order order, OrderR
1066
1065
{
1067
1066
Log . Error ( err ) ;
1068
1067
_algorithm . Error ( $ "Order Error: id: { order . Id . ToStringInvariant ( ) } , Error executing margin models: { err . Message } ") ;
1069
- HandleOrderEvent ( new OrderEvent ( order ,
1070
- _algorithm . UtcTime ,
1071
- OrderFee . Zero ,
1072
- "Error executing margin models" ) ) ;
1073
- return OrderResponse . Error ( request , OrderResponseErrorCode . ProcessingError , "An error occurred while checking sufficient buying power for the orders." ) ;
1068
+ HandleOrderEvent ( new OrderEvent ( order , _algorithm . UtcTime , OrderFee . Zero , "Error executing margin models" ) ) ;
1069
+
1070
+ response = OrderResponse . Error ( request , OrderResponseErrorCode . ProcessingError , "An error occurred while checking sufficient buying power for the orders." ) ;
1071
+ return false ;
1074
1072
}
1075
1073
1076
1074
if ( ! hasSufficientBuyingPowerResult . IsSufficient )
1077
1075
{
1078
1076
var errorMessage = securities != null
1079
1077
? securities . GetErrorMessage ( hasSufficientBuyingPowerResult )
1080
1078
: $ "Brokerage failed to update order with id: { order . Id . ToStringInvariant ( ) } , Symbol: { order . Symbol . Value } , Insufficient buying power to complete order, Reason: { hasSufficientBuyingPowerResult . Reason } .";
1079
+
1081
1080
_algorithm . Error ( errorMessage ) ;
1081
+
1082
1082
if ( request is UpdateOrderRequest )
1083
1083
{
1084
- HandleOrderEvent ( new OrderEvent ( order ,
1085
- _algorithm . UtcTime ,
1086
- OrderFee . Zero ,
1087
- "Brokerage failed to update order" ) ) ;
1088
- return OrderResponse . Error ( request , OrderResponseErrorCode . BrokerageFailedToUpdateOrder , errorMessage ) ;
1084
+ HandleOrderEvent ( new OrderEvent ( order , _algorithm . UtcTime , OrderFee . Zero , errorMessage ) ) ;
1085
+ response = OrderResponse . Error ( request , OrderResponseErrorCode . BrokerageFailedToUpdateOrder , errorMessage ) ;
1089
1086
}
1090
1087
else
1091
1088
{
1092
1089
InvalidateOrders ( orders , errorMessage ) ;
1093
- return OrderResponse . Error ( request , OrderResponseErrorCode . InsufficientBuyingPower , errorMessage ) ;
1090
+ response = OrderResponse . Error ( request , OrderResponseErrorCode . InsufficientBuyingPower , errorMessage ) ;
1094
1091
}
1092
+ return false ;
1095
1093
}
1096
1094
1097
- return null ;
1095
+ return true ;
1098
1096
}
1099
1097
1100
1098
private void HandleOrderEvents ( List < OrderEvent > orderEvents )
0 commit comments