2018년 12월 7일 금요일

키움증권 오픈 API+ 이용하기 03

엑슬론님의 주식시스템트레이더를 바탕으로 하여
어렵사리 수동매수 까지는 구현했네요.
이것 이용해 돈벌어볼까?????
// 주문
procedure TForm1.Button23Click(Sender: TObject);
var
거래구분: string;
매매구분: integer;
주문가격: Integer;
주문수량: Integer;
종목코드: string;
원주문번호: string;
iRet: Integer;
begin
거래구분 := KOACode.hogaGb.Names[cb거래구분.ItemIndex]; // code 분리
매매구분 := StrToInt(KOACode.orderType.Names[cb매매구분.ItemIndex]); // code 분리
주문가격 := StrToInt(e주문가격.text);
종목코드 := e종목코드.text;
주문수량 := StrToIntdef(e주문수량.text,0);

iRet := KHOpenAPI1.SendOrder('주식주문', GetScrNum(), cb계좌.Items[cb계좌.ItemIndex], 매매구분, 종목코드, 주문수량, 주문가격, 거래구분, 원주문번호);
if iRet = 0
then 실시간메모.Items.Add('주문이 전송 되었습니다')
else 실시간메모.Items.Add(Format('주문이 전송 실패 하였습니다. [에러= %d] ',[iRet]));
end;


2018년 12월 2일 일요일

키움증권 오픈 API+ 이용하기 02

KOA Studio를 설치하고 접속하면 각각의 트랜젝션의 종류와 사용방법을 알 수 있다.
//로그인 정보을 읽어오자.
private
{ Private declarations }
procedure GetUserInfo;
public
{ Public declarations }
end;


Ctrl + Shift + C 하고 아래 코드를 입력한다.

procedure TForm1.GetUserInfo;
var
iStrings: TStrings;
idx: Integer;
begin
with KHOpenAPI1 do begin
Label1.Caption := GetLoginInfo('USER_ID');
Label2.Caption := GetLoginInfo('USER_NAME');
iStrings := TStringList.Create;
try
iStrings.Delimiter := ';';
iStrings.DelimitedText := GetLoginInfo('ACCNO');
for idx := 0 to iStrings.Count - 1 do ComboBox1.Items.Add(iStrings[idx]);
finally iStrings.Free;
end;
end;
end;

로그인을 하면 Connect 이벤트가 OpenApi에서 발생하므로 아래코드를 추가한다.

procedure TForm1.KHOpenAPI1EventConnect(ASender: TObject; nErrCode: Integer);
begin
if nErrCode = 0 then begin
ListBox1.Items.Add('로그인 성공');
GetUserInfo;
end
else
ListBox1.Items.Add('로그인 실패(Code):' + IntToStr(nErrCode));
end;

키움증권 오픈 API+ 이용하기 01

1. 휴대폰 앱을 이용하여 키움증권 비대면 계좌를 만듭니다.
2. Open Api 사용신청을 합니다.
3. 모의투자 신청을 합니다.
4. 멀티접속을 신청합니다.
5. 키움증권에 접속하여 키움 Open Api+ 를 다운 받아 설치한다.
6. 키움증권에서 KOA Studio 와 개발가이드를 다운받아, KOA Studio를 설치한다.
7. Open Api 가 OCX 방식이다 (Active X)
8. 델파이를 실행하여 Import Component Active x 를 하고 설치한다.
   - 새로운 프로젝트로 하던지 기존 프로젝트에 포함하던지 한다.
   - 기존 프로젝트에 포함 하는 경우는 Uninstall 하고 다시 Install한다.
9. 델파이 ActiveX 컴포넌트에 TKHOpenApi 컨트롤이 있음을 알수 있다.


10. 델파이에서 새로운 폼을 하나 만들고, 버튼 놓고, 리스트박스 놓고, KHOPenApi 컨트롤을 폼에 떨구고, 버튼 이벤트 발생하여

procedure TForm1.Button1Click(Sender: TObject);
begin
if KHOpenAPI1.CommConnect = 0 then
ListBox1.Items.Add('로그인 성공')
else
ListBox1.Items.Add('로그인 실패');
end;

하면 아래와 같은 창이 뜹니다.
11. 로그인을 하면 접속이 되고 KHOpenApi 이벤트중 아래와 같이 하면

procedure TForm1.KHOpenAPI1EventConnect(ASender: TObject; nErrCode: Integer);
begin
if nErrCode = 0 then begin
ListBox1.Items.Add('로그인 성공');
GetUserInfo;
end
else
ListBox1.Items.Add('로그인 실패(Code):' + IntToStr(nErrCode));
end;

12. 다음(GetUserInfo)은 계속됩니다.

델파이 12.1이냐 11.3이냐?

 델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.