この記事はPascal編の内容をC++向けに書き換えたものです。
Forex Tester 2で読み込める、一目均衡表のテクニカルインジケーターを描画するDLLを作成することをゴールにします。
Pascal編と同様の部分は省略していますので、先にそちらの記事をお読みなることをお勧めします。
環境
- Windows 10 64 bit
- Visual Studio Community 2015
- ForexTester 2 v2.9.6
コンパイラのインストール
今回C++のビルドにはMicrosoftのVisual Studioを使います。
次のリンクからCommunityエディションをダウンロードしてください。
https://www.microsoft.com/ja-jp/dev/products/community.aspx
インストールしたら起動します。
なお、私のマシンでは日本語言語パックを適用していないので英語の表示になります。メニューの位置などは同じですので、適宜読み替えてください。
プロジェクトの作成
File->New->Project をクリックして、Installed->Templates->Visual C++ を選択します。
この時点で Win32->Win32 Project が選択できれば良いのですが、選択できない場合は Install~ など書かれたメニューで Visual C++ 用の追加パッケージをインストールする項目を実行してください。
インストールが完了してVisual Studioを再起動すると、Visual C++からWin 32 Projectを選択できるようになっています。
今回はPascal編と違い、サンプルの関係上、プロジェクト名をMyIshimokuとして開始します。
アプリケーションウィザードが表示されたら、Nextをクリックします。
Application Settingsでは次の変更を加えて、Finishをクリックします。
- Application type: DLLを選択
- Additional options:
- Empty project: チェックを入れる
- Security Development Lifecycle (SDL) checks: チェックを外す
プログラムの準備
作成したプロジェクトのディレクトリを開きます。デフォルトでは マイドキュメント/Visual Studio 2015/Projects/MyIshimoku
です。分からないときは、VisualStudioのソリューションエクスプローラーからMyIshimokuを右クリックして、Open Folder in File Explorerをクリックしましょう。
今回は名前から分かるとおり、一目均衡表を追加しようとしています。(FT2のサンプルに他のが同梱されていないためです。)
FT2のインストールディレクトリ下のExamples/Indicators/C++にある、拡張子がhのファイル2つと、サンプルの2ファイルを選択します。
- Examples/Indicators/C++/IndicatorInterfaceUnit.h
- Examples/Indicators/C++/TechnicalFunctions.h
- Examples/Indicators/C++/Ishimoku.cpp
- Examples/Indicators/C++/Ishimoku.def
上の4ファイルをプロジェクトディレクトリにコピーします。
Pascal編同様に、Ishimoku.cppとIshimoku.defをそれぞれMyIshimoku.cppとMyIshimoku.defにリネームしておきます。
ディレクトリにファイルをコピーしただけではVisualStudio内から参照できませんので、
これらのファイルを選択したまま、VisualStudioのソリューションエクスプローラーにドラッグ&ドロップします。
ソリューションエクスプローラーに表示されればOKです。
コンパイルオプションの設定
Project->Propertiesをクリックしてプロパティを表示します。
C/C++にあるCode Generationをクリックして、左上のConfigurationがDebugになっていることを確認して、Runtime Libarary を Multi-threaded Debug (/Mtd) に変更して適用を押します。
左上のConfigurationをReleaseに変更して、Runtime Library を Multi-threaded (/MT) に変更して適用を押します。
この設定により、C++ランタイムがDLLに静的リンクされ、参照時にVC++ランタイムが必要なくなります。
次に左パネル内でLinkerにあるInputをクリックして、左上のConfigurationを All Configuration に変更します。
Module Definition Fileに MyIshimoku.def のファイルパスを入力します。
これを設定しないと、FT2へDLLを読み込ませた時にエラーになります。
ここまで完了したら、OKボタンを押してプロパティを閉じます。
ソースコードの編集
今回もインジケーター名だけを変更することにします。
VisualStudioのソリューションエクスプローラーから MyIshimoku.cpp を開きます。
24行目の IndicatorShortName
関数の引数を MyIshimoku に変更して保存します。
ビルドして使ってみる
Build->Build Solutionをクリックしてビルドを実行します。
成功すれば次のようなメッセージが表示されます。
DLLファイルはプロジェクトディレクトリの下のDebugかReleaseディレクトリに入っています。どちらでも構いませんが、配布する際はReleaseビルドを実行しましょう。
早速FT2に取り込んでみましょう。インストールの仕方はPascal編と同じです。
ちゃんと一目均衡表がチャート上に表示されれば完了です。お疲れ様でした。
所感
個人的にはC++が好きなので、この方法で作っていこうと思います。
インジケーターや自動売買のプログラムを考えていると、プログラムを書くことができて本当に良かったと感じます。プログラミングを学びたい人にとっても良い目標になるのではないでしょうか。