Table of Contents

Замена заявок

Замена заявок при написании торговых алгоритмов является более продвинутым способом, чем Снятие заявок и последующая регистрация. Чтобы заменить заявку, необходимо вызывать метод Connector.ReRegisterOrder(StockSharp.BusinessEntities.Order oldOrder, StockSharp.BusinessEntities.Order newOrder ) и передать объект новой заявки.

В итоге при замене заявок всегда получается новый объект Order, который содержит информацию старой заявки + измененная часть. В дальнейшем, если требуется работа с измененной заявкой (например, отменить ее или опять изменить), то необходимо использовать именно этот новый объект Order.

В примере ниже показан способ "движения" заявки по лучшей цене:

// registeredOrder - это ранее зарегистрированная заявка.
var newOrder = registeredOrder.Clone();

// Получаем лучшие цены из Level1 данных.
// Примечание: свойства Security.BestBid / Security.BestAsk являются устаревшими (obsolete).
// Рекомендуется использовать подписку на Level1 и получать лучшие цены из событий Level1Received.
var bestBidPrice = _connector.GetSecurityValue(registeredOrder.Security.Id, Level1Fields.BestBidPrice);
var bestAskPrice = _connector.GetSecurityValue(registeredOrder.Security.Id, Level1Fields.BestAskPrice);

if (bestBidPrice != null && bestAskPrice != null)
{
	// изменяем цену на лучшую
	newOrder.Price = registeredOrder.Side == Sides.Buy ? (decimal)bestBidPrice : (decimal)bestAskPrice;
	// заменяем заявку на бирже
	_connector.ReRegisterOrder(registeredOrder, newOrder);
}

См. также

Снятие заявок