From 43b42402e189d00f81c9c32ab9f198e5cec27572 Mon Sep 17 00:00:00 2001 From: Romazes Date: Fri, 22 May 2026 18:45:05 +0300 Subject: [PATCH 1/2] feature: add bloomberg fix brokerage model - supports Equity, Option, Future - Market, Limit, StopMarket, StopLimit order types - margin-only account type --- .../Brokerages/BloombergFixBrokerageModel.cs | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 Common/Brokerages/BloombergFixBrokerageModel.cs diff --git a/Common/Brokerages/BloombergFixBrokerageModel.cs b/Common/Brokerages/BloombergFixBrokerageModel.cs new file mode 100644 index 000000000000..49e222561f99 --- /dev/null +++ b/Common/Brokerages/BloombergFixBrokerageModel.cs @@ -0,0 +1,97 @@ +/* + * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. + * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +using System; +using System.Collections.Generic; +using QuantConnect.Orders; +using QuantConnect.Securities; + +namespace QuantConnect.Brokerages +{ + /// + /// Provides Bloomberg FixNet HUB specific properties. + /// + public class BloombergFixBrokerageModel : DefaultBrokerageModel + { + private readonly HashSet _supportedSecurityTypes = new() + { + SecurityType.Equity, + SecurityType.Option, + SecurityType.Future, + }; + + private readonly HashSet _supportedOrderTypes = new() + { + OrderType.Market, + OrderType.Limit, + OrderType.StopMarket, + OrderType.StopLimit, + }; + + /// + /// Constructor for Bloomberg FIX brokerage model. + /// + /// Cash or Margin + public BloombergFixBrokerageModel(AccountType accountType = AccountType.Margin) : base(accountType) + { + if (accountType == AccountType.Cash) + { + throw new NotSupportedException($"Bloomberg FIX brokerage can only be used with a {AccountType.Margin} account type"); + } + } + + /// + /// Returns true if the brokerage could accept this order. + /// + /// The security of the order + /// The order to be processed + /// If this function returns false, a brokerage message detailing why the order may not be submitted + public override bool CanSubmitOrder(Security security, Order order, out BrokerageMessageEvent message) + { + if (!_supportedSecurityTypes.Contains(security.Type)) + { + message = new BrokerageMessageEvent(BrokerageMessageType.Warning, "NotSupported", + Messages.DefaultBrokerageModel.UnsupportedSecurityType(this, security)); + return false; + } + + if (!_supportedOrderTypes.Contains(order.Type)) + { + message = new BrokerageMessageEvent(BrokerageMessageType.Warning, "NotSupported", + Messages.DefaultBrokerageModel.UnsupportedOrderType(this, order, _supportedOrderTypes)); + return false; + } + + if (order.AbsoluteQuantity % 1 != 0) + { + message = new BrokerageMessageEvent(BrokerageMessageType.Warning, "NotSupported", + $"Order Quantity must be Integer, but provided {order.AbsoluteQuantity}."); + return false; + } + + return base.CanSubmitOrder(security, order, out message); + } + + /// + /// Bloomberg FixNet HUB supports cancel/replace (35=G) on order quantity, price, stop price, + /// order type and time in force. + /// + public override bool CanUpdateOrder(Security security, Order order, UpdateOrderRequest request, out BrokerageMessageEvent message) + { + message = null; + return true; + } + } +} From 999815d4f6642f06d4f69f33eae622de01d863dc Mon Sep 17 00:00:00 2001 From: Romazes Date: Fri, 22 May 2026 19:27:41 +0300 Subject: [PATCH 2/2] feat: support MOO in BloombergFix --- Common/Brokerages/BloombergFixBrokerageModel.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Common/Brokerages/BloombergFixBrokerageModel.cs b/Common/Brokerages/BloombergFixBrokerageModel.cs index 49e222561f99..6891b4702ae5 100644 --- a/Common/Brokerages/BloombergFixBrokerageModel.cs +++ b/Common/Brokerages/BloombergFixBrokerageModel.cs @@ -35,6 +35,7 @@ public class BloombergFixBrokerageModel : DefaultBrokerageModel private readonly HashSet _supportedOrderTypes = new() { OrderType.Market, + OrderType.MarketOnOpen, OrderType.Limit, OrderType.StopMarket, OrderType.StopLimit,