private void UpdateBalances() { OpenApi.UpdateBalances(GetAccount(), delegate(_DKHOpenAPIEvents_OnReceiveTrDataEvent e) { string 예수금 = OpenApi.GetTrNum(e, "예수금"); string D2추정예수금 = OpenApi.GetTrNum(e, "D+2추정예수금"); string 가잔고평가액 = OpenApi.GetTrNum(e, "유가잔고평가액"); string 예탁자산평가액 = OpenApi.GetTrNum(e, "예탁자산평가액"); string 총매입금액 = OpenApi.GetTrNum(e, "총매입금액"); var row = dataGridView_Balance.Rows[0]; row.SetValues(예수금, D2추정예수금, 가잔고평가액, 예탁자산평가액, 총매입금액); int count = OpenApi.GetRepeatCnt(e); dataGridView_Stocks.RowCount = count; for (int i = 0; i < count; ++i) { string 종목명 = OpenApi.GetTrData(e, "종목명", i); string 보유수량 = OpenApi.GetTrNum(e, "보유수량", i); string 평균단가 = OpenApi.GetTrNum(e, "평균단가", i); string 현재가 = OpenApi.GetTrNum(e, "현재가", i); string 평가금액 = OpenApi.GetTrNum(e, "평가금액", i); string 손익금액 = OpenApi.GetTrNum(e, "손익금액", i); row = dataGridView_Stocks.Rows[i]; row.SetValues(종목명, 보유수량, 평균단가, 현재가, 평가금액, 손익금액); } }); }
private void OnBalance() { _wait = true; OpenApi.UpdateBalances(_account, delegate(AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveTrDataEvent e) { int count = OpenApi.GetRepeatCnt(e); for (int i = 0; i < count; ++i) { string 종목명 = OpenApi.GetTrData(e, "종목명", i); string 보유수량 = OpenApi.GetTrData(e, "보유수량", i); foreach (var stock in _stockInfos) { if (stock.Stock.ToString() == 종목명) { int quantity; if (int.TryParse(보유수량, out quantity)) { stock.Quantity = quantity; } else { // something wrong; Error = "보유수량 오류: " + 보유수량; return; } break; } } } _wait = false; MoveState(EPhase.Price); }); }