インジケータはローソク足価格(OHLC)に基づいて算出します。
IIndicatorインターフェースはインジケータ実装に最低限必要な以下定義を含んでいます。
- 新しいインジケータインスタンスが作成される度に初期化関数が呼び出されます
- メタ情報を取得するメソッド
- 入力配列と出力配列を設定する為のJForexで使用するメソッド
- 算出ロジックの為のメソッド
onStartメソッド
onStartメソッドはインジケータを初期化します。
このメソッドはチャートにインジケータを取り付けた時や、
ストラテジーがインジケータ値を算出している時に呼び出されます。
IIndicatorContextはメソッドにパラメータとして渡されます。
これはインジケータ機能に必要なサブシステムへのアクセスを提供します。
- IConsoleはメッセージタブでのメッセージ出力を提供します
- IIndicatorsProviderは登録されたインジケータへのアクセスを提供をします
onStartメソッドは
IndicatorInfo,
InputParameterInfo,
OptInputParameterInfo,
OutputParameterInfo
のようなオブジェクトを作成や塗りつぶしに使用されます。
システムがonStartメソッドの処理を停止した時、
記述子オブジェクト(OutputParameterInfoのシフトパラメータを除く)は変更しないで下さい。
getXXXInfoメソッド
- getIndicatorInfoメソッドは、インジケータ名や出力数のような共通のインジケータパラメータを記述するオブジェクトを返します。
- getInputParameterInfoメソッドは、インジケータ入力パラメータを記述するオブジェクトを返します。
値は、ローソク足価格か、価格の全てか、平均値でなければなりません。
- getOptInputParameterInfoメソッドは、オプション入力パラメータ記述を返します。
オプション入力はインジケータ算出に使用される変更可能な値です。
- getOutputParameterInfoメソッドは、インジケータ出力を記述するオブジェクトを返します。
このオブジェクトにはアウトプットと色属性が含まれます。
setXXXParameterメソッド
- setInputParameterは入力データ配列をセットします。
- setOptInputParameterはオプション入力パラメータをセットします。
- setOutputParameterはアウトプットデータ配列をセットします。
渡されたパラメータの型はgetXXXInfoメソッドによって異なる記述オブジェクトが返されます。
getLookbackメソッド
getLookbackメソッドはインジケータ算出する基準点の前に続く値の数を指定します。
例えば、20期間のSMAインジケータの場合、基準点の値を計算する為に、
インジケータ算出する基準点の前に続く20本の価格データを事前に必要とします。
20期間のSMAインジケータに30サイズのインプット配列を渡した場合、
SMAインジケータは20本前の値を算出する為のルックバック価格データが不足しているので、
21番目の配列からのみ算出出来ます。
多くのインジケータのルックバックは、時間軸期間のようなパラメータに依存します。
getLookforwardメソッド
getLookforwardメソッドは、インジケータ計算する基準点の後に必要な値を指定します。
例えば、フラクタルインジケータは、
基準点の値を算出する為に、インジケータ算出基準点の後の2本のローソク足を必要とします。
calculateメソッド
メインのcalculateメソッドです。
calculateメソッドは全パラメータをセットした時に呼び出されます。
このメソッドは2つのインデックスを受け取ります。
- startIndexは対応するアウトプット算出の入力配列の最初の要素のインデックスです。
- endIndexはアウトプット算出の入力配列の最後の要素のインデックスです。
普通は、startIndexには0をセットし、endIndexにはインプット配列の"配列数 - 1"をセットします。
For the indicator flexibility, it is not desirable to make any suggestions.
startIndexに0をセットした場合、it is not necessary that output has a value for corresponding input element with index 0.
IndicatorResultが返すisfirstValueIndex(入力配列の要素の開始インデックス)があります。
IndicatorResultのlastValueIndex属性とlookforward属性は同じです。
要素数30のインプット配列で、startIndex が0でendIndex が29のSMAインジケータがcalculateメソッドで呼ばれた場合、
そして期間が20の場合、インジケータのfirstValueIndexは20、lastValueIndexは29になります。
メソッドはIndicatorResultオブジェクトを返します。
このオブジェクトは以下3つの属性を持っています。
- firstValueIndex
- lastValueIndex
- numberOfElements(アウトプット配列に書き込まれた算出した値の数)
算出した値(int型配列ならInteger.MIN_VALUE、double型ならDouble.NaN)は指定した方法でスレッドされます。
ライン描画中はスキップされます。
ラインはNaNの値では無く、直前の値から次の値が描画されます。
アウトプット記述子のgapAtNaN属性がtrue設定の場合、ギャップが描画されます。