overChartがfalseのインジケータがチャート上にプロットされると、新しいインジケータパネルが作成されます。
(overChartについては
https://www.dukascopy.com/client/javadoc/com/dukascopy/api/indicators/IndicatorInfo.html#isOverChart())indicator
)
ストラテジーから、以下パネル操作を実行できます。
- 同じパネルにインジケータを追加します。
- パネルにチャートオブジェクトを追加します(他オブジェクトも実行します)。
- パネルからすべてのインジケータを削除して、パネルを削除します。
チャートオブジェクトを各IChartPanelハンドラ(メインチャートを含む)に実装するには注意しなければなりません。
- チャートパネルのキーはユニークです。
- 異なるチャートパネルに同じIChartObjectを追加する事は出来ません。
インジケータとチャートオブジェクトの作成
addIndicatorメソッドを使用して同じIChartPanelに他インジケータを追加する事が出来ます。
IChartPanel.addメソッドを使用してチャートオブジェクトを追加出来ます。
IIndicator.getIndicatorInfo().isOverChart() = falseのインジケータのみ、インジケータパネルに追加できる事に注意して下さい。
isOverChart() = trueの場合はメインチャートにのみ追加できます。
以下サンプルは、異なる期間の2つのRSIインジケータを同じインジケータパネルに追加します。
サンプルソースコード:
IndicatorPanelAddStochAndHLines.java
インジケータとインジケータパネルの削除
IChartPanel.removeIndicatorメソッドを呼び出して、インジケータを削除します。
最後のインジケータパネルのインジケータを削除すると、パネルも削除されます。
checking IChartPanel.isActive()でメインチャートの下に、未だパネルがあるかチェック出来ます。
全アクティブインジケータパネルはIChart.getSubPanels()メソッドを呼ぶ事で取得出来ます。
以下サンプルは、ストラテジー停止時に全インジケータパネルを削除します。
@Override
public void onStop() throws JFException {
while(chart.getIndicatorPanels().size() > 0){
IChartPanel panel = chart.getIndicatorPanels().get(0);
for (IIndicator indicator : panel.getIndicators()) {
panel.removeIndicator(indicator);
}
}
}