private void OST_OnReceivedAutoTradingOrderConclusion(object sender, OnReceivedATOrderEventArgs e) { // 오더 체결 ATOrder order = e.AtOrder; SetDataGrid_체결(order); }
private void OST_OnReceivedAutoTradingOrderBalance(object sender, OnReceivedATOrderEventArgs e) { // 오더 잔고 ATOrder order = e.AtOrder; SetDataGrid_잔고(order); }
private int updateDataGridRow(ATOrder order, DataGridView dg) { int result = 0; foreach (DataGridViewRow row in dg.Rows) { if (dg.Equals(dg매매진행현황) && Common.equalClauseInDataGridRow("잔고_종목코드", order.종목코드, row)) { if (order.보유수량 > 0) { row.Cells["잔고_보유수량"].Value = order.보유수량; row.Cells["잔고_주문가능수량"].Value = order.주문가능수량; row.Cells["잔고_매입단가"].Value = order.매입단가; row.Cells["잔고_총매입가"].Value = order.총매입가; row.Cells["잔고_손익률"].Value = order.손익률; } else { dg.Rows.Remove(row); } result++; } } return(result); }
private void OST_OnReceivedAutoTradingOrderAccept(object sender, OnReceivedATOrderEventArgs e) { // 오더 접수 ATOrder order = e.AtOrder; // order.주문구분 AddDataGrid_주문(order); AddDataGrid_미체결(order); }
public void AddDataGrid_미체결(ATOrder order) { int idx = dg미체결.Rows.Add(); dg미체결["미체결_주문번호", idx].Value = order.주문번호; dg미체결["미체결_종목코드", idx].Value = order.종목코드; dg미체결["미체결_종목명", idx].Value = order.종목명; dg미체결["미체결_주문수량", idx].Value = order.주문수량; dg미체결["미체결_미체결량", idx].Value = order.미체결수량; }
public void SetDataGrid_매매진행현황(ATOrder order) { int cnt = updateDataGridRow(order, dg매매진행현황); if (cnt == 0) { int rowIndex = dg매매진행현황.Rows.Add(); dg매매진행현황["매매진행_진행상황", rowIndex].Value = "매도감시"; dg매매진행현황["매매진행_종목코드", rowIndex].Value = order.종목코드; dg매매진행현황["매매진행_종목명", rowIndex].Value = order.종목명; dg매매진행현황["매매진행_매수가", rowIndex].Value = order.매수가; } }
public void updateMstForOrder(ATOrder order) { using (OracleConnection connection = new OracleConnection(conn_str)) { connection.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = connection; string q = $@"update MF_AT_MST SET ACCT='{order.계좌}', CC_PRC={order.주문가격}, CC_QTY={order.주문수량}, CC_STATUS=1, CC_DT=SYSDATE WHERE YMD={order.일자} AND ITEM_CD={order.종목코드} AND MM_SEQ={order.일련번호} "; cmd.CommandText = q; cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); }; }
public void AddDataGrid_주문(ATOrder order) { int rowIndex = dg주문.Rows.Add(); dg주문["주문_주문번호", rowIndex].Value = order.주문번호; dg주문["주문_계좌번호", rowIndex].Value = order.계좌번호; dg주문["주문_시간", rowIndex].Value = order.주문시간; dg주문["주문_종목코드", rowIndex].Value = order.종목코드; dg주문["주문_종목명", rowIndex].Value = order.종목명; dg주문["주문_주문량", rowIndex].Value = order.주문수량; dg주문["주문_주문가", rowIndex].Value = order.주문가격; dg주문["주문_매매구분", rowIndex].Value = order.주문구분; dg주문["주문_가격구분", rowIndex].Value = order.가격구분; }
public void SetDataGrid_체결(ATOrder order) { int cnt = updateDataGridRow(order, dg미체결); if (cnt == 0) { int rowIndex = dg체결.Rows.Add(); dg체결["체결_주문번호", rowIndex].Value = order.주문번호; dg체결["체결_체결시간", rowIndex].Value = order.체결시간; dg체결["체결_종목코드", rowIndex].Value = order.종목코드; dg체결["체결_종목명", rowIndex].Value = order.종목명; dg체결["체결_주문량", rowIndex].Value = order.주문수량; dg체결["체결_단위체결량", rowIndex].Value = order.단위체결량; dg체결["체결_누적체결량", rowIndex].Value = order.누적체결량; dg체결["체결_체결가", rowIndex].Value = order.체결가; dg체결["체결_매매구분", rowIndex].Value = order.매매구분; } }
public void SetDataGrid_잔고(ATOrder order) { int cnt = updateDataGridRow(order, dg잔고); if (cnt == 0) { int rowIndex = dg잔고.Rows.Add(); dg잔고["잔고_계좌번호", rowIndex].Value = order.계좌번호; dg잔고["잔고_종목코드", rowIndex].Value = order.종목코드; dg잔고["잔고_종목명", rowIndex].Value = order.종목명; dg잔고["잔고_보유수량", rowIndex].Value = order.보유수량; dg잔고["잔고_주문가능수량", rowIndex].Value = order.주문가능수량; dg잔고["잔고_매입단가", rowIndex].Value = order.매입단가; dg잔고["잔고_총매입가", rowIndex].Value = order.총매입가; dg잔고["잔고_손익률", rowIndex].Value = order.손익률; dg잔고["잔고_매매구분", rowIndex].Value = order.매매구분; } }
private void removeDataGridRow(GridType _gridType, ATOrder order) { DataGridView dg = null; if (_gridType == GridType.미체결) { dg = dg미체결; if (order.미체결수량 == 0) { foreach (DataGridViewRow row in dg.Rows) { if (row.Cells["미체결_주문번호"] != null && row.Cells["미체결_주문번호"].Value.ToString().Equals(order.주문번호)) { dg.Rows.Remove(row); } break; } } } }
public List <ATOrder> getMstForOrder(string ymd, string itemCode) { List <ATOrder> orderList = new List <ATOrder>(); using (OracleConnection connection = new OracleConnection(conn_str)) { connection.Open(); using (OracleCommand cmd = new OracleCommand()) { string q = $@" SELECT A.YMD, A.ITEM_CD, B.ITEM_NM, A.MM_SEQ, A.MM_TYPE, A.MM_PRC, A.MM_QTY, A.YMDHM FROM MF_AT_MST A , MF_AT_ITEM B WHERE A.YMD=B.YMD AND A.ITEM_CD=B.ITEM_CD AND A.YMD='{ymd}' AND A.ITEM_CD='{itemCode}' AND A.YMDHM > TO_CHAR(SYSDATE-3/24/60,'YYYYMMDDHH24MISS') "; cmd.Connection = connection; cmd.CommandText = q; using (OracleDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { ATOrder order = new ATOrder(); order.일자 = reader["YMD"].ToString(); order.종목코드 = reader["ITEM_CD"].ToString(); order.종목명 = reader["ITEM_NM"].ToString(); order.일련번호 = int.Parse(reader["MM_SEQ"].ToString()); order.매매구분 = reader["MM_TYPE"].ToString(); order.주문가격 = int.Parse(reader["MM_PRC"].ToString()); order.주문수량 = int.Parse(reader["MM_QTY"].ToString()); order.시간 = reader["YMDHM"].ToString(); orderList.Add(order); } } } } return(orderList); }
public OnReceivedATOrderEventArgs(ATOrder atOrder) { this.AtOrder = atOrder; this.Message = "자동매매 오더를 가져왔습니다."; }