Twitter Facebook github

FT2用インジケーターを作る(C++編)

この記事は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として開始します。

a07c90e97a17a00ac8c94659b7ca3801

アプリケーションウィザードが表示されたら、Nextをクリックします。

Application Settingsでは次の変更を加えて、Finishをクリックします。

  • Application type: DLLを選択
  • Additional options:
    • Empty project: チェックを入れる
    • Security Development Lifecycle (SDL) checks: チェックを外す

5de2235fd85802a9dfbd93359f5938aa

プログラムの準備

作成したプロジェクトのディレクトリを開きます。デフォルトでは マイドキュメント/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にリネームしておきます。

830981bd5c4a3555e792c2259809a374

ディレクトリにファイルをコピーしただけではVisualStudio内から参照できませんので、
これらのファイルを選択したまま、VisualStudioのソリューションエクスプローラーにドラッグ&ドロップします。

388e22447efc2654e0073eba22c6dd4e

ソリューションエクスプローラーに表示されればOKです。

コンパイルオプションの設定

Project->Propertiesをクリックしてプロパティを表示します。

C/C++にあるCode Generationをクリックして、左上のConfigurationがDebugになっていることを確認して、Runtime Libarary を Multi-threaded Debug (/Mtd) に変更して適用を押します。

af3f4f2ed6e107294f60e9eb15a04b9e

左上のConfigurationをReleaseに変更して、Runtime Library を Multi-threaded (/MT) に変更して適用を押します。

b95e6e656d6283bac3a94a0100697a98

この設定により、C++ランタイムがDLLに静的リンクされ、参照時にVC++ランタイムが必要なくなります。

次に左パネル内でLinkerにあるInputをクリックして、左上のConfigurationを All Configuration に変更します。

Module Definition Fileに MyIshimoku.def のファイルパスを入力します。

ea7b406b61c5804a394b1afa54b59173

これを設定しないと、FT2へDLLを読み込ませた時にエラーになります。

ここまで完了したら、OKボタンを押してプロパティを閉じます。

ソースコードの編集

今回もインジケーター名だけを変更することにします。

VisualStudioのソリューションエクスプローラーから MyIshimoku.cpp を開きます。

24行目の IndicatorShortName 関数の引数を MyIshimoku に変更して保存します。

dad6a8de7b6027695409279d481d3fa1

ビルドして使ってみる

Build->Build Solutionをクリックしてビルドを実行します。

成功すれば次のようなメッセージが表示されます。

c860d3cd15dcb64e0b533f4806fdb5b3

DLLファイルはプロジェクトディレクトリの下のDebugかReleaseディレクトリに入っています。どちらでも構いませんが、配布する際はReleaseビルドを実行しましょう。

早速FT2に取り込んでみましょう。インストールの仕方はPascal編と同じです。

b0cd74b45d112a1e76c0d924ab0c674c

ちゃんと一目均衡表がチャート上に表示されれば完了です。お疲れ様でした。

所感

個人的にはC++が好きなので、この方法で作っていこうと思います。

インジケーターや自動売買のプログラムを考えていると、プログラムを書くことができて本当に良かったと感じます。プログラミングを学びたい人にとっても良い目標になるのではないでしょうか。

コメントを残す

メールアドレスが公開されることはありません。