private async Task OpenOrderByToken(TransactionToken token) { while (token.Volume.Gte(_symbol.MinTradeVolume)) { var openToken = TransactionToken.Min(_symbol.MaxTradeVolume, token); if (TryBuildOpenRequest(openToken, out var template)) { var result = await _bot.OpenOrderAsync(template.MakeRequest()); if (result.IsCompleted) { var resultingToken = new TransactionToken(result.ResultingOrder); var remainingToken = openToken - resultingToken; // if TTS opened partial order token -= openToken; if (remainingToken.Volume.Gte(_symbol.MinTradeVolume)) { _tokenQueue.Enqueue(remainingToken); } continue; } } _tokenQueue.Enqueue(token); break; } }