Esempio n. 1
0
        public async Task Init()
        {
            // Please sign in first, following services uses the client file
            var cache = new TDUnprotectedCache();

            client = new TDAmeritradeClient(cache);
            await client.PostRefreshToken();

            Assert.IsTrue(client.IsSignedIn);
        }
Esempio n. 2
0
        public async Task MarketHoursAsync_Weekday_AllMarkets()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.MarketHours(new MarketType[] { MarketType.Bond, MarketType.Equity, MarketType.Option, MarketType.Future, MarketType.Forex }, DateTime.UtcNow, default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNotNull(res.Response);
            Assert.IsNull(res.Error);
            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
            Assert.AreEqual(5, res?.Response?.Keys.Count());
        }
Esempio n. 3
0
        public async Task MarketHoursAsync_BadDate()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.MarketHours(new MarketType[] { MarketType.Bond }, DateTime.UtcNow.AddDays(-5), default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNull(res.Response);
            Assert.IsNotNull(res.Error);
            Assert.AreEqual(HttpStatusCode.BadRequest, res.StatusCode);
            Assert.AreEqual("Input date is not acceptable.", res?.Error.Message);
        }
Esempio n. 4
0
        public async Task FundamentalDataAsync_DoesNotExist()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.FundamentalDataAsync("fdafasdfasd", default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNull(res.Response);
            Assert.IsNotNull(res.Error);
            Assert.AreEqual(HttpStatusCode.NotFound, res.StatusCode);
            Assert.AreEqual("Not Found", res?.Error?.Error);
        }
Esempio n. 5
0
        public async Task SearchAsync_SymbolRegex()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.SearchAsync("a.*", SearchType.SymbolRegex, default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNotNull(res.Response);
            Assert.IsNull(res.Error);
            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
            Assert.Less(100, res?.Response?.Count);
        }
Esempio n. 6
0
        public async Task PriceHistoryAsync_BadSymbol()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.PriceHistoryAsync("DoesNotExist", default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNotNull(res.Response);
            Assert.IsNull(res.Error);
            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
            Assert.AreEqual("DoesNotExist", res?.Response?.Symbol);
            Assert.IsTrue(res.Response.Empty);
        }
Esempio n. 7
0
        public async Task PriceHistoryAsync_IBM_1Day_EveryMinute()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.PriceHistoryAsync("IBM", History.Days(HowManyDays.One, Minutes.One), false, default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNotNull(res.Response);
            Assert.IsNull(res.Error);
            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
            Assert.AreEqual("IBM", res?.Response?.Symbol);
            Assert.IsFalse(res?.Response?.Empty);
            Assert.GreaterOrEqual(res?.Response?.Candles?.Count, 389);
        }
Esempio n. 8
0
        public async Task PriceHistoryAsync_IBM()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.PriceHistoryAsync("IBM", default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNotNull(res.Response);
            Assert.IsNull(res.Error);
            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
            Assert.AreEqual("IBM", res?.Response?.Symbol);
            Assert.IsFalse(res?.Response?.Empty);
            Assert.Less(10, res?.Response?.Candles?.Count);
        }
Esempio n. 9
0
        public async Task FundamentalDataAsync_AA()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.FundamentalDataAsync("AA", default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNotNull(res.Response);
            Assert.IsNull(res.Error);
            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);

            Assert.AreEqual("AA", res?.Response?.Symbol);
            Assert.IsNotNull(res?.Response?.Fundamental);
        }
Esempio n. 10
0
        public async Task PriceHistoryAsync_AGFXF_20Years_Weekly()
        {
            var settings = InitSettings();

            using var client = new TDAmeritradeClient(settings, this.Logger);

            var res = await client.PriceHistoryAsync("AGFXF", History.Years(HowManyYears.Twenty, Yearly.ByWeek), false, default)
                      .ConfigureAwait(false);

            Assert.IsNotNull(res);
            Assert.IsNotNull(res.Response);
            Assert.IsNull(res.Error);
            Assert.AreEqual(HttpStatusCode.OK, res.StatusCode);
            Assert.AreEqual("AGFXF", res?.Response?.Symbol);
            Assert.IsFalse(res?.Response?.Empty);
            Assert.AreEqual(573, res?.Response?.Candles?.Count);
        }
Esempio n. 11
0
 public HomeController(ILogger <HomeController> logger, TDAmeritradeClient client)
 {
     _logger = logger;
     _client = client;
 }
 public Program()
 {
     cache  = new TDUnprotectedCache();
     client = new TDAmeritradeClient(cache);
 }
Esempio n. 13
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Starting Client");
            Console.WriteLine("...");

            //var serviceCollection = new ServiceCollection();
            //serviceCollection.AddDataProtection();
            //var services = serviceCollection.BuildServiceProvider();
            //var protection = services.GetService<IDataProtectionProvider>();
            //var cache = new TDProtectedCache(protection);
            //var client = new TDAmeritradeClient(cache);

            var cache  = new TDUnprotectedCache();
            var client = new TDAmeritradeClient(cache);

            Console.WriteLine("1 to sign in fresh, 2 to refresh signin, 3 streaming");
            var option = Console.ReadKey();

            switch (option.Key)
            {
            case ConsoleKey.D1:
                Console.WriteLine("Paste consumer key :");
                var key = Console.ReadLine();
                Console.WriteLine("Opening Browser. Please sign in.");
                client.RequestAccessToken(key);

                Console.WriteLine("Paste the code. This is in the browser url bar 'code={code}'.");
                var code = Console.ReadLine();
                await client.PostAccessToken(key, code);

                Console.WriteLine($"Authenticated {client.IsSignedIn}.");
                Console.ReadLine();
                break;

            case ConsoleKey.D2:
                await client.PostRefreshToken();

                Console.WriteLine($"Authenticated {client.IsSignedIn}.");
                Console.ReadLine();
                break;

            case ConsoleKey.D3:
                await client.PostRefreshToken();

                Console.WriteLine($"Authenticated {client.IsSignedIn}.");
                var socket = new TDAmeritradeStreamClient(client);
                socket.OnMessage += (m) =>
                {
                    Console.WriteLine(m);
                };
                await socket.Connect();

                await socket.Subscribe_Chart("MSFT");

                Console.ReadLine();
                break;

            default:
                return;
            }
        }