ドキュメント
アプリケーション
最終更新日:2020年5月18日(マーク・フリック)
チャート – 1時間あたりの承認された戦略
ページのコンテンツ
エンジンチャートは、エンジン内に表示される小さなチャートです。たとえば ヒープメモリチャート または 1時間あたりの平均ストラテジー数 チャート.
SQ Xのほとんどの物事と同様に、これらのチャートは以下を使用して実装されています スニペット, 、つまり拡張可能であるということです。そこに独自のチャートを追加することができます。.
ステップ1 – コードエディターを開く
コードエディターアイコンをクリックしてエディターに切り替えてください。.
ステップ 2 – 新しいエンジンチャートのスニペットを作成する
まだエンジンチャート用のウィザードはありませんが、既存のスニペットを簡単にクローンして、1時間あたりの承認された戦略を表示するように変更できます。.
右側のナビゲーターツリーで、「Snippets -> SQ -> Engine charts」に移動し、「AverageStrategiesPerHour.java」を右クリックして、「複製(Clone)」を選択します。.
新しいファイルの名前をAcceptedStrategiesPerHourにします。.
これにより、1時間あたりの平均戦略を表示する既存のスニペットのコピーが作成されます。あとは、平均の代わりに1時間あたりの承認された戦略を表示するように変更するだけです。.
ステップ 3 – スニペットを修正する
修正すべき箇所は実際にはあまりありません。スニペットやチャート名のような分かりやすい部分を変更し、修正が必要な唯一のメソッドは、チャートの次の値を設定する addNextValue() メソッドだけです。.
そこから修正します
series.addValue(System.currentTimeMillis(), projectRunInfo.strategiesPerHour);
へ
series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour);
このコード片に関しては、SQがすでにこの統計量を計算しているため、新しいチャートを作成してそれを使用するだけでよく、私たちは幸運でした。.
ステップ4 – SQの再コンパイルと再起動
すべてのエンジンパネルで新しいチャートが利用可能になることがわかります:
これがスニペットの全コードです:
package SQ.EngineCharts;
import org.json.JSONObject;
import com.strategyquant.lib.*;
import com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*;
public class AcceptedStrategiesPerHour extends EngineChart {
private TimeSeriesLineChart chart = null;
private TimeSeries series = null;
private ProjectRunInfo projectRunInfo = new ProjectRunInfo();
private ProjectRunInfo oldProjectRunInfo = new ProjectRunInfo();
private int checksSinceLastChange = 0;
public AcceptedStrategiesPerHour() {
super(L.t("Accepted strategies per hour"), TYPE_PROJECT_BASED);
this.chart = new TimeSeriesLineChart();
this.chart.yAxisTitle = L.t("Strategies");
this.chart.xAxisTitle = L.t("Time");
this.chart.maxTicksLimit = 4;
this.chart.yAxisRangeMin = 0;
this.series = new TimeSeries(L.t("Accepted str. per hour"), 20);
this.series.color = ChartsConst.COLOR_GREEN;
((TimeSeriesLineChart)this.chart).addSeries(series);
oldProjectRunInfo.totalJobsDone = -1;
checksSinceLastChange = 0;
}
@Override
public JSONObject print() {
JSONObject data = new JSONObject();
project.loadTrackingInfo(projectRunInfo, false);
checksSinceLastChange++;
if((oldProjectRunInfo.totalJobsDone == -1 || projectRunInfo.totalJobsDone != oldProjectRunInfo.totalJobsDone) || checksSinceLastChange > 10) {
// refresh only if something changed
oldProjectRunInfo.totalJobsDone = projectRunInfo.totalJobsDone;
checksSinceLastChange = 0;
data.put("type", DATA_TYPE_CHART);
data.put("chart", this.chart.toJSON());
return data;
} else {
return null;
}
}
@Override
public void addNextValue() {
try {
series.addValue(System.currentTimeMillis(), projectRunInfo.acceptedStrategiesPerHour);
} catch(Exception e) {
Log.error("Exc.", e);
}
}
}
この記事は参考になりましたか? この記事は役に立った この記事は役に立たなかった


