Dokumentation

Anwendungen

Zuletzt aktualisiert am 10. 11. 2020 von Mark Fric

Verwendung benutzerdefinierter JAR-Bibliotheken

Hinweis: Dies ist eine neue und experimentelle Funktion, die ab SQ X Build 130 verfügbar ist.

Es ist jetzt möglich, Ihre eigenen benutzerdefinierten Java JAR-Bibliotheken in Snippets zu verwenden.

Alles, was Sie tun müssen, ist, Ihre JARs nach /Benutzer/Bibliotheken Ordner in Ihrer StrategyQuant-Installation und nach einem Neustart von SQ sollten Sie in der Lage sein, diese in Snippets aufzurufen.

 

Ein Beispiel könnte ein RSI-Indikator sein, der aus der TA4J-Bibliothek (https://github.com/ta4j/ta4j). Sie können das Kern-JAR für diese Bibliothek herunterladen hier.

Dann platzieren Sie es in /Benutzer/Bibliotheken Ordner - wenn /libs Unterordner existiert noch nicht in /Benutzer und erstellen Sie ihn.

Dann können Sie ihn in einem Snippet verwenden. Öffnen Sie CodeEditor und erstellen Sie ein neues Beispiel-Snippet für den von der TA4J-Bibliothek berechneten RSI-Indikator:

Paket 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;
importieren 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.datalib.TradingException;
import com.strategyquant.tradinglib.BuildingBlock;
import com.strategyquant.tradinglib.ChartData; import com.strategyquant.tradinglib.ChartData;
import com.strategyquant.tradinglib.Colors; import com.strategyquant.tradinglib.Colors;
import com.strategyquant.tradinglib.Indicator; import com.strategyquant.tradinglib.Indicator;
import com.strategyquant.tradinglib.Output; import com.strategyquant.tradinglib;
import com.strategyquant.tradinglib.Parameter; import com.strategyquant.tradinglib;
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)
@Indikator(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 RSIIndikator 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) {
            zurück;
        }
        
        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();
    }
}

 

Dies ist ein ziemlich standardmäßiges SQ-Indikator-Snippet, aber es enthält keinen Code zur Berechnung des Indikators. Stattdessen ruft er TA4J RSIIndikator Klasse, um sie zu berechnen.

 

Bitte beachten Sie - es ist einfach, StrategyQuant mit Indikatoren aus bereits existierenden Bibliotheken zu erweitern, aber es ist nur die Hälfte der erforderlichen Arbeit.

Sie können auf diese Weise einen neuen Indikator in SQ erstellen, aber dieser Indikator wird weiterhin nur in StrategyQuant berechnet. Um Ihre Strategie mit diesem benutzerdefinierten Indikator in MetaTrader, Tradestation, MultiCharts oder einer anderen Plattform zu verwenden, müssen Sie dies tun:

  • Definition hinzufügen, wie dieses neue Snippet in den Quellcode der Plattform übersetzt werden soll
  • Implementierung dieses Indikators auch auf Ihrer Zielplattform hinzufügen

Bitte lesen Sie mehr darüber in unserem Artikel Hinzufügen von Indikatoren und Signalen.

 

 

War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich

Abonnieren
Benachrichtigen Sie mich bei
1 Kommentar
Älteste
Neuestes Meistgewählt
Inline-Rückmeldungen
Alle Kommentare anzeigen
Emmanuel
16. 1. 2023 5:40 Uhr

Ausgezeichnet! Vielen Dank!