示例#1
0
        public static async void startBoardUpdate()
        {
            initialize();

            await Task.Run(async() =>
            {
                while (SystemFlg.getMarketDataFlg())
                {
                    if (FlyerAPI2.getApiAccessProhibition() == false)
                    {
                        var board = await FlyerAPI2.getBoardAsync("FX_BTC_JPY");

                        if (board.MidPrice != 0)
                        {
                            board.dt  = DateTime.Now;
                            var ask_p = board.Asks.Select(c => c.Price).ToArray();
                            var bid_p = board.Bids.Select(c => c.Price).ToArray();

                            var ask_min = ask_p.Min();
                            var bid_max = bid_p.Max();

                            board.spread = ask_min - bid_max;
                            setCurrentBoard(board);
                            MarketDataLog.addBoardData(board.dt, new double[] { bid_max, ask_min, board.spread });
                            Form1.Form1Instance.Invoke((Action)(() =>
                            {
                                Form1.Form1Instance.setLabel3(board.spread.ToString());
                            }));
                        }
                    }
                    //await Task.Delay(0);
                }
            });
        }
示例#2
0
        private static void OnReceiveBoard(BoardDiff data)
        {
            //if (BoardDataUpdate.getCurrentBoard().MidPrice  > 0)
            {
                var current_board = BoardDataUpdate.getCurrentBoard();
                current_board.dt = DateTime.Now;
                var ask_min = current_board.Asks.Select(x => x.Price).ToList().Min();
                var bid_max = current_board.Bids.Select(x => x.Price).ToList().Max();

                foreach (var v in data.Asks)
                {
                    if (v.Price < ask_min)
                    {
                        ask_min = v.Price;
                    }
                    break;
                }
                foreach (var v in data.Bids)
                {
                    if (v.Price > bid_max)
                    {
                        bid_max = v.Price;
                    }
                    break;
                }

                current_board.Asks[0].Price = ask_min;
                current_board.Bids[0].Price = bid_max;
                current_board.spread        = ask_min - bid_max;
                MarketDataLog.addBoardData(current_board.dt, new double[] { bid_max, ask_min, current_board.spread });
                BoardDataUpdate.setCurrentBoard(current_board);
                Form1.Form1Instance.setLabel3(current_board.spread.ToString());
            }

            /*
             * foreach (var v in data.Asks)
             *  line += v.Price + " x " + v.Size;
             * Form1.Form1Instance.addListBox(data.MidPrice+" : " + line);
             */
        }