2018년 1월 26일 금요일

OPENAPI 로 틱(TICK) 데이터를 DB에 저장하기 (1)

 

시스템 매매 프로그램 개발

    1. (TICK) 데이터를 저장하기 (예약 시간)

    2. 실시간 데이터를 저장하기

    3. 로그인후 정보를 관리 하기 

    4. 거래(매수/매도) 코드 개발하기 

    5. 계좌 관리 코드 짜리 

    6. 틱 데이터 가공하기 

    7. 실시간 매매 시스템 알고리즘 만들기 

   

 

제가 만들고자 하는 시스템 매매 프로그램 개발을 하려고 몇년동안 고민만 하다가 결국 고민보다는 행동을 먼저 

해보자 하는 마음으로 시작하였습니다

회사일도 해야 되기 때문에 시간 여유가 많이 나지 않아서 멈��다가 또 시작했다가 하고 있네요

과거에 진행 했던 자료들을 다시 정리하면서 위 목차대로 진행을 하기로 마음을 먹었습니다

 

코드는 100% 공유를 하지 못할 수도 있구요. 양해 부탁드립니다. 궁금하신 사항은 언제든지 메일이나 쪽지로

보내주시면 답변 가능한 것들은 답변드리도록 하겠습니다. (moon10200@gmail.com)

 

 

Microsoft Visual Studio C# 프로젝트를 하나 생성합니다

 

 

이제 여기에 저희가 사용할 OPEN API 컨트롤을 배치 시켜야 합니다. 이전 강좌에도 말씀드렷지만 

도구 상자에 보이지 않으신다면 아래 메뉴에서 OPEN API 를 찾아서 추가 하셔야 됩니다

 

 

 

 

 

 

 

위 같이 선택하면 도구상자에 컨트롤이 보이게 됩니다

 

 

화면에 Form 에 컨트롤을 드래그하여 배치 합니다

 

 

이제 DB 연결과 데이터를 저장할 테이블을 만들어 보겠습니다

 

DB 관련 코드를 만들기 위한 파일을 하나 추가 합니다

 

이름은 전 sjMariaDB.cs 로 주었어요

 

코드를 아래와 같이 설정합니다

 

using System;

using MySql.Data.MySqlClient;

using MySql.Data.Common;

namespace sj_cs_common

{

 

}

 

sj_cs_common 은 원하시는 이름으로 바꾸셔도 됩니다. (앞으로 이 DB 기능을 쓰기 위한 식별자 정도로 생각하시면 됩니다)

 

 

폼화면을 오른쪽 버튼을 눌러서 속성창을 열고 

 

 

번개 아이콘을 누른 후 Load 될때 함수명을 써넣어 추가 합니다. 마우스로 더블클릭하셔도 자동으로 생성됩니다

 

Load 는 프로그램이 실행될 때  FrmMain 이 호출되면서 Load 될 때 호출되는 함수를 의미합니다

 

 

이와 같이 코드를 입력합니다

 

(** 앞으로 C# 관련 코드 내용은 설명을 생략합니다. 궁금하신분은 메일로 부탁드려요~ )

 

 

 

이런 에러가 발생한다면 위의 프로젝트 속성->빌드 탭에서 x86 으로 옵션을 변경하시면됩니다

 

 

 

제 블러그다른 글을 보시면  MariaDB 설치와 MariaDB 에서 DB 를 생성하는 방법을 찾을 수 있습니다

아래 코드에서 접속할 DB 를 미리 생성을 하여야 하니 안하신 분은 미리 하시고 계속해 주세요

 

sjMariaDb.cs 파일에는 아래와 같이 코딩을 합니다

 

private static string mysql_conn_str = "Server=local;Database=future_tick;Uid=root;Pwd=test123;Charset=utf8";                                                                                                                                

                                                                                                                                                                                                                                          

public static bool createtable_tick(string tbl_name)                                                                                                                                                                                      

{                                                                                                                                                                                                                                         

    bool bret = true;                                                                                                                                                                                                                     

                                                                                                                                                                                                                                          

                                                                                                                                                                                                                                          

    MySqlConnection conn;                                                                                                                                                                                                             

    conn = new MySqlConnection(mysql_conn_str);                                                                                                                                                                                           

    try                                                                                                                                                                                                                                   

    {                                                                                                                                                                                                                                     

        conn.Open();                                                                                                                                                                                                                      

                                                                                                                                                                                                                                          

        string sql = "CREATE TABLE " + tbl_name + "(id bigint(20) unsigned NOT NULL AUTO_INCREMENT, c_time datetime, volume int, o_p float(10,2), h_p float(10,2), l_p float(10,2), c_p float(10,2), pre_c float(10,2), PRIMARY KEY(id))";

        MySqlCommand cmd = new MySqlCommand(sql, conn);                                                                                                                                                                                   

        cmd.ExecuteNonQuery();                                                                                                                                                                                                            

    }                                                                                                                                                                                                                                     

    catch (Exception ex)                                                                                                                                                                                                                  

    {                                                                                                                                                                                                                                     

        Console.WriteLine("데이터 베이스 오픈 실패 : " + ex.Message, "Database Error [MYSQL]");                                                                                                                                           

        bret = false;                                                                                                                                                                                                                     

    }                                                                                                                                                                                                                                     

    finally                                                                                                                                                                                                                               

    {                                                                                                                                                                                                                                     

        conn.Close();                                                                                                                                                                                                                     

    }                                                                                                                                                                                                                                     

                                                                                                                                                                                                                                          

    return bret;                                                                                                                                                                                                                          

}    

 

 

여기까지 하시고 실행하시면 됩니다. F5 또는 ctrl+F5 

 

 

이와 같이 실행되면 됩니다

 

Table 이 정상적으로 생성되었는지 확인하고 싶다면 Toad Edge 를 이용하여 아래와 같이 확인할 수 있습니다

 

 

 

 

숙제 ) 프로그램을 실행할 때 마다 테이블을 생성하면 안될 테니 중복 검사하여 테이블이 존재한다면 더이상 테이블을 생성하지 않도록 해보세요

 

다음 강좌는 OPEN API 를 이용해서 로그인 하는 코드를 추가하고 (이전 블러그에 로그인 코드 추가 부분 참조)

데이터를 받아와서 저장하는 코드를 만들어 보겠습니다

 

 

 

댓글 없음:

댓글 쓰기