Antwort

Java-API-Dokumentation?

4 Antworten

Albert Rimm

Abonnent, bbp_participant, 0 Antworten.

Profil besuchen

vor 5 Jahren #238874

 

Zunächst einmal herzlichen Glückwunsch zu Ihrem Job. Derzeit bin ich eher ein Java/Python-orientierter Forscher, aber ich habe gerade SQX entdeckt, weil ein Kunde von mir braucht mich, um sein Projekt mit SQX zu entwickeln und ich denke, es ist ziemlich interessant.

Ich finde unnötig kompliziert, es zu tun, obwohl, nur weil ich keine API-Dokumentation zu finden, so dass selbst durch die Überprüfung ähnliche vordefinierte Blöcke zu denen, die ich implementieren müssen, kann ich immer noch nicht sicher sein, der Verwendung von jeder Methode, Annotation, Klasse ...

Nur als ein paar Beispiele, in Bezug auf die Anmerkungen oder einfache Methoden Variablen wie "Calls" von IndicatorBlock, kann ich herausfinden, mehr oder weniger seine Funktion, aber wirklich vermissen die API-Dokumentation in der Lage sein, um sicher zu sein, den Zweck dieser Methoden, Funktionen, Variablen...

Um also zu wissen, wie komplex/einfach es sein wird, das Projekt dieses Kunden zu implementieren, und darüber hinaus, um in naher Zukunft andere Projekte in SQX statt auf anderen Plattformen zu entwickeln, würde ich gerne wissen, ob es eine Dokumentation zu diesem speziellen Modul von SQX gibt (die Java-API/Codierung), und ich habe sie nicht finden können oder es gibt keine Dokumentation. Ich habe in anderen Beiträgen gelesen, dass die Dokumentation über die API mit der letzten Version von SQX verfügbar sein würde.

Vielen Dank im Voraus!

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 5 Jahren #238895

Hallo Albert,

leider sind wir mit der Programmierung und der API-Dokumentation noch im Rückstand. Es gibt einen kurzen PDF-Leitfaden Extending SQX, der zusammen mit SQ X verteilt wird. Er enthält Anleitungen und Beispiele für die häufigsten Dinge, wie das Hinzufügen neuer Indikatoren und Metriken.

 

Bis dahin können wir vielleicht, wenn Sie mich direkt kontaktieren, besprechen, was genau Ihr Ziel ist und ob und wie es mit SQ erreicht werden kann und wie kompliziert es sein würde. Ich schicke Ihnen eine PM mit meiner E-Mail.

 

 

Mark
StrategyQuant Architekt

0

kleva

Kunde, bbp_participant, Gemeinschaft, 15 Antworten.

Profil besuchen

vor 4 Jahren #240862

Hallo Mark,

inzwischen bin ich ein kleiner "Spezialist" in der Programmierung eigener SQX-Erweiterungen geworden :). Aber leider sind alle hilfreichen Inhalte von "https://docs.strategyquant.com/api/*” wurde von Ihnen aus dem www gelöscht.

Auch wenn sie veraltet sein sollte: Könnten Sie Leuten wie mir bitte eine gezippte Kopie des früheren Inhalts zur Verfügung stellen? Ich bin sicher, dass das meiste (wie z.B. die komplette Dokumentation von "SQTime.*") auch heute noch brauchbar ist ... .

Vielen Dank im Voraus für Ihre Hilfe,

Mit freundlichen Grüßen: kleva.

 

 

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 4 Jahren #240876

Hallo,

Ich bin wirklich froh, dass es Ihnen gelungen ist, SQ X mit der unvollständigen Dokumentation zu erweitern.

Hier ist der Link zur neu erstellten API-Dokumentation: https://strategyquant.com/sqxapi/

Beachten Sie, dass sie nur die Basisklassen enthält, die Sie in Snippets verwenden sollten, und nicht die kompletten Klassen aller unserer Bibliotheken.

 

Bitte lassen Sie mich wissen, wenn Sie etwas vermissen.

 

Es würde mir auch helfen, wenn ich die Art der Erweiterungen sehen kann, die Sie machen. Ich weiß nicht, ob es einige "Geschäftsgeheimnisse" gibt, aber wollen Sie nicht einige Ihrer Erweiterungen mit anderen Nutzern durch unsere Codebase?

 

Wenn Sie sie nicht veröffentlichen wollen, können Sie sie mir vielleicht per E-Mail zusenden - schicken Sie mir eine Nachricht, und ich gebe Ihnen meine E-Mail-Adresse. Das würde mir helfen zu verstehen, womit Sie arbeiten und welche Art von Unterstützung Sie brauchen.

Mark
StrategyQuant Architekt

0

kleva

Kunde, bbp_participant, Gemeinschaft, 15 Antworten.

Profil besuchen

vor 4 Jahren #241110

Hallo Mark,

sorry für die späte Antwort, ich war einige Wochen nicht hier (und habe vergessen, den "notify"-Button zu setzen)... .

Vielen Dank für den Link zur neuen API-Dokumentation: Es ist genau das, wonach ich gesucht habe :)!

Derzeit bin ich noch ein "SQX-Java-Student". Aber ich bin mir sicher, dass ich später, wenn es fertig ist, eine praktikable Erweiterung unter "Codebase" veröffentlichen werde.

Damit Sie besser verstehen, was ich tue, hier zum Beispiel eine Schleife, die ich in einer (Martingal-ähnlichen) MM-Erweiterung verwende. Sie berechnet die "orderdayPipsPL" für den Tag VOR dem eigentlichen Tag:

//—

orderdayPipsPL = 0; //wenn MM aufgerufen wird, müssen wir es auf Null setzen, bevor die Schleife beginnt

for(int i=Strategy.Trader.getHistoryOrdersCount()-1; i>=0; i-)
{
order = Strategy.Trader.getHistoryOrder(i);

if(!OrderFunctions.identify(order, Strategy, Symbol, 0, MagicNumber, Comment)) continue;

if(!order.isFilledOrder()) continue; // anhängige Aufträge ignorieren

if (order.isLong() || order.isShort())
{
orderTime = order.CloseTime;
if (Auftrag.isLong())
{
order.PipsPL = (float)Strategy.convertRealPriceToPips(Symbol, (order.ClosePrice - order.OpenPrice));
}
else if (Auftrag.istKurz())
{
order.PipsPL = (float)Strategy.convertRealPriceToPips(Symbol, (order.OpenPrice - order.ClosePrice));
}
//—
if (orderTime >= todayStart && orderTime <= todayEnd) //wir sind am aktuellen Tag
{
//nichts zu tun
}
sonst
{
if (bestellungstagBeginn==0 && bestellungstagEnde==0)
{
orderdayStart = SQTime.correctDayStart(orderTime);
orderdayEnd = SQTime.correctDayEndMT(orderTime);
orderdayLots = order.Size;
}
if (orderTime >= orderdayStart && orderTime <= orderdayEnd) //wir sind am Bestelltag
{
orderdayPipsPL += order.PipsPL;
}
else if (orderdayPipsPL!=0) //jetzt sind wir schon vor dem Ordertag
{
wenn (AuftragstagPipsPL<0)
{
absSL = Strategy.convertRealPriceToPips(Symbol, (order.OpenPrice - order.StopLoss));
if (absSL<0) absSL = -absSL;

factor = -FactorSL * orderdayPipsPL / absSL;
if (Faktor<0) Faktor = -Faktor;
if (Faktor<MinLotsFactor) Faktor = MinLotsFactor;

tradeSize = orderdayLots * Faktor;
Pause;
}
sonst wenn (orderdayPipsPL>0)
{
// nichts zu berechnen
tradeSize = Math.min(LotsIfNoMM, MaxLots);
Pause;
}
sonst Pause;
}
}
}
}

//—

0

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)