마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 2,162 명 오늘 방문자
  • 2,047 명 어제 방문자
  • 5,192 명 최대 방문자
  • 689,782 명 전체 방문자
  • 2,569 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. C#
목록으로

C# 주식분석 프로그램 개발일기

마스터욱 7 284 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)
        {
        }
    }
}
 
Colored by Color Scripter
cs
0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
7 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


번호 제목 이름 날짜 조회
  • 14
    Access DB 엑세스 문제 해결
    마스터욱
    조회수 170   17-02-14 14:05
    마스터욱
    17-02-14 14:05
    170
  • 13
    [4] C# 배포 프로그램에서 AccessDB를 사용하지 못하는 문제 [4]
    마스터욱
    조회수 311   17-02-13 17:00
    마스터욱
    17-02-13 17:00
    311
  • 12
    배포 프로그램 만들기, setup 프로그램 만들기
    마스터욱
    조회수 208   17-02-13 15:19
    마스터욱
    17-02-13 15:19
    208
  • 11
    [2] 주식패턴 프로그램 마무리 [2]
    마스터욱
    조회수 235   17-02-10 02:28
    마스터욱
    17-02-10 02:28
    235
  • 10
    Access DB 의 truncate, limit
    마스터욱
    조회수 188   17-02-08 16:29
    마스터욱
    17-02-08 16:29
    188
  • 9
    키움증권 OnReceiveRealData 에 관한 고객문의 등록함
    마스터욱
    조회수 193   17-02-07 15:28
    마스터욱
    17-02-07 15:28
    193
  • 8
    C# - 키움증권 API를 이용한 실시간 체결 분석 프로그램 개발일지 - 체결정보 분석
    마스터욱
    조회수 261   17-01-28 02:58
    마스터욱
    17-01-28 02:58
    261
  • 7
    C# - 키움증권 API를 이용한 실시간 체결 분석 프로그램 개발일지 - 실시간 체결정보 DB에 넣기
    마스터욱
    조회수 256   17-01-19 00:39
    마스터욱
    17-01-19 00:39
    256
  • 6
    C# - 키움증권 API를 이용한 실시간 체결 분석 프로그램 개발일지 - 실시간 체결정보 가져오기
    마스터욱
    조회수 264   17-01-12 00:23
    마스터욱
    17-01-12 00:23
    264
  • 5
    실시간 체결정보 불러오기 성공
    마스터욱
    조회수 203   17-01-11 14:48
    마스터욱
    17-01-11 14:48
    203
  • 4
    [1] 'Microsoft.ACE.OLEDB.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다. [1]
    마스터욱
    조회수 189   17-01-10 12:45
    마스터욱
    17-01-10 12:45
    189
  • 3
    ListView 박스 ListViewItem의 CheckBox Click 이벤트 주기
    마스터욱
    조회수 184   17-01-08 22:56
    마스터욱
    17-01-08 22:56
    184
  • 2
    C# 주식분석 프로그램 처녀작품
    마스터욱
    조회수 214   17-01-08 22:11
    마스터욱
    17-01-08 22:11
    214
  • 1
    [7] C# 주식분석 프로그램 개발일기 [7]
    마스터욱
    조회수 285   17-01-08 16:01
    마스터욱
    17-01-08 16:01
    285

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...