public JdDataServiceWrapper(string constr)
 {
     tradesService    = new TradesService(constr);
     goodInfoService  = new GoodInfoService(tradesService);
     recordService    = new DataSyncRecordService(tradesService);
     orderInfoService = new OrderInfoService(tradesService);
 }
        public void CalculateVolumeWeightedStockPriceTest2()
        {
            var tradeService = new TradesService();

            tradeService.Trades.Add(TestData.GetBuyTradeQty100Price50WithSymbolTEA());
            tradeService.Trades.Add(TestData.GetBuyTradeQty50Price10WithSymbolTEA());
            tradeService.Trades.Add(TestData.GetBuyTradeQty100Price50WithSymbolTEST());

            const double tradeOnePrice      = 50;
            const double tradeOneQty        = 100;
            const double tradeOneTotalValue = tradeOneQty * tradeOnePrice;

            const double tradeTwoPrice      = 10;
            const double tradeTwoQty        = 50;
            const double tradeTwoTotalValue = tradeTwoQty * tradeTwoPrice;

            const double totalValue = tradeOneTotalValue + tradeTwoTotalValue;
            const double totalQty   = tradeOneQty + tradeTwoQty;

            const double expected = totalValue / totalQty;

            var actual = tradeService.CalculateVolumeWeightedStockPrice("TEA");

            Assert.AreEqual(expected, actual);
        }
        public void FailGettingUser()
        {
            TradesService Trades = new TradesService();

            var result = Trades.GetReader(null);

            Assert.IsNull(result);
        }
        public void GettingDepartmentsTest()
        {
            TradesService Trades = new TradesService();

            var result = Trades.GetDepartments();

            Assert.IsNotNull(result);
        }
        public void GetAllTradesInLastFifteenMinutesTest()
        {
            var       tradeService      = new TradesService(TestData.GetListOfTrades());
            const int expected          = 1;
            var       tradesLastFifteen = tradeService.GetAllTradesWithinInterval("TEA");

            var actual = tradesLastFifteen.Count;

            Assert.AreEqual(expected, actual);
        }
Beispiel #6
0
        private async Task Alpaca_GetStatus()
        {
            if (AlpacaClient.useAlpaca == true)
            {
                try
                {
                    await alpacaClient.GetAccountData();
                }
                catch { }

                // jsruntime.warn("GetAccountData");
                try
                {
                    await alpacaClient.GetCurrentPosition();
                }
                catch { }


                try
                {
                    // jsruntime.warn("GetCurrentPosition");
                    await alpacaClient.GetOrders(clientId);

                    // jsruntime.warn("GetOrders");
                }
                catch { }

                try
                {
                    await alpacaClient.GetAccountActivity(DateTime.Now);
                }
                catch { }

                StateHasChanged();

                /// Trade signal from server
                if (AlpacaClient.isTradingOn == true && AlpacaClient.isTradingOnClient == false && AlpacaClient.tradesFromHub == false)
                {
                    //jsruntime.warn("Trade Start!");
                    var trades = await TradesService.getLastTrades();

                    //jsruntime.warn($"Trade Type '{trades[0].Type }'");
                    if (trades[0].Type != "")
                    {
                        counter2 += 1;
                        try
                        {
                            await Alpaca_Trade(trades[0], trades[1]);
                        }
                        catch
                        { }
                    }
                }
            }
        }
        public void CheckAddTrades()
        {
            var tradeService = new TradesService();
            var expected     = tradeService.Trades.Count + 1;

            tradeService.RecordTrade(TestData.GetTeaBuyStockSample(), 100, 50);

            var actual = tradeService.Trades.Count;

            Assert.AreEqual(expected, actual);
        }
        public void CalculateVolumeWeightedStockPriceZeroQuantityTest()
        {
            var tradeService = new TradesService();

            tradeService.Trades.Add(TestData.GetBuyTradeQty50Price10WithSymbolTEA());
            tradeService.Trades.Add(TestData.GetSellTradeQty50Price200WithSymbolTEA());
            const int expected = 0;
            var       actual   = tradeService.CalculateVolumeWeightedStockPrice("TEA");

            Assert.AreEqual(expected, actual);
        }
Beispiel #9
0
        public TradesServiceTest()
        {
            _configuration = new ConfigurationBuilder()
                             .AddJsonFile("appsettings.json")
                             .Build();

            _url = _configuration.GetSection("endpoints").GetSection("mercadobitcoin").Value;

            _httpRequestHandlerMock = new Mock <IHttpRequestHandler>();

            _tradesService = new TradesService(_httpRequestHandlerMock.Object, _configuration);
        }
Beispiel #10
0
        public void AddABook()
        {
            TradesService Trades = new TradesService();

            var result = Trades.AddBook(new Book
            {
                author          = "Test name",
                inStock         = true,
                pagesCount      = 0,
                publishingHouse = "Test house",
                publishYear     = 0,
                title           = "Test title"
            });

            Assert.IsNotNull(result);
        }
Beispiel #11
0
        public void FailAddingBook()
        {
            TradesService Trades = new TradesService();

            Assert.ThrowsException <ArgumentNullException>(() => Trades.AddBook(null));
        }
Beispiel #12
0
        /// <summary>
        /// This makes the UI responsive. Events picked up every half second
        /// </summary>
        private async Task TimerBookColumnsCharts_Elapsed(object sender, ElapsedEventArgs e)
        {
            // instead of relading every second, should check
            try
            {
                await Alpaca_GetStatus();

                // jsruntime.warn("");
                var latestTrades = await TradesService.getTrades(toTime);

                //jsruntime.error ( $"{toTime} = { latestTrades.Count}:{currentTrades.Count -1 }" );

                if (latestTrades.Count > currentTrades.Count - 1)           /// We have a new trade
                {
                    var lastTrade = latestTrades.First();                   /// One trade but comes in an array
                                                                            ///
                    counter += 1;
                    ///
                    var nextTrade = new Trade()                             ///
                    {
                        Trades    = latestTrades.Count + 1,
                        Symbol    = lastTrade.Symbol,
                        TimeStart = lastTrade.TimeEnd,
                        Type      = lastTrade.Type == "C" ? "P" : "C",      /// Switch type
                        PrevMark  = lastTrade.MarkPrice,
                        DateTime  = DateTime.Now
                    };
                    latestTrades.Insert(0, nextTrade);

                    nextTradeId = (int)nextTrade.Trades;  /// Show next trade
                    StateHasChanged();

                    if (AlpacaClient.useAlpaca == true && AlpacaClient.isTradingOnClient == true && nextTradeId > AlpacaClient.lastAlpacaTradeId)
                    {
                        counter2 += 1;

                        await Alpaca_Trade(lastTrade, nextTrade);

                        //await Alpaca_GetStatus();

                        AlpacaClient.lastAlpacaTradeId = (int)nextTrade.Trades;

                        await Alpaca_GetStatus();
                    }


                    currentTrades.Clear();
                    currentTrades.AddRange(latestTrades);

                    await radzenGrid.Reload();

                    //await InvokeAsync(() => StateHasChanged());
                    //jsruntime.alert(currentTrades.Count.ToString());
                }
            }
            catch
            {
            }

            //jsruntime.warn("");
            //jsruntime.error( $"TimerBookColumnsCharts_Elapsed");


            //Data.AlpacaClient.hubStatus = $"./images/blue.png";
            //if (TDAChart.isActive == true)
            {
                //JsConsole.JsConsole.Time(jsruntime, "TimerBookColumnsCharts_Elapsed");

                //timerBookColumnsCharts.Stop();



                //var frames = TDABook.ratiosDepth;
                //ratioFrames = new List<RatioFrame>();
                //ratioFrames.AddRange(allRatioFrames.TakeLast(frames));

                //timerBookColumnsCharts.Start();


                //var ratioFrame = await bookColumnsService.getIncrementalRatioFrames(SurfaceChartConfigurator.longSeconds, TDABook.ratiosDepth, jsruntime);
                //var addFrame = ratioFrames.Count == 0 || (ratioFrames.Count > 0 && ratioFrames.Last().dateTime != ratioFrame.dateTime);
                //if (addFrame)
                //{
                //    ratioFrames.Add(ratioFrame);

                //    dictTopicCounts[dictTopicCounts.Keys.Last()] += 1;
                //    //ratioFrames = new List<RatioFrame>();
                //    //ratioFrames.AddRange(allRatioFrames);
                //}
                //timerBookColumnsCharts.Start();
                //JsConsole.JsConsole.TimeEnd(jsruntime, "TimerBookColumnsCharts_Elapsed");
                //         TDAChart.isActive = false;
            }
            await Task.Yield();
        }
Beispiel #13
0
        protected override async Task OnInitializedAsync()
        {
            foreach (var name in CONSTANTS.valuesName)
            {
                dictTopicCounts.Add(name, 0);
            }



            //bookColData = await bookColumnsService.getBookColumnsData(ChartConfigure.seconds);
            AlpacaClient.jsruntime = jsruntime;

            AlpacaClient.OnAlpacaChanged   += NavMenu_OnAlpacaChanged;
            AlpacaClient.OnStatusesChanged += AlpacaClient_OnStatusesChanged;

            /// TODO: Get symbol and date derived
            ///
            var todaysDate = Math.Floor(DateTime.Now.ToOADate());

            LinesChart.toDateTime = DateTime.Now.ToString(LinesChart.dateFormat); //  "2020-12-31-0940-00";
#if dev
            string serverUrl = "https://localhost:44363/";
#else
            string serverUrl = "http://tda2tapeStream.io/";
#endif
            var userEnteredDateTime = await jsruntime.prompt($"Server Url: {serverUrl}\nTo Date Time:", LinesChart.toDateTime);

            LinesChart.toDateTime = userEnteredDateTime;
            toDate = DateTime.ParseExact(userEnteredDateTime, LinesChart.dateFormat, null).AddSeconds(30);
            LinesChart.fromDateTime = toDate.AddMinutes(-10).ToString(LinesChart.dateFormat);

            isSimulated = toDate.Date < DateTime.Now.Date ||
                          (toDate.Date == DateTime.Now.Date && DateTime.Now.TimeOfDay.Subtract(toDate.TimeOfDay).TotalHours > 1)
            ;     // Date before today is a simumlation or today more than an hour ago

            TradesService.jsruntime = jsruntime;

            currentTrades = await TradesService.getTrades(toDate.ToString("yyyy-MM-dd"), 0);

            // just get trades up to start time
            currentTrades = currentTrades.Where(trade => trade.DateTime <= toDate).ToList();

            if (currentTrades.Count > 1)
            {
                var lastTrade = currentTrades.First();

                var nextTrade = new Trade()
                {
                    Trades    = currentTrades.Count + 1,
                    Symbol    = lastTrade.Symbol,
                    TimeStart = lastTrade.TimeEnd,
                    Type      = lastTrade.Type == "C" ? "P" : "C",
                    PrevMark  = lastTrade.MarkPrice
                };
                currentTrades.Insert(0, nextTrade);

                AlpacaClient.lastAlpacaTradeId = (int)nextTrade.Trades;
            }

            // get the last trade number to check in timer loop
            //jsruntime.alert(currentTrades.Count.ToString());

            EventConsole.localStorage = localStorage;
            console.Init();

            await HubConnection_Initialize();

            jsruntime.title("Hello");

            InitializeTimers();

            dictTopicCounts["BookPiesData"] = TDABook.seconds;


            //if (mode == "simulate")
            //{ }
            //else
            var frames = await bookColumnsService.getAllRatioFrames(symbol, todaysDate, jsruntime);

            allRatioFrames = frames.Where(frame => frame[0].markPrice > 0).ToList();


            //await jsruntime.InvokeAsync<string>("BlazorSetTitle", new object[] { ]o Dali!" });
        }
        public void CheckNullTradeTest()
        {
            var tradeService = new TradesService();

            tradeService.RecordTrade(null, 0, 0.0);
        }