ドキュメント
アプリケーション
最終更新日:2020年11月10日(マーク・フリック)
カスタムJARライブラリの使用
注意:これはSQ X Build 130から利用可能な、新しく実験的な機能です。.
スニペット内で独自のカスタムJava JARライブラリを使用できるようになりました。.
JARを配置するだけです /user/libs StrategyQuantのインストールフォルダ内のフォルダに配置し、SQを再起動すれば、スニペットからそれらを呼び出せるようになるはずです。.
例えば、TA4Jライブラリから呼び出されるサンプルRSIインジケーター(https://github.com/ta4j/ta4jこのライブラリのコアJARをダウンロードできます ここ.
それからそれを置きます /user/libs フォルダ – もし /libs サブフォルダはまだ存在しません: ユーザー フォルダを作成します。.
それでは、スニペットで使用できるようになります。CodeEditorを開き、TA4Jライブラリによって計算されたRSIインジケーター用の新しいサンプルスニペットを作成してください:
package SQ.Blocks.Indicators.RSIta4j;
import java.sql.Timestamp;
import java.time.Duration;
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import org.ta4j.core.BarSeries;
import org.ta4j.core.BaseBarSeries;
import org.ta4j.core.indicators.RSIIndicator;
import org.ta4j.core.indicators.helpers.ClosePriceIndicator;
import com.strategyquant.datalib.DataSeries;
import com.strategyquant.datalib.TradingException;
import com.strategyquant.tradinglib.BuildingBlock;
import com.strategyquant.tradinglib.ChartData;
import com.strategyquant.tradinglib.Colors;
import com.strategyquant.tradinglib.Indicator;
import com.strategyquant.tradinglib.Output;
import com.strategyquant.tradinglib.Parameter;
import com.strategyquant.tradinglib.ParameterSet;
import com.strategyquant.tradinglib.ReturnTypes;
import SQ.Internal.IndicatorBlock;
@BuildingBlock(name="(RSI ta4j) Relative Strength Index", display="RSIta4j(#Period#)[#Shift#]", returnType = ReturnTypes.Number)
@Indicator(oscillator=true, middleValue=50, min=0, max=100, step=0.5)
public class RSIta4j extends IndicatorBlock {
@Parameter(category="Default", name="Input", defaultValue="0")
public ChartData Input;
@Parameter(defaultValue="14", minValue=2, maxValue=10000, step=1)
public int Period;
@Output(name = "RSIta4j", color = Colors.Red)
public DataSeries Value;
private RSIIndicator rsi;
private ZonedDateTime zdt;
private BarSeries series = new BaseBarSeries("series");
private long lastTime = 0;
//------------------------------------------------------------------------
//------------------------------------------------------------------------
//------------------------------------------------------------------------
@Override
protected void OnInit() throws TradingException {
ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
rsi = new RSIIndicator(closePrice, Period);
}
//------------------------------------------------------------------------
@Override
protected void OnBarUpdate() throws TradingException {
zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(Input.Time()), ZoneOffset.UTC);
if(Input.Time()==lastTime) {
return;
}
series.addBar(zdt, Input.Open.get(0), Input.High.get(0), Input.Low.get(0), Input.Close.get(0), Input.Volume.get(0));
Value.set(0, rsi.getValue(series.getEndIndex()).doubleValue());
lastTime = Input.Time();
}
}
これはかなり一般的なSQインジケーターのスニペットですが、インジケーターを計算するコードが含まれていません。代わりに呼び出しています TA4J RSIIndicator それを計算するクラス.
ご注意ください。StrategyQuantを既存のライブラリにあるインジケーターで拡張するのは簡単ですが、それは必要な作業の半分に過ぎません。.
この方法でSQに新しいインジケーターを作成することはできますが、このインジケーターは依然としてStrategyQuantでのみ計算されます。MetaTrader、Tradestation、MultiCharts、またはその他のプラットフォームで、このカスタムインジケーターを含む戦略を使用するには、以下の手順を行う必要があります:
- この新しいスニペットがプラットフォームのソースコードにどのように翻訳されるかの定義を追加する
- このインジケーターの実装もターゲットプラットフォームに追加してください
詳細については、弊社の記事をご覧ください。 インジケーターとシグナルの追加.
この記事は参考になりましたか? この記事は役に立った この記事は役に立たなかった
素晴らしい!ありがとうございます