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); } }); }
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); */ }