L-ATS는 한순간에 한 사람의 사용자(하나의 계정)만 사용할 수 있도록 운영할 예정이니 프로그램이 종료되는 시점까지 '사용자 정보'는 하나의 데이터 셋만 생성될 것이다.
그럼 프로그램이 동작하는 동안 사용자는 어떤 정보들을 관리하여야 할까?
우선 기본 사용자 정보는 아래 두 가지 형태로 구분할 수 있다.
- L-ATS 사용자 정보
- 이베스트 증권 사용자 정보
좀 더 Detailed 정보들을 나열해 보자.
[ L-ATS 사용자 정보 ]
1. L-ATS 가입자 ID : 비밀번호 찾기와 연계하기 위해 E-Mail Type으로 정함.
2. 가입자 Pricing Grade : L-ATS 가입자의 가격 정책 등급 정보.
3. Auto Trading 여부 : 현재 자동 매매 처리 중인지 여부 정보.
4. 현재 접속 단말 MAC : 한 계정당 한 명만 사용할 수 있도록 MAC 인증을 위한 정보.
[ 이베스트 증권 사용자 정보 ]
1. 현재 접속 HTS 정보 : '모의투자' 또는 '실투자' 접속 서버 정보와 현재 접속 여부 정보.
2. 이베스트 가입자 ID : 이베스트 증권 ID 정보.
3. 현재 계좌 : 증권 사용자는 여러 개의 계좌를 가질 수 있기 때문에, 1개의 계좌를 선택하여 사용할 수 있음.
우선 이정도면 될 것 같다.
사용자 정보는 프로그램이 시작된 순간부터 종료될 때까지 단 하나(!)만 존재하게 되므로 프로그램 어디에서도 사용할 수 있도록 Global 형태로 선언했다.
아래는 사용자 정보를 관리하는 Class다.
public class User_Info
{
public static User_Info gUser_Info = new User_Info();
public bool IsUserLogin; // 프로그램 로그인 여부
public bool IsAutoTrading; // 자동매매 진행 여부
private string Id; // L-ATS 사용자 ID
private string Grade; // 회원등급
private string MacAddr; // 현재 접속 단말 MAC Address
public DateTime Last_Login;
//---------------------------------------------------------------
public bool IsHTSLogin; // HTS 로그인 여부
private string EbestId; // 이베스트 ID
private string UserName; // 사용자 이름
private string CurAccount; // 현재 사용 계좌 번호
// 생성자
public User_Info()
{
IsUserLogin = false;
IsAutoTrading = false;
IsHTSLogin = false;
Id = string.Empty;
Grade = string.Empty;
MacAddr = string.Empty;
EbestId = string.Empty;
UserName = string.Empty;
CurAccount = string.Empty;
}
// 소멸자
~User_Info()
{
}
... 생략 ...
}
bool Type의 변수를 제외한 모든 정보들은 private으로 선언하여 Set/Get 함수를 사용하도록 했다.
참고로 나는 변수의 초기화를 매우 중요하게 생각하는 개발자다.
그리고 언제든 바로 프로그램 상의 사용자 상태 정보를 확인할 수 있는 메뉴를 만들었다. 즉, 위의 User_Info() 클래스의 정보를 확인하는 메뉴이다.
먼저 L-ATS 로그인 후 사용자 정보를 보면 아래처럼 알 수 있는 정보만 표시가 된다.
회원가입시 입력했던 Database의 정보들과 로그인 시에 입력한 HTS Server 정보 (모의투자/실투자)가 표시된다.
이베스트 HTS를 로그인하고 보유계좌까진 선택한 후 '사용자 정보'를 확인해 보자.
이제 계좌의 목록 중 하나를 골라서 '선택' 버튼을 클릭하면 비로소 User_Info()의 모든 정보가 완성된다.
사실 '사용자 정보' 메뉴는 디버깅 용으로 만들었던 건데... 메뉴가 되어 버렸다.
'Trading' 카테고리의 다른 글
[Trading] XingAPI - DevCenter 사용하기 (0) | 2020.08.14 |
---|---|
[Trading] L-ATS 사용자 시나리오 (0) | 2020.08.02 |
[Trading] HTS 로그인 설계, 구현 (0) | 2020.07.08 |
[Trading] 프로그램 로그인 (0) | 2020.06.21 |
[Trading] 두번째 프로그램 (0) | 2020.06.07 |