C# 주식분석 프로그램 개발일기
마스터욱
7
61
0
0
2017-01-08 16:01:28
첫번째 시도의 패배를 경험삼아 다시 개발하게 된 주식분석 프로그램이다.
개발의 주된 핵심내용은
실시간으로 체결정보를 가져와서 반복패턴을 분석하여 결과를 도출해내는 시스템을 개발하는 것이다.
실시간 정보 데이터는 Access 로컬 데이터베이스에 쌓을 계획이다.
개발의 키 포인트는 역시 키움증권에서 제공해주는 API의 영역과, 분석 패턴 알고리즘을 얼마나 효율적으로 개발하느냐일 것이다.
닷넷은 php와는 다르게 불편하다 T^T
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | using System; using System.Data; using System.Data.OleDb; using System.Linq; using System.Windows.Forms; namespace Auto_Stock { public partial class MainForm : Form { private string LoginName; private string LoginId; private string accFileName = "stock_db.accdb"; private string dbPasswd = "admin"; public MainForm() { InitializeComponent(); OleDbConnection conn = new OleDbConnection(); OleDbCommand connCmd = new OleDbCommand(); Console.WriteLine("mainform start"); try { Console.WriteLine("db access start"); conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + this.accFileName + ";Mode=ReadWrite;Jet OLEDB:Database Password=" + this.dbPasswd; conn.Open(); connCmd.Connection = conn; connCmd.CommandText = "INSERT INTO favorite(usr_id) VALUES(@usr_id)"; connCmd.Parameters.Add(new OleDbParameter("@usr_id", "test")); connCmd.ExecuteNonQuery(); // 입력 connCmd.CommandText = "SELECT * FROM favorite"; OleDbDataReader oleData = connCmd.ExecuteReader(CommandBehavior.CloseConnection); while (oleData.Read()) { Console.WriteLine(oleData["userId"].ToString()); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { conn.Close(); } } //로그인 버튼 클릭 private void ButtonLogin_Click(object sender, EventArgs e) { if(LoginName != null) { MessageBox.Show("이미 로그인 하셨습니다."); return; } long Result; Result = axKHOpenAPI1.CommConnect(); if (Result != 0) { Console.WriteLine("로그인창 열기 실패!"); } else { Console.WriteLine("로그인창 열기 성공!"); } } //로그인 후 개인정보 가져오기 private void axKHOpenAPI1_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e) { Console.WriteLine("개인정보 가져오기 성공!"); string UserName = axKHOpenAPI1.GetLoginInfo("USER_NAME"); string UserId = axKHOpenAPI1.GetLoginInfo("USER_ID"); ButtonLogin.Text = UserName + "(" + axKHOpenAPI1.GetLoginInfo("USER_ID") + ")"; LoginName = UserName; LoginId = UserId; } //주식종목리스트에서 주식 row를 클릭하면 실행 private void listBoxStock_SelectedIndexChanged(object sender, EventArgs e) { } //종목리스트 불러오기 bool IsListCall = false; private void ButtonListCall_Click(object sender, EventArgs e) { if (LoginName == null) { MessageBox.Show("로그인이 필요합니다."); } else { if(IsListCall == true) { MessageBox.Show("이미 호출된 상태입니다."); return; } IsListCall = true; ListViewStock.Items.Clear(); ListViewStock.CheckBoxes = true; //ListViewStock.OwnerDraw = true; //GetCodeListByMarket 메소드는 메소드의 인자로 시장 구분 코드를 문자열로 넘겨주면 메소드의 리턴 값으로 해당 시장에 속해 있는 종목들의 종목 코드 목록을 리턴 //sMarket – 0:장내, 3:ELW, 4:뮤추얼펀드, 5:신주인수권, 6:리츠, 8:ETF, 9:하이일드펀드, 10:코스닥, 30:제3시장 Console.WriteLine("종목 불러오기 시작"); string[] marketList = { "0", "10" }; int InCnt = 0; int OutCnt = 0; int i = 0; foreach (string MNumber in marketList) { string result = axKHOpenAPI1.GetCodeListByMarket(MNumber); string[] stockList = result.Split(';'); if (MNumber == "0") { InCnt = stockList.Count(); } else { OutCnt = stockList.Count(); } foreach (string code in stockList) { if (code != "") { string StockName = axKHOpenAPI1.GetMasterCodeName(code); ListViewItem item = new ListViewItem("", 0); item.Checked = false; item.SubItems.Add(i.ToString()); item.SubItems.Add(StockName); item.SubItems.Add(code); ListViewStock.Items.Add(item); i++; } } } } } private void ListViewStock_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) { } private void ListViewStock_DrawItem(object sender, DrawListViewItemEventArgs e) { } private void ListViewStock_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) { } } } | cs |