読者です 読者をやめる 読者になる 読者になる

FXボーグ | テクニカル実験室

テクニカル分析を使った自動売買プログラムの開発に挑戦!

スポンサーリンク

NinjaTrader へインジケーターを移植。

前回の気になっていたソフトはイマイチだったので、やはりNinjaで行こうと思います。まずは「Accel MA」を既存のソースを参考に移植してみました。

f:id:fxborg:20160712224905p:plain

NinjaTraderのインジケーターやストラテジー(EA)は「Ninja Script」 というC#を拡張した言語で作られています。こちらに英語のリファレンスもありますが、既存のソースを見た方が理解しやすそうです。

エディターの起動は、メニューの [New] - [Ninja Script Editor ]から行けます。

f:id:fxborg:20160712231905p:plain

こんな感じです。右サイドに既存のソースがたくさんあるので、これを読めばなんとかなりそうですね。

プログラムの構成

インジケーターのプログラムの構成はC#らしくインポートから始まります。

f:id:fxborg:20160712233050p:plain

この部分は特に変更する必要はなさそうです。リージョンをたたむと見やすいですね。

f:id:fxborg:20160712233628p:plain

ソースはこんな感じの構成になっており「Indicator」クラスを継承しているようです。計算用のバッファは Series<T>として定義するみたいですね。またインスタンス変数やList<T>なども普通に使えます。

※Series<T>クラスとは

Series<T>はチャートのバ​​ーと同じ要素数のリストを保持することが可能なデータ構造の特殊なジェネリック型です。(詳しくはリファレンス参照してね)

 

インジケーターのパラメータ等はプロパティとして定義します。

f:id:fxborg:20160712235354p:plain

また、チャート上に表示されるバッファもここに定義するようです。

 

続いて、初期化時のコードです。OnStateChange()というイベントで実装します。

f:id:fxborg:20160712235826p:plain

ここはパラメーターのデフォルト値の設定と初期化処理を書きます。

最後にメインの処理です。OnBarUpdate() イベントで実装します。

f:id:fxborg:20160713000555p:plain

Series<T>では0が最新のバーを指すのでMQL4と少し似ています。

ソースはこちらからどうぞ。
Indicators/AccelMA.cs

最後に

なんとかNinjaTraderへインジケーターを移植できました。まだまだ分からないことも多いですが、これで目処が立ちそうです。このバックテストのスピードと信頼性があればもっと簡単にEAを作れるんじゃないかと期待しています・・・。