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)은 계속됩니다.

2018년 6월 3일 일요일

맥북에서 한글, 한자키 사용

맥북이 하이 시에라로 바뀌면서 한글 영문 변환이 Caps lock 키로 할 수 있게되어 편리 해진것 같다.
하지만 이전에 익숙 했던 오른쪽 Command 키를 사용하던 습관에 같이 사용하도록 바꾸었다.

이왕 프로그램을 설치한 김에 몇가지의 단축키도 바꾸었다.
우선 Karabiner-Elements 최신 버전을 다운 받아 설치한다. 이곳에서

Preferences.. 로 들어가서
수정하면 됩니다.

Complex Modifications > Add rule > Import more rules from the Internet 한 다음
Launch apps 으로 검색하여 Rule을 다운받는다
시프트+코멘드+G 하고 ~/.config 로 이동하면
계속하여 /Users/jeonggooilee/.config/karabiner/assets/complex_modifications 까지 이동한다.
여기서 "사용자" 사용자 글씨가 아니라 로그 ID 이다.
다운 받은 파일을 텍스트 편집기로 편집한다.

이 rule 에서는 right shift 키를 조합했는 데 우리나라 글을 쌍자음등에 right shift 키를 많이 사용하므로
right alt 키로 바꾼다.  "right shift" 를 "right option"으로 바꾼다.
활성화(Enable) 한다.
참고로 한자변환은 디폴트로 Alt + Enter  또는 option + return 이다.




2018년 5월 23일 수요일

델파이 dcu 파일 생성 문제

델파이에 외부 페키지를 설치 할 때 무심고 Options .. > Library Path.. 에 새로운 패키지의 Souurce Path 를 설정 하였는데 
새로운 프로젝트 생성하고 매번 컴파일때마다 해당플렛폼의 디버거등에 실행파일과 사용된 외부 콤포넌트들의 dcu 가 전부 생성되어  '.\$(Platform)\$(Config)'  폴더가 아주 지저분해집니다.
2가지의 방법으로 해결해봅니다.

1. 각각의 프로젝트의 옵션 > Building > Delphi Compiler 에서 아래와 같이 Unit output directory를 공란으로 만들어주면됩니다.  당초에는 '.\$(Platform)\$(Config)'로 입력되어 있습니다. (2022.11.11 수정합니다)



2. 컴퍼넌트 설치시 별도의 LiB 폴더를 하나 만들고  Options.. > LIBrary Path.. 에 방금 만든 폴더를 지정해줍니다.

외부 페키지 포로젝트(화면 오른쪽) Options 에서 unit out Path를 설정하되
방금 만든 패스를 설정하면 패키지 인스톨 할 때 생성된 dcu를 찾게됩니다.


컴포넌트 사용중 컴파일에러가 나는 경우가 있는데..
dcu 에서 res 파일이나 frm 파일을 찾게 되어서인 것 같아요.
소오스 폴더에서 res 파일과 frm 파일을 복사하여 방금 만든 폴더에 붙여 넣기 하면 되됩니다.
이렇게 되면 포로젝트에서 외부 콤포넌트를 사용해도 새로 컴파일하지 않고 생성된 DCU르 찾게됩니다.

이렇게 하기 싫으면 프로젝트 옵션에서 검색폴더에 해당 res 나 frm 파일이 있는 곳을 지정해주면 됩니다. 그러면 다시 dcu 파일이 무진장 생기네요. (^^;)






2018년 5월 13일 일요일

맥북에서 델파이로 맥북용 프로그램을 만들어 보기

맥북에서 파스칼로 프로그램을 해보려고 많은 시도를 해보았습니다.
라자루스를 깔아서 돌려 보았고 codeTypon 이란 것도 설치해보았으나 2% 부족함을 채우지 못했습니다.

맥북용의 Microsoft Remote Desktop 프로그램이 있습니다.
이 프로그램은 맥북에서 윈도우OS 데스크탑을 원격연결하는 프로그램입니다.
앱스토어에 가서 설치합니다.
윈도우용 노트북에서 원격연결을 체크해주고
파이어월에서 데스크탑 원격연결 확인해주고

노트북 ip 와 로그인아이디 와 패소드를  넣으면 연결이 됩니다.


이제 이화면에서 델파이가 설치된 폴더로가서 paserver 폴더에 있는 paserver xx.pkg 를 복사한다음

Cloud (저는 드롭박스)를 이용하여 맥으로 복사해온다음 설치합니다.
원격 데스크탑창은 옆으로 살짝 옮겨 놓고, 맥의 데스크탑에서 작업합니다.
PaServerManager를 실행하여
이름입력하고 Scratch Folder위치 기억해둡니다.
파이어월에서 들어오는 설정을 허용할 것인지를 묻는 돌출창이뜨면  허용하시고요.
그림의 가장 왼쪽 아이콘에서 선택하여 시작합니다.
시작하면 암호를 입력하라고 나옴니다.
윈도우에서 맥북으로 연결해 들어올때의 암호입니다.
적당히 넣고 Return키를 누릅니다.
i 키를 입력하여 아이피를 확인합니다.
이젠 원격연결화면으로 돌아가서 델파이를 실행하고 Tools > Option > Environment Options
> Connection Profile Manager 를 선택하고, 아래쪽 추가 버튼을 크릭한 다음
Platform 에는 OS X, Host Name = 조금전에 맥의 ip 를 입력합니다.
암호를 입력하고 , Test Connection 버튼을 크릭하면 연결을 확인 할 수 있겠습니다.

왼쪽 트리박스에서 sdk manager를 선택하고 
OS X을 설치합니다.
프로젝트를 하나 만들고 당연히 OS X으로 설정해야죠.
버튼 올리고 이벤트 발생한다음.
저장합니다.
과감히 실행버튼을 누르면 맥의 데스탑에 있는 콘솔에 작동메세지가 보이고 데스크탑에  델파이로 만든 프로그램이 실행됩니다.
이렇게 말이죠.
아까 기억해 두었던 Scratch 폴더를 찾아가면 생성된 파일이 보일 것입니다.
좋은 저녁이네요.














2018년 5월 12일 토요일

부트캠프를 이용해 윈도우10을 사용시 생성되는 ._*.* 파일 삭제하기.

부트캠프를 이용해 윈도우10을 사용시 생성되는 ._*.* 파일 (.ds_store) 이 눈에 거슬립니다.
특히나 usb에 mp3파일 복사하고 나서 윈도우에서 보면 작난이아닙니다.
재생시에도... 랙이 걸린것 처럼... 해멥니다.

맥에서는 구굴링하면 해결방법이 있는데 윈도우에서는 일일이 찾아서 삭제해야 합니다.
해서, 윈도우에서 삭제하는 프로그램을 델파이로 만들었는데 잘안되더군요.
파일이름에 "." period 가 2개 있어서 그런것 같아요.

삽질을 수시간 하던중.........
결국 파일삭제시

uses ShellApi

function TForm3.DeleteFileDust(iPath: string): boolean;
var
   F : TShFileOpStruct;
begin
   FillChar(F, SizeOf(F),#0);
   F.Wnd := Handle;
   F.wFunc := FO_DELETE;
   F.pFrom := PChar(iPath+#0#0);
   F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
   Result:= (ShFileOperation(F)=0);
end;

붉은 글씨와 같이 바꾸니 삭제가 되네요.
근데? 휴지통으로 가야하는데 바로 삭제가 되버리네요.
꼭, 확인후 삭제하세요.
(No)를 선택해야 삭제됩니다. 이프로그램으로 인해 잘못되어도 책임 안집니다.


허접하지만 파일 올려둡니다. 다운 이곳에서.
압축 풀어 바로 실행하면됩니다.

#._ #DS_Store #맥북 #윈도우 #dot #double dot #double perid




2018년 5월 4일 금요일

맥북에서 트랙패드로 인해 키보드입력시 어려움 있을때

맥북의 트랙패드로 인해 키보드 입력시 커서 위치가 바뀌거나 변동하여 어려움이 있을 때.
맥북에 마우스를 연결하여 사용하면 트랙패드의 기능을 잠시 끄고자 하면
시스템 환경설정 > 손쉬운 사용 > 마우스와 트랙패드에서
마우스 또는 무선트랙패드가 있으면 내장 트랙패드 무시하기를 선택하면 됩니다.

부트캠프에서 윈도우10을 사용 중이라면 화면 오른족하단의 BootCamp 아이콘에서 트랙패드 설정에서 한개의 손가락 > 탭하여 크릭하기를 선택 제외하면 마우스 커서는 움직여도 타이핑에는 지장이 없습니다.



#트랙패드,#USB,#MOUSE,#죽이기,#TrackPad,#마우스,#맥북,#Macbook

2018년 5월 2일 수요일

델파이 StatusBar Height 문제

델파이를 사용하다보니
언제부터인가 Statusbar 에서 SimpleText 를 사용할라 치면
가끔씩 높이가 줄어들어 글자 하단이 잘리는 경우가 있다.

StatusBar.Canvas.Font := StatusBar.Font;
로 해주고
속성창에서 StatusBar.ParenFont 를 True; <코딩으로 하지마세요>
로 해주면 정상으로 돌아온다.


델파이 12.1이냐 11.3이냐?

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