2012년 9월 29일 토요일

How to build GSL 1.15 on Visual Studio Express 2012

※ Elliott Pattern Helper Add In
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 

1. Download GSL 1.15 sources

  • Download GSL 1.15 sources archive file
  • Extract the archive into a directory, let's say, 'GSL root'

2. Download Visual Studio 2010 GSL files


Follow the instructions in 'GSL root'/build.vc10/gsl.vc10.readme file. For static library build,

3. Open Visual Studio solution file 'GSL root'/build.vc10/gsl.lib.sln in Visual Studio 2012 Express
  • On 'VC++ compiler and library update' prompts, Click 'Update'
  • Build 'gslhdrs' project. There'll be no build errors.
  • Open Command Prompt window, and change directory to 'GSL root'/build.vc10/gslhdrs
  • Run 'build arch'/'build mode'/gslhdrs.exe, where 'build arch' is either win32 or x64, 'build mode' is either Debug or Release.
  • Build 'cblaslib' project. There'll be no build errors.
  • Build 'gslib' project. Compiler may complaints with error 'illegal initialization' on rk4imp.c
  • Edit the source as follows. Replace the original source
        const double c[] = { (3 - sqrt (3)) / 6, (3 + sqrt (3)) / 6 };
        with
        const double c[] = { (3 - M_SQRT3) / 6, (3 + M_SQRT3) / 6 };
  • Build 'gslib' project again. Compiler also returns an error on bspline.c, which caused by a #if block before a declaration block.
  • Edit the source as follows. Replace the original source
    double
    gsl_bspline_greville_abscissa(size_t i, gsl_bspline_workspace *w)
    {
    #if GSL_RANGE_CHECK
      if (GSL_RANGE_COND(i >= gsl_bspline_ncoeffs(w)))
        {
          GSL_ERROR_VAL ("Greville abscissa index out of range", GSL_EINVAL, 0);
        }
    #endif
      const size_t stride = w->knots->stride;
      size_t km1 = w->km1;
      double * data = w->knots->data + (i+1)*stride;

with
    double
    gsl_bspline_greville_abscissa(size_t i, gsl_bspline_workspace *w)
    {
      const size_t stride = w->knots->stride;
      size_t km1;
      double * data;
    #if GSL_RANGE_CHECK
      if (GSL_RANGE_COND(i >= gsl_bspline_ncoeffs(w)))
        {
          GSL_ERROR_VAL ("Greville abscissa index out of range", GSL_EINVAL, 0);
        }
    #endif
      //const size_t stride = w->knots->stride;
      //size_t km1 = w->km1;
      //double * data = w->knots->data + (i+1)*stride;
      km1 = w->km1;
      data = w->knots->data + (i+1)*stride;
  • Rebuild 'gsllib', then there'll be no build errors.
  • All done.


2012년 9월 12일 수요일

Elliott Pattern Helper (EPH) 1.0 QuickStart

※ Elliott Pattern Helper Add In
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 

  Elliott Pattern Helper 1.0(이하 EPH)을 사용하는 대표적인 시나리오를 요약하면 다음과 같습니다.
  • 주가 데이터(분봉, 일봉, 주봉, 월봉 등)를 Excel 시트(sheet)로 적재합니다. [1]
  • 파동 분석을 수행합니다. [1→2]
  • Fractal Counting 차트를 활용합니다. [1→3]
  • 더 큰 시간 단위의 데이터를 조합하여 Fractal Count를 합니다. [1→4→3]
  • 더 큰 시간 단위의 데이터를 조합하여 파동 분석을 합니다. [1→4→2]
  • DDE 연동 기능을 사용합니다. [1→5]

1. 분석 대상 데이터 적재

  • 분석하고자 하는 종목 또는 지수의 주가 데이터를 HTS를 사용하여 엑셀로 적재합니다. 
  • 일반적으로 증권사에서 배포하는 HTS는 개별 종목의 주가 또는 지수 데이터를 Excel 파일로 저장하는 기능을 제공합니다. 이 기능을 사용하여 EPH에서 사용할 파일을 준비합니다.
  • 아래 그림은 키움증권 영웅문에서 사용할 Excel 파일을 준비하는 과정입니다.

그림 1. 영웅문 Excel 파일 저장 1

그림 2. 영웅문 Excel 파일 저장 2

  • 아래 화면은 영웅문을 통해 저장한 주가 데이터를 엑셀에서 불러들인 예시 화면입니다. 

그림 3. 분석 대상 데이터 적재 1
  • EPH를 제대로 사용하기 위해서는 일자(and/or 시간)와 고가 및 저가를 반드시 포함하여 적재해야 하며, Fractal counting을 사용하려면 종가와 거래량 또한 포함해야 합니다. 
  • 위 그림과 같이 HTS로 저장한 데이터의 헤더 항목과 EPH에 설정된 Labels 항목이 동일한지 확인해야 합니다. EPH의 Labels 설정은 QuickStart - Installation and Setting 4.1을 참조하십시요.
  • DDE 연동 기능을 사용하려면 파일명을 반드시 종목명과 동일하게 저장해야 합니다. 그렇지 않을 경우 EPH가 종목코드를 검색하지 못하여 HTS와 DDE 연결이 되지 않습니다.
  • EPH의 Data Helper → Load Stock Data 메뉴를 실행합니다.
그림 4. 분석 대상 데이터 적재 2
  • 다음 그림과 같이 'Stock data sheet selection' form에 주 데이터로 사용할 엑셀 시트(sheet)의 이름을 입력한 후 확인 버튼을 클릭합니다. ※ 참고: 하나의 엑셀 파일에 분봉 또는 일봉 등 다양한 시트가 존재하더라도, DDE 연결은 이 과정을 통해 지정된 하나의 시트에 대해서만 수행됩니다.
그림 5. 분석 대상 데이터 적재 3

2. 파동 분석

  파동 분석은 종목 또는 지수의 가격 데이터로부터 모노파동(monowave)들을 추출해 내고 되돌림비(retracement ratio)와 전후 모노파동들과의 관계를 파악하여 최종적으로 모노파동의 구조기호(structure notation)와 진행기호(progress notation)를 분석해내는 과정입니다.

  EPH는 분석 결과를 시각화하기 위해 차트 기능을 제공하는데, 스크롤 기능을 포함함으로써 분석 기간 전체를 볼 수 있는 'Wave Structure' Chart와 선택된 모노파동의 주변만을 보기위한 'Monowave Structure' Chart가 그것입니다.

  파동 분석을 하는 과정은 단순합니다.
  • Helper Batch → Analysis Batch 메뉴를 실행합니다.
그림 6. Analysis Batch 실행
  • 분석 대상 시트를 적재(그림 4, 5)하지 않았을 경우 아래와 같은 프롬프트가 표시됩니다. '예(Y)' 버튼을 클릭합니다.
그림 7. 데이터 적재 프롬프트
  • 새로운 시트 생성을 알리는 프롬프트가 뜰 때 확인 버튼을 클릭하면, 아래 그림과 같이 적재된 주 데이터 시트 이름(그림 6의 경우 'LG')에 '_EPH'를 더한 이름('LG_EPH')으로 새로운 시트가 생성됩니다.
그림 8. Analysis Batch 실행 결과
  • _EPH 시트의 주가 열(column B)에는 원 데이터 시트의 고가와 저가의 평균가가 기록됩니다.
  • 위 그림 8처럼 식별된 모노파동의 종점(end point)은 모두 황색 셀(cell)로 표시됩니다.
  • 수정주가 열(column C)은 차트 출력 시 모노파동을 직선으로 시각화하기 위한 것으로서 큰 의미는 없습니다.
  • 되돌림비 열(column D)에는 해당 모노파동의 이전 모노파동에 대한 되돌림비가 표시됩니다.
  • R_And_C 열(column E)에는 Glenn Neely의 저서 Mastering Elliott Wave에서 분류한 파동의 Rule과 Condition이 기록됩니다.
  • S_And_P 열(column F)에는 모노파동에 대한 분석 결과로서 구조기호와 진행기호가 표시됩니다.
  • Hided 열(column G)에는 분석 결과로 모노파동 중간에 숨어있는 파동이 식별되었을 때 이를 표시합니다.
  • Desc. 열(column H)에는 식별된 구조/진행 기호에 대한 설명이 수록됩니다.

  위에서 언급한 차트 기능 중에 'Monowave Structure' 차트를 조회하는 과정을 설명하겠습니다.
  • 아래 그림과 같이 분석하고자 하는 모노파동에 해당하는 행(row)의 R_And_C 열(column E)을 선택하고 Pattern Helper → Wave Structure 메뉴를 실행합니다.
그림 9. Monowave Structure 차트 실행
  • 모노파동의 구조/진행 기호를 파악하기 위해서는 해당 모노파동의 이전에 전개된(preceding) 몇 개의 모노파동과 이후(following)에 전개된 몇 개의 모노파동을 동시에 분석해야 합니다. 
  • 차트로 보고자 하는 모노파동에 대해, 이렇듯 분석에 영향을 미치는 전후 모노파동을 모두 포함하는 차트가 아래와 같이 동일한 시트에 출력됩니다.
그림 10. Monowave Structure 차트 실행 결과
  • Monowave Structure 차트는 해당 모노파동 및 전·후 모노파동들의 구조/진행 기호와 함께 Desc. 열에 수록된 설명을 포함합니다.
그림 11. Monowave Structure 차트
  ※ EPH의 분석 결과로서 출력되는 구조기호와 진행기호는 결정적이거나 절대적이지 않습니다. EPH가 찾아낸 여러가지 가능성을 그대로 기호화한 것이며, 경우에 따라서는 분석을 하지 못하거나 제한적인 결과를 출력할 수도 있습니다.   ※ EPH는 단순한 'helper'일 뿐이며, 파동 전체의 맥락을 분석하고 이해하는 것은 사용자의 몫입니다.


  분석 기간 전체에 대한 'Wave Structure' 차트를 조회하는 과정은 다음과 같습니다.
  • _EPH 시트 위에서 Pattern Helper → Draw Chart 메뉴를 실행합니다.
그림 12. Draw Chart 실행
  • 'EPH_Charts'라는 이름으로 별도의 시트가 생성되면서 차트가 출력됩니다. ※ _Quote 시트('5. DDE 연동' 참조)에 출력되는 차트 이외의 모든 Wave Structure 차트 및 Fractal Counting 차트는 EPH_Charts 시트에 출력됩니다.
그림 13. EPH_Charts 시트
  • EPH_Charts 시트는 위 그림 상단에 빨간색 박스로 표시된 것처럼 스크롤바와 차트 선택을 위한 콤보박스 셀 및 버튼을 포함합니다.
  • 차트의 위치와 크기 설정은 QuickStart - Installation and Setting 4.4를 참조하십시요.
  • Wave Structure 차트는 모든 모노파동들의 구조기호와 진행기호를 포함합니다. 또한 설정에 따라 Elliott oscillator와 signal을 출력할 수도 있습니다.
그림 14. Wave Structure 차트

  파동 분석 기능과 관련된 기타 EPH의 메뉴는 다음과 같습니다.
  • Helper Batch → Batch with S 메뉴의 기능은 Analysis Batch와 Draw Chart 메뉴를 연속적으로 수행한 것과 유사합니다. 단, 모노파동 분석 시 유사성의 법칙을 적용한 것입니다. 유사성의 법칙과 관련한 내용은 Glenn Neely의 저서를 참고하시기 바랍니다.
  • Helper Batch → Batch with D 메뉴의 기능도 Analysis Batch와 Draw Chart 메뉴를 연속적으로 수행한 것과 유사합니다. 단, 모노파동 분석 시 방향성 움직임을 고려한 것입니다. 방향성 움직임과 관련한 내용은 Glenn Neely의 저서를 참고하시기 바랍니다.
  • Pattern Helper → Make Monowaves 메뉴는 _EPH 시트에서 모노파동들을 다시 식별해야 할 때 사용합니다. _EPH 시트가 DDE와 연동되어 자동으로 변경되는 경우 사용될 수 있습니다.
  • Pattern Helper → Find Labels 메뉴는 _EPH 시트에서 모노파동들의 구조/진행 기호를 다시 분석해야 할 때 사용합니다. _EPH 시트가 DDE와 연동되어 자동으로 변경되는 경우 사용될 수 있습니다.

3. Fractal Counting 차트 활용

  연속된 up fractal과 down fractal (또는 down to up fractal) 사이에는 반드시 엘리어트 패턴이 존재한다고 합니다. 이러한 패턴들을 찾아내고 파동의 degree를 분석하여 전·후 파동을 연결함으로써 전체 파동의 구조를 파악할 수 있습니다.

  EPH의 Fractal Counting 차트 기능 중 Williams' MFI(Market Facilitation Index)를 기반으로 하는 Profitunity Window 기능을 사용하려면 종목 또는 지수의 거래량 데이터가 필요하므로, HTS를 통해 주가 데이터를 적재할 때 이 항목이 포함되는지를 확인해야 합니다.

  Fractal Counting 차트를 조회하는 과정은 다음과 같이 매우 단순합니다.
  • 아래와 같이 적재한 주가 데이터가 있는 시트에서 Pattern Helper → Draw Chart 메뉴를 실행합니다.
그림 15. Fractal Counting 차트 실행
  • 그림 13과 유사하게 (기존의 생성된 EPH_Charts 시트가 없을 경우에만) 'EPH_Charts'라는 이름으로 별도의 시트가 생성되면서 Fractal Counting 차트가 출력됩니다.
그림 16. Draw Chart 실행 결과
  • Fractal Counting 차트는 Oscillator를 포함하는 캔들 차트를 기본으로 하며, 다음 그림 17과 같이 부가적인 정보를 출력합니다.
그림 17. Fractal Counting 차트
  • A: up fractal과 down fractal을 표시합니다. 연속한 같은 종류의 fractal에 대한 count 여부는 사용자 설정에 따라 달라집니다.
  • B: Bill Williams의 Profitunity Window(Green, Squat, Fade, Fake) 중 Squat을 표시하는데, 검은색 폰트를 기본으로 사용하며, green candle에 이어 바로 squat이 발생된 경우 적색으로 표시됩니다. 
  • 'Sell trend on trend reversing squat. Buy trend on trend continuating squat '이라고 했습니다. 그리고 fractal 전후에서 squat following green, 즉 위 그림의 적색 squat이 발생하는 경우, 추세 전환의 가능성이 많다고 하는군요. 
  • Profitunity Window와 관련한 내용은 Bill Williams의 저서 Trading Chaos를 참고하시기 바랍니다.
  • C: 단순한 wave counting 결과를 표시하는 것으로서, up fractal과 down fractal의 추세 변화가 감지되었을 경우에 해당 fractal의 번호가 표시됩니다.
  • D: fractal과 oscillator 간의 divergence를 'd'로 표시하거나, consolidation이 진행되는 것으로 추정될 경우 'c'를 표시합니다.

4. 더 큰 시간 단위의 데이터 조합 - Time Frame Up

  EPH 1.0은 적재된 주가 데이터로부터 더 큰 시간 단위의 주가 데이터를 조합하는 기능을 제공함으로써 HTS로부터 필요한 시간 단위의 데이터를 따로 적재해야 하는 불편함을 없앴습니다.
  • 다음과 같이 주가 데이터를 적재한 시트 위에서 Data Helper → Time Frame Up 메뉴를 실행합니다.
그림 18. Time Frame Up 실행
  • 생성되는 시트의 이름에는 시간 단위에 따라 각각 _q (15분), _6 (60분), _d (일), _w (주), _m (월) 등의 수식어가 붙습니다.
  • 다음 그림은 위 그림 18의 60분봉 데이터가 포함된 파일에서 메뉴를 두 번 실행한 결과입니다.
그림 19. Time Frame Up 실행 결과
  • 이 메뉴를 통해 생성한 시트 위에서도 2, 3절에서 언급한 기능들을 모두 활용할 수 있습니다.

5. DDE 연동

  EPH 1.0은 증권사 HTS의 DDE 기능을 연동하여 개별 종목이나 지수의 실시간 체결정보를 엑셀 시트에 축적하고 이를 실시간으로 분석하여 차트로 출력하는 기능을 제공합니다.

  이 기능을 사용하기 위해서는 주식이나 지수의 종목 코드가 EPH에 저장되어 있어야 합니다. QuickStart - Installation and Setting 5를 참조하십시요.

  위 '1. 분석 대상 데이터 적재' 과정을 통해 분봉 데이터를 적재한 후 바로 DDE 연동 기능을 사용할 수 있습니다.

  • 아래와 같이  Data Helper → Link HTS DDE 메뉴를 실행합니다. ※ 증권사 HTS의 DDE가 실행되고 있어야 합니다.
그림 20. Link HTS DDE 실행 1
  • DDE 실행파일 이름과 DDE Topic 및 Item을 설정하는 'HTS DDE Link Settings' form이 출력됩니다.
그림 21. Link HTS DDE 실행 2
  • DDE Name: 증권사 HTS에서 제공하는 DDE 실행파일의 확장자를 제외한 파일명을 입력합니다.
  • DDE Topic: 각각의 종목에 대한 DDE 연결자로서 종목코드(Stock Code)나 종목명(Stock Name)을 선택합니다.
  • DDE Items: 종가, 거래량, 체결량, 체결시간에 대한 DDE Item 식별자를 입력합니다.
  • Schedule: DDE 연결 시작 및 종료 시간을 임의로 지정합니다.
  • 키움증권 영웅문의 경우, form의 기본값을 그대로 사용하면 됩니다.
  • 위 항목들을 지정한 후 'Save' 버튼을 클릭하면 아래와 같이 _Quote 시트가 생성됩니다.

그림 22. _Quote 시트
  • _Quote 시트는 '1. 분석 대상 데이터 적재' 과정에서 지정한 시트의 이름에 '_Quote'를 더한 이름으로 생성되며, 위 그림과 같이 네 개의 DDE item(종가, 거래량, 체결량, 체결시간)이 각각 A3에서 D3 열까지 연결됩니다.
  • _Quote 시트는 Fractal Counting 차트를 기본으로 포함합니다.
  • DDE로 연결된 셀의 값이 변경될 때마다 EPH는 적재된 시트의 마지막 캔들에 해당하는 행(row)의 고가와 저가 및 종가값을 변경시키거나 새로운 행을 추가합니다. 마찬가지로 적재된 시트와 연결된 _EPH 시트에 대해서도 비슷한 작업을 합니다.
  • 이와 함께 실시간  분석을 수행하면서 _Quote 시트에 포함된 차트와 그에 대응하는 Wave Structure 차트를 갱신합니다.

그림 23. DDE 연결의 활용 1


그림 24. DDE 연결의 활용 2

그림 25. DDE 연결의 활용 3


2012년 9월 11일 화요일

Elliott Pattern Helper (EPH) 1.0 QuickStart - Installation and Setting

1. EPH Excel Add-In 다운로드
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 


2. EPH Add-In을 Excel AddIns 디렉토리에 저장

  AddIns 디렉토리의 위치는, 엑셀 실행 → Alt + F11 (Visual Basic 편집창) → Ctrl + G ('직접 실행(Immediate Window)' 창) → 'MsgBox Application.UserLibraryPath' 입력 후 엔터키를 누르면 확인할 수 있습니다.


3. EPH Add-In 설치
  • Excel 2007의 경우
3-1. Excel을 실행시킨 후 Excel 옵션창을 띠웁니다.

그림 1. Add In 설치 1

3-2. '추가 기능'을 클릭합니다.

그림 2. Add In 설치 2

3-3. 아래 그림과 같이 '이동' 버튼을 클릭합니다.

그림 3. Add In 설치 3

3-4. 'Elliott Pattern Helper' 체크박스를 설정한 후 '확인' 버튼을 클릭합니다.

그림 4. Add In 설치 4

3-5. 엑셀 시트 위에서 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 띄우면 추가된 Elliott Pattern Helper의 메뉴들이 생성된 것을 확인할 수 있습니다.

그림 5. Add In 설치 완료

  •  Excel 2003의 경우
3-1. Excel을 실행한 후 아래 그림과 같이 '도구'(Tools) 메뉴의 '추가 기능'(Add-Ins)을 선택합니다.

그림 6. Add-In 설치 1

3-2. Add-Ins 설정창에서 사용가능한 Add-In 목록(Add-Ins available)에 'Elliott Pattern Helper'가 있는지 확인합니다.

그림 7. Add-In 설치 2
3-3. 아래 그림과 같이 'Elliottpatternhelper2003' 체크박스를 선택한 후 '확인'(OK) 버튼을 클릭합니다.

그림 8. Add-In 설치 3
3-4. Excel 시트 위에서 마우스 오른쪽 버튼(왼손 마우스의 경우 왼쪽 버튼)을 클릭했을 때  팝업되어 나오는 컨텍스트 메뉴에 아래 그림과 같이 EPH 메뉴가 보일 경우 EPH Add-In이 제대로 설치된 것입니다.
그림 9. Add In 설치 완료

4. EPH 설정

  아래 그림 10과 같이  Data Helper → Settings를 선택하여 'Elliott Pattern Helper Settings' Form을 실행시킵니다.

그림 10. EPH 설정 1

4.1 Labels 설정

  'Labels' Pane의 Date, Volume, Open, High, Low 및 Close 필드에 대응되는 주가 데이터 항목을 각각 입력합니다.

그림 11. Labels 설정 1
 
  대응되는 주가 데이터 항목이란 아래 그림과 같이 증권사 HTS를 통해서 저장한 주가(또는 지수) 데이터의 헤더에 포함된 데이터 항목의 이름을 말합니다.

그림 12. Labels 설정 2

  'Labels' Pane의 'Tick V', 'Tick T' 필드는 DDE 연동을 위한 Sheet('_Quote' sheet) 생성 시 참조하는 DDE Item 항목에 대한 이름으로서 어떤 값을 입력해도 무방합니다.
 
  'Save' 버튼을 클릭하여 설정 내용을 저장합니다.

4.2 Elliott Oscillator 설정

  Elliott Wave Oscillator는 5/35 또는 5/34 MACD oscillator를 말합니다. 아래와 같이 'Elliott Oscillator' Pane에서 oscillator와 signal에 사용될 주기(Period)에 대한 설정을 합니다.

그림 13. Elliott Oscillator 설정

  'MA to use' 콤보 박스는 이동평균 계산에 사용될 기준 가격(또는 지수)을 설정하기 위한 것으로서, 종가를 사용하려면 'Close Values'를 선택하면 됩니다. 고가와 저가의 평균가를 기준가로 사용하려면 'Average Values'를 선택합니다.

  EPH는 두 종류의 차트 기능을 제공합니다. 그 중 하나는 Fractal Counting 차트로서 Oscillator를 포함합니다. 다른 하나는 Wave Structure 차트인데, 이 차트를 출력할 때 Elliott Oscillator를 포함시키려면 'Elliott Chart displays an oscillator' 체크박스를 선택합니다.

4.3 Counting 설정

  EPH는 Elliott wave fractal counting과 oscillator 및 단순 wave counting 결과를 출력하는 Fractal Counting 차트 기능을 제공합니다. 이를 위한 설정을 'Counting' Pane에서 아래와 같이 수행합니다.

그림 14. Counting 설정

  'Chart Type'은 캔들 차트의 종류를 말하는 것으로서 OHLC(Open-High-Low-Close)나 HLC(High-Low-Close) 중 기호에 따라 선택합니다.

  'Consecutive fractals' 콤보박스는 같은 종류(up 또는 down)의 fractal이 연속해서 나타날 때 어떻게 처리할 것인가에 대한 설정을 하기 위한 것입니다. 모두 count하거나 skip할 수 있습니다. Skip은, 연속된 up fractal의 경우 고가가 더 높은 fractal만 count하고, 연속된 down fractal의 경우 저가가 더 낮은 fractal만 count하는 것을 말합니다.

  'Oscillator Type'은 Fractal Counting 차트에 포함될 oscillator의 종류를 선택하기 위한 것입니다. Elliott oscillator나 Williams' MFI 중 하나를 선택합니다. ※ Williams' MFI에 대한 내용은 Bill Williams의 저서를 참고하십시요.

  'Wave Counting'은 up fractal 또는 down fractal의 추세(상승 또는 하락) 변화를 자동으로 count할 것인지를 설정하기 위한 것입니다.

  'Number of Candles'는 fractal formation의 time window를 정의하기 위한 것입니다. 가령, 일봉이나 주봉 또는 그 이상의 차트의 경우 일반적으로 5-bar formation을 사용하며, 분 단위 차트의 경우 7-bar, 9-bar 또는 더 큰 formation을 적절히 사용합니다.

4.4 Chart Size 설정

  'Chart Size' Pane에서 EPH를 통해 생성되는 모든 차트들에 대해 크기와 위치 속성을 설정합니다.

그림 15. Chart Size 설정

  'Chart Size (W×H)' 필드에 차트의 폭(Width)과 높이(Height)를 설정합니다.

  'Monowave Chart' 필드에는 Pattern Helper → Wave Structure 메뉴를 통해 출력되는 부분 차트의 폭과 높이를 각각 설정합니다. 이 차트의 경우 위치 속성은 정의할 수 없습니다.

  'Chart Position (XY)' 필드에는 차트의 X-position과 Y-position을 각각 설정합니다. 마지막으로 'Number of Candles' 필드에는 차트에 포함될 캔들(또는 bar)의 수를 설정합니다.

  'Save' 버튼을 클릭하여 설정 내용을 저장합니다.

5. 주식 종목코드(Stock Code) 적재

  증권사 HTS의 DDE 기능을 연동하여 종목이나 지수의 실시간 체결정보(체결량, 체결시간)를 엑셀로 축적하기 위해 종목코드를 EPH에 저장합니다.

  ※ DDE 연동 기능을 사용하지 않을 경우 이 작업을 생략할 수 있습니다.
  ※ 이 작업은 EPH 설치 후 한 번만 수행하면 됩니다. 물론, 신규 상장/등록되는 종목들의 목록을 등록해야 할 경우 다시 수행해야 합니다.

그림 16. 종목코드 적재 1

  위 그림과 같이 HTS를 통해 종목코드 목록을 엑셀 시트로 복사한 후, EPH의 Data Helper → Save Stock Codes 메뉴를 실행합니다.

그림 17. 종목코드 적재 2

  위 화면과 같이 'Loading Stock Codes' form에 종목코드 열과 종목명 열을 각각 지정하여 'Save' 버튼을 클릭하면 종목코드 목록이 EPH에 저장됩니다.

2012년 9월 7일 금요일

Elliott Pattern Helper 1.0 Release

※ Elliott Pattern Helper Add In
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 

  안녕하세요?

  예고해드린 바와 같이 Elliott Pattern Helper 1.0을 릴리즈 합니다. 위 링크를 통해 다운로드 받으실 수 있습니다.

  다운로드 받은 파일(ElliottPatternHelperR.xlam 또는 ElliottPatternHelperR.xla)을 Excel AddIns 디렉토리에 저장하십시요. AddIns 디렉토리의 위치는, 엑셀 실행 → Alt + F11 (Visual Basic 편집창) → Ctrl + G ('직접 실행(Immediate Window)' 창) → 'MsgBox Application.UserLibraryPath' 입력 후 엔터키를 누르면 확인할 수 있습니다.

  엑셀을 실행한 후 추가 기능(Add-Ins) 설정화면으로 가면 'Elliott Pattern Helper Revision'을 볼 수 있을 것입니다.

  별도의 매뉴얼을 작성해야 할까 고민 중입니다. 이전 글에 개선된 기능과 그 위주의 사용법을 간략히 소개하였으니 참고하시기 바랍니다.

  사용하시는데 있어 불편한 점이나 오류를 찾으시는 경우 알려주시면 고맙겠습니다. 파동 분석에 조금이라도 도움이 되길 바랍니다. 감사합니다.

  참고로, 엑셀 2003의 경우 2007 이후 버전에 비해 차트 기능의 성능이 매우 떨어집니다. 그런 이유로 EPH 2003 버전의 실시간 차트 기능 또한 성능이 좋지 못함을 양해바랍니다.


Time-Series Analysis and Forecasting

  시계열(time-series) 데이터를 분석하고 그 결과를 기반으로 향후 흐름을 예측하고자 하는 노력은 다양한 분야에서 지속적으로 이루어져 왔습니다. 주가 예측도 마찬가지겠지요.

  이번 글에서는 주가 예측을 위한 한 가지 방법을 소개하고, 실제 구현하여 테스트한 결과를 공개하고자 합니다. 과거에 발표되었던 논문을 기준으로 한 것이며, 이 방법에 의한 예측 결과를 실제 투자의 기준으로 활용하는 것은 부적절함을 미리 알립니다.

  ※ 참고 논문: Tai-Liang Chena, Ching-Hsue Chenga, Hia Jong Teoh, 'Fuzzy time-series based on Fibonacci sequence for stock price forecasting', 2007


1. 예측 방법
  • 과거의 주가 데이타를 fuzzy (linguistic) value들의 time-series로 정의합니다.
  • 시점 t에서의 fuzzy value를 Lt라고 하면 LtLt+1 처럼 fuzzy value 간의 relation(FLR; Fuzzy Logic Relation)이 식별됩니다. 
  • FLR들의 빈도에 따라 가중치를 두어 예측치를 계산합니다.
  간단하게 얘기하면, 오늘의 주가에 대응하는 fuzzy value가 Li 이고, 과거에 발생했던 Li 를 시점으로 하는 FLR들이 LiLi1, LiLi2, ..., LiLik 일 때, Li1Li2, ..., Lik 의 defuzzified value들의 가중평균을 내일의 주가 예측치로 사용하는 것입니다.

  위 논문에서는 더 나아가 Fibonacci 수열과 유사한 형태의 식을 활용하여 최종 예측치를 계산하는데요, 그 식은 다음과 같습니다.


2. 예측 equation
그림 1. 예측 Equations

   위의 첫 번째 식이 '1. 예측 방법'에서 설명한 과정을 하나의 식으로 표현한 것입니다. 두 번째 식이 논문의 저자들이 얘기한 Fibonacci 수열입니다.

  이 식에 포함된 상수 α, β는 [-1, 1] 구간의 실수로서 과거 데이터와 그에 대한 예측치 간의 차이, 즉 error measure를 최소화하는 것으로 선택됩니다. (Error measure로는 root mean square error를 사용했습니다.)

  논문에는 상수 α, β를 도출하는 과정에 대한 구체적인 내용이 없이 0.1과 -0.1이 각각 사용되었습니다. 그 값을 그대로 적용하는 것은 이론적으로나 논리적으로 부적절할 것입니다. 그렇다고 다양한 값들에 대해 테스트를 하여 도출하는 것은 무모하리만큼 소모적인 일이겠지요. 그래서 최적화 방법 중의 하나인 Particle Swarm Optimization(PSO) 기법을 구현하여 테스트를 했습니다. 


3. 테스트 결과

  2009년 11월18일부터 2012년 9월6일까지 700개의 LG전자 주가 데이터에 대해 테스트한 결과는 다음과 같습니다.

그림 2. 테스트 결과
  위 그림은 전체 데이터 중 최근 80개 데이터를 차트로 출력한 것입니다. 하늘색 선이 실제 주가의 움직임이고, 붉은색과 녹색이 각각 Fibonacci 수열식을 적용하기 전과 후의 예측 결과입니다.

  관측 기간의 최고가와 최저가는 각각 128,000원, 54,600원이며, 전체 데이터 구간(Universe of discourse)을 54,500에서 128,500까지로 설정하고, 이를 20개의 fuzzy linguistic value로 구분하여 테스트를 수행했습니다. PSO에 의해 도출된 상수 α, β의 값은 각각 -0.1, 0.03이었습니다.


4. 결 론

  그림 1의 두 번째 식, 즉 Fibonacci 수열식을 적용한 예측치 파동의 모양이 실제 주가 파동의 모양과 거의 유사한 것을 그림 2에서 확인할 수 있습니다.

  하지만 파동의 방향이 변하는 지점에서는 실제 파동의 방향과 예측치의 방향이 반대 방향임을 알 수 있습니다. 따라서 실제 주식 매매에 활용하기에는 한계가 있다고 봐야겠습니다.

  이 한계를 극복할 방법을 찾을 수 있을까요? 아니면 일찌감치 다른 예측 모델을 연구해 볼까요?