구형 노트북 학대하기 삽질

아주 오래 전에 마케팅팀에서 사용하던 구형 노트북(Fujitsu Lifebook Q210)이 있다. 램은 1GB가 납땜되어 업글불가, 하드디스크는 5백원짜리 동전같은 넘이라 역시 업글불가. 장점은 얇고 가볍고 팬이 없다는 점이다. 물론 성능이 안습이라 다들 안쓰는 물건인데, 여기에 우분투를 설치해서 장난감으로 갖고 놀고 있다. 사실 우분투팀도 새 버전 넘길때마다 속도가 떨어져 더 이상 리눅스 업글은 무리인듯...

이 넘 가지고 최근에 벌인 일은 RStudio 서버를 설치한 것이다. 굳이 서버를 설치한 것은 아이패드나 스마트폰 웹브라우저를 통해 RStudio 를 가지고 놀려는 게 목적이다. 설치는 시키는 대로 하면 끝인데, 문제는 외부에서 어떻게 접근할 것이다? 그래서 네트워크를 회사내부망이 아닌 정보단말기-ipTime공유기를 이용하고 ipTime공유기의 DDNS기능을 이용한다.


그러나 스마트폰으로 RStudio를 사용하기는 사실 병맛이라 우분투에 openSSH를 설치하고 스마트폰에서 텔넷앱(vxConnectBot)를 통해 사용할 수 있다. 물론 화려한 GUI대신 뻑뻑한 텍스트 인터페이스가 환영해주지만 전화기 가지고 R로 돌리고 Python도 돌리고 수틀리면 c/c++까지...대신 vi를 다시 익히는 즐거움이 하나 생긴다.


며칠간의 기록을 모아보니 금융공학

지난 번에 DDE를 이용하여 주가지수선물의 일중 가격 빈도를 포스팅했는데, 이번에는 하루가 아닌 며칠간의 빈도를 모아서 한꺼번에 그려 보았다. 뭐 대단한 발견을 기대한 건 아니고 그저 심심풀이로...

어제 주가지수선물 도수분포 금융공학

지난 번 DDE를 이용한 프로그램을 이용하여 선물데이터를 워크시트에 쌓아 보았다. 데이터의 갯수는 3,636개인데, API를 이용하여 얻는다면 더 많은 데이터를 얻지 않을 까... 사실 블룸버그를 통해 틱데이터를 얻기도 했지만 직접 만든 걸로 해보는 게 의미있기도 하고 퇴사하면 블룸버그와 빠이빠이 일테니

선물데이터를 가지고 어제 하루동안 움직인 포인트의 histogram을 만들어 보았는데, 대충 정규분포 비스무리한 모양이라고 우기는 중...^^ 계속 관심을 가지고 있는 것은 일중 고점과 저점을 예측하고, 발생시각을 쌓아 통계를 만들어 보는 것이다. 그동안 게을러서 안하고 있는데 대단한 결과가 나오리라는 희망은 안가지고 있다.


위에서 노란막대가 어제의 종가포인트

간단한 DDE 프로그래밍 EXCEL/VBA

DDE(Dynamic Data Exchange)는 윈도 초창기부터 프로그램간 데이터를 주고 받는 통신방법인데, 지금도 많은 증권사 HTS에서 이를 지원하여 간단하게 시세데이터를 실시간으로 엑셀 워크시트로 불러올수 있다. 이후 엑셀에서는 더 빠른 RTD()함수를 지원하지만 여전히 DDE를 더 많이 사용한다.

아주 오래 전에 외국계증권사에 놀러가서 로이터단말로부터 DDE를 이용하여 데이터를 얻어 오는 프로그램을 재능기부(?)로 만들어 주었는데, 그때 데이터가 바뀌면 이를 가져와 데이터베이스를 만들어 주는 프로시저를 워크시트의 Change이벤트에 걸어 두었는데, 이게 전혀 호출이 안되어 애를 먹었다.

DDE를 통해 데이터가 변경되는 경우 Change이벤트는 쓸데 없고 Workbook개체의 LinkSources와 SetLinkOnData 메서드를 이용한다. LinkSource는 DDE를 통해 교환하는 데이터 아이템을 Variant형식의 배열로 돌려주고, SetLinkOnData는 아이템 값의 변경시 사용할 프로시저를 걸어 주는 역할을 한다.

다음은 시간 아이템 변경시 시간과 현재가를 출력하는 VBA 예이다. Start_DDE()를 실행하면 시간아이템에 onStart()라는 프로시점을 걸어준다. 프로시저 설정시 작은 따옴표(')안에 프로시저이름을 넣어준다. Stop_DDE()는 걸어둔 프로시저를 해제하는 것으로 SetLinkOnData 메서드에 빈문자열을 던져 주면 된다.
Sub Start_DDE()
Dim aLinks
Dim i As Long
Const DDE_ITEM_TIME As String = "DDEServer|Fu101J12!Item3"

aLinks = ThisWorkbook.LinkSources(xlOLELinks)
If Not IsEmpty(aLinks) Then
For i = 1 To UBound(aLinks)
If aLinks(i) = DDE_ITEM_TIME Then
ThisWorkbook.SetLinkOnData aLinks(i), "'onStart'"
Exit For
End If
Next
End If
End Sub

Sub Stop_DDE()
Dim aLinks
Dim i As Long

aLinks = ThisWorkbook.LinkSources(xlOLELinks)
If Not IsEmpty(aLinks) Then
For i = 1 To UBound(aLinks)
ThisWorkbook.SetLinkOnData aLinks(i), ""
Next
End If
End Sub


Sub onStart()
Dim s As Worksheet

Set s = Sheet1

On Error GoTo Err_Handelr

Debug.Print s.Range("B3"), s.Range("B4") '// B3는 시간, B4는 현재가격

Exit Sub
Err_Handelr:
MsgBox "Error(" & Err.Number & ") " & Err.Description & " [onStart]"
Call Stop_DDE
End Sub
위의 프로시저는 한국투자증권 HTS를 이용한 것이다.

STL이 무엇인지 알고 계십니까? C/C++

한빛미디어에서 제공하는 좋은 강좌가 하나 있네요...처조카가 컴퓨터사이언스를 전공하느라 종종 저에게 c/c++ 과제를 물어 보는데, 비전공자가 전공자를 가르쳐준다는 게 재미있는 현상입니다.

About STL : C++ STL 프로그래밍(1)
About STL : C++ STL 프로그래밍(2-1)
About STL : C++ STL 프로그래밍(2-2)
About STL : C++ STL 프로그래밍(3) - 연결 리스트

STL이 무엇인지 알고 계십니까?

C++를 주 프로그래밍 언어로 사용하고 계신 분들은 알고 있으리라 생각합니다. STL은 C++ 언어의 '표준 템플릿 라이브러리 (Standard Template Library) '의 약자입니다.

STL을 간단하게 말하자면 일반적으로 많이 사용될 수 있는 자료구조와 알고리즘 모음 라이브러리가 말할 수 있습니다.

STL은 C++ 언어가 처음 만들어질 때부터 있었던 것이 아니고 1998년에 C++ 표준이 정해지기 전인 1993년 말 무렵에 Alex Stepanov가 C++ 언어의 창시자인 Bjarne Stroustrup에게 보여준 후 준비 기간을 걸쳐서 1994년에 표준 위원회에 초안이 통과됩니다.

참고로 C++ 표준은 1989년에 시작되어 1998년 9월에 마무리되었습니다....

1 2 3 4 5 6 7 8 9 10 다음