Top > OOoSDK > addinFunction > ichimoku

ビルドとインストール

相場のテクニカル分析パッケージ Package for Technical Analysis of a Market Price

ソースコードをダウンロードする

XTechnicalAnalysis.idl = Definition of the add-in interface

technicalanalysis.cxx = Implementation of the add-in functions

technicalanalysis.map = Version script

解説

相場のテクニカル分析にて常用される指標を計算します。

Calculates indices popular for techinical analysis of a market price.

仕様

実装したアドイン関数は以下の通りです。

  • Statistical
SPAREMANRCI
Spearman の順位相関指数
  • Financial
ICHIMOKULINE
一目均衡表の転換線、基準線、先行スパン B
STOCHASTICS_K
ストキャスティクスの %K
STOCHASTICS_D
ストキャスティクスの %D
RSI
RSI(相対力指数)

ビルドとインストール

手元では SDK 環境下で make できないので、以下の通りすべて手動で行なっ ています。OS は FreeBSD-current、OOo は /usr/local/OpenOffice.org1.1.0、 ソースおよびカレントディレクトリは ~/TechnicalAnalysis、SDK は ../odk645 にあるとします。

  • 1. Generate C++ headers
  1. C++ ヘッダの生成
    % idlc -I../odk645/idl XTechnicalAnalysis.idl
    % regmerge technicalanalysis.rdb /UCR XTechnicalAnalysis.urd
    % cppumaker -B/UCR /usr/local/OpenOffice.org1.1.0/program/types.rdb
    % cppumaker -B/UCR technicalanalysis.rdb /usr/local/OpenOffice.org1.1.0/program/types.rdb
  • 2.ビルド
  1. ビルド
    % c++ -O -pipe -g -I. -I../odk645/include -DFREEBSD -DCPPU_ENV=gcc3 
    -fno-for-scope -fpermissive -fno-rtti -fexceptions -fPIC -DPIC -c -o 
    technicalanalysis.So technicalanalysis.cxx
    % c++ -shared -Wl,--version-script technicalanalysis.map 
    -L/usr/local/OpenOffice.org1.1.0/program -lcppuhelpergcc3 -o 
    libtechnicalanalysis.so technicalanalysis.So
  • 3.インストール
  1. インストール
    % mkdir -p ~/OpenOffice.org1.1.0/user/uno_packages/cache
    % regmerge ~/OpenOffice.org1.1.0/user/uno_packages/cache/types.rdb /
    technicalanalysis.rdb
    % cp -p libtechnicalanalysis.so ~/OpenOffice.org1.1.0/user/uno_packages/cache/
    % cd ~/OpenOffice.org1.1.0/user/uno_packages/cache/
    % regcomp -register -r services.rdb -br 
    ~/TechnicalAnalysis/technicalanalysis.rdb -c libtechnicalanalysis.so

インストールできたら、LD_LIBRARY_PATH に

/OpenOffice.org1.1.0/user/uno_packages/cache

を追加して calc を起動し、アドイン関数が利用できることを確かめて下さい。

Linuxによるビルド

Linux では version script 無しでもコンパイル可能です。

以下の Makefile を使えば、gcc3 環境の場合ですが、make を使って比較的 簡単にコンパイルすることが出来ます。

#--- setup.mk ---

SRCDIR=/.../cws_fix645_ooo111fix2
APPDIR=/.../OpenOffice.org1.1.1/program

PRJ=$(SRCDIR)/odk/unxlngi4.pro/bin/odk645
PRJBIN=$(PRJ)/linux/bin
SOLVERDIR=$(SRCDIR)/solver/645/unxlngi4.pro/lib
SRCINCDIR=$(SRCDIR)/offuh/unxlngi4.pro/inc
CPP_INCLUDES=-I$(PRJ)/include -I$(PRJ)/idl -I$(SRCINCDIR) -I.
CPP_DEFINES=-DUNX -DGCC -DLINUX -DCPPU_ENV=gcc3
CPP_LIBS=-L$(APPDIR)
CPP_SHAREDLIBS=-lsal -lcppuhelpergcc3 -lcppu -lstlport_gcc
CPP_SHARED_FLAGS=-fPIC -fno-common -fno-rtti -export-dynamic
CPP=g++
#--- Makefile ---

include setup.mk

XNAME=XTechnicalAnalysis
FILENAME=technicalanalysis
LIBNAME=lib$(FILENAME)
all: idl $(LIBNAME).so

idl: $(XNAME).idl
        export LD_LIBRARY_PATH=$(APPDIR) && \
        $(PRJBIN)/idlc $(CPP_INCLUDES) $< && \
        $(PRJBIN)/regmerge $(FILENAME).rdb /UCR $(XNAME).urd && \
        $(PRJBIN)/cppumaker -BUCR $(APPDIR)/types.rdb && \
        $(PRJBIN)/cppumaker -BUCR $(FILENAME).rdb $(APPDIR)/types.rdb

$(FILENAME).o: $(FILENAME).cxx
        $(CPP) $(CPP_INCLUDES) $(CPP_DEFINES) $(CPP_LIBS) -o $@ $(CPP_SHARED_FLAGS) -c $<

$(LIBNAME).so: $(FILENAME).o
        export LD_LIBRARY_PATH=$(APPDIR) && \
        $(CPP) -shared -Wl,-soname,$@ -o $@ -lc $< && \
        $(PRJBIN)/regcomp -register -r $(FILENAME).rdb -c $@

regview:
        export LD_LIBRARY_PATH=$(APPDIR) && \
        $(PRJBIN)/regview $(FILENAME).rdb

setup.mk で環境設定します。SRCDIR と APPDIR だけ自分の環境に合わせて 指定しておけば、後の部分はそのままでいいと思います。SRCDIR は OO.o ソース、APPDIR は OO.o のインストールされた場所をそれぞれ指しています。

ちなみに、独自ビルドを持っている場合は、SDK を別に用意する必要はありません。ですが、OO.o のバイナリが 作られた同じソースを使用しないと多分コンパイルしないか、しても動作時に Segmentation fault する可能性があります。(確認はしていませんが)

独自ビルドをもっていない場合は、SDK は必要です。その際には setup.mk 内の PRJ パラメタを SDK のベースディレクトリに指定して下さい。

setup.mk と Makefile の両方を *.idl と *.cxx のある同じ ディレクトリに保存した後、

$ make

と打てば libtechnicalanalysis.so をちゃんと作ってくれます。


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes