Skip to content

Commit d58195b

Browse files
authored
Feat: Skip Update Order.Tag in UpdateOrder() (#31)
* feat: handle update only tag in UpdateOrder. Bybit doesn't support tag * feat: send UpdateSubmitted event if user update only Tag * remove: extra code with finding oldTag * fix: validate tag on null, it can be empty in UpdateOrder
1 parent 57e26e4 commit d58195b

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

QuantConnect.BybitBrokerage/BybitBrokerage.Brokerage.cs

+29
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ public partial class BybitBrokerage
2929
{
3030
#region Brokerage
3131

32+
/// <summary>
33+
/// Indicates whether a warning about unsupported order tag updates has been logged.
34+
/// Prevents logging the warning multiple times.
35+
/// </summary>
36+
private bool _tagWarningLogged;
37+
3238
/// <summary>
3339
/// Gets all open orders on the account.
3440
/// NOTE: The order objects returned do not have QC order IDs.
@@ -168,6 +174,29 @@ public override bool PlaceOrder(Order order)
168174
/// <returns>True if the request was made for the order to be updated, false otherwise</returns>
169175
public override bool UpdateOrder(Order order)
170176
{
177+
var orderTicket = OrderProvider.GetOrderTicket(order.Id);
178+
var lastUpdate = orderTicket.UpdateRequests.Last();
179+
if (lastUpdate.LimitPrice == null
180+
&& lastUpdate.Quantity == null
181+
&& lastUpdate.StopPrice == null
182+
&& lastUpdate.TrailingAmount == null
183+
&& lastUpdate.TriggerPrice == null
184+
&& lastUpdate.Tag != null)
185+
{
186+
if (!_tagWarningLogged)
187+
{
188+
_tagWarningLogged = true;
189+
OnMessage(new BrokerageMessageEvent(BrokerageMessageType.Warning, "TagUpdateNotSupported",
190+
$"{nameof(BybitBrokerage)}.{nameof(UpdateOrder)}: Updating the order tag is not supported internally by this brokerage."));
191+
}
192+
193+
OnOrderEvent(new OrderEvent(order, DateTime.UtcNow, OrderFee.Zero, $"Bybit Order Event, Tag updated to '{lastUpdate.Tag}'")
194+
{
195+
Status = OrderStatus.UpdateSubmitted
196+
});
197+
return true;
198+
}
199+
171200
var category = GetBybitProductCategory(order.Symbol);
172201
if (category == BybitProductCategory.Spot)
173202
{

0 commit comments

Comments
 (0)