示例#1
0
        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;
            }
        }