Répondre

Documentation de l'API Java ?

4 réponses

Albert Rimm

Abonné, bbp_participant, 0 réponses.

Visiter le profil

il y a 5 ans #238874

 

Tout d'abord, félicitations pour votre travail. Actuellement, je suis plutôt un chercheur orienté Java/Python, mais je viens de découvrir SQX parce qu'un de mes clients a besoin que je développe son projet en utilisant SQX et je pense que c'est assez intéressant.

Je trouve cependant complexe de le faire, tout simplement parce que je ne trouve aucune documentation sur l'API, donc même en vérifiant des blocs prédéfinis similaires à ceux que je dois implémenter, je ne peux toujours pas être sûr de l'utilisation de chaque méthode, annotation, classe...

Juste à titre d'exemple, en ce qui concerne les annotations ou les variables de méthodes simples telles que "Calls" d'IndicatorBlock, je peux comprendre plus ou moins sa fonction, mais il me manque vraiment la documentation de l'API pour pouvoir être sûr de l'objectif de ces méthodes, fonctions, variables...

Donc, afin de savoir à quel point il sera complexe/facile d'implémenter le projet de ce client, et au-delà, afin de penser à développer dans un futur proche d'autres projets en SQX au lieu d'autres plateformes, j'aimerais savoir s'il existe une documentation sur ce module spécifique de SQX (l'API/codage Java) et je n'ai pas été capable de la trouver ou elle n'est pas livrée avec une documentation. J'ai lu dans d'autres posts que la documentation sur l'API serait disponible avec cette dernière version de SQX, si c'est le cas, où pourrais-je la trouver ?

Merci d'avance !

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

il y a 5 ans #238895

Bonjour Albert,

Malheureusement, nous sommes toujours en retard en ce qui concerne la programmation et la documentation de l'API. Il y a un petit guide PDF Extending SQX, qui est distribué avec SQ X, il contient des howto's et des exemples pour les choses les plus fréquentes, comme comment ajouter un nouvel indicateur et une nouvelle métrique.

 

En attendant, si vous me contactez directement, nous pourrons peut-être discuter de votre objectif exact, de la possibilité de le réaliser avec SQ et de la complexité de la tâche. Je vous envoie un PM avec mon email.

 

 

Marque
StratégieArchitecte de Quantités

0

kleva

Client, bbp_participant, communauté, 15 réponses.

Visiter le profil

Il y a 4 ans #240862

Bonjour Mark,

Entre-temps, je suis devenu un peu "spécialiste" de la programmation de mes propres extensions SQX :). Mais malheureusement, tout le contenu utile de "https://docs.strategyquant.com/api/*” a été supprimé par vous du site www.

Et s'il est obsolète : Pourriez-vous fournir une copie zippée de son ancien contenu à des gens comme moi ? Je suis sûr que la plupart (comme la documentation complète de "SQTime.*" par exemple) sera utilisable jusqu'à aujourd'hui ... .

Merci d'avance pour votre aide,

meilleures salutations : kleva.

 

 

0

Mark Fric

Administrateur, sq-ultimate, 2 réponses.

Visiter le profil

Il y a 4 ans #240876

Bonjour,

Je suis vraiment heureux que vous ayez pu étendre SQ X avec la documentation incomplète.

Voici le lien vers la nouvelle documentation de l'API : https://strategyquant.com/sqxapi/

Notez qu'il ne comprend que les classes de base que vous devriez utiliser dans Snippets, et non les classes complètes de toutes nos bibliothèques.

 

N'hésitez pas à me faire savoir si quelque chose vous échappe.

 

Cela m'aiderait également de voir le type d'extensions que vous faites, je ne sais pas s'il y a des "secrets commerciaux", ne voulez-vous pas partager certaines de vos extensions avec d'autres utilisateurs par le biais de notre site Web ? Base de données?

 

Si vous ne souhaitez pas les publier, vous pouvez peut-être me les envoyer par courrier électronique - envoyez-moi un message et je vous communiquerai mon adresse électronique. Cela m'aiderait à comprendre avec quoi vous travaillez et de quel type de soutien vous avez besoin.

Marque
StratégieArchitecte de Quantités

0

kleva

Client, bbp_participant, communauté, 15 réponses.

Visiter le profil

Il y a 4 ans #241110

Bonjour Mark,

Désolé pour la réponse tardive, j'ai été absent quelques semaines (et j'ai oublié d'activer le bouton "notifier")... .

Merci beaucoup pour le lien vers la nouvelle documentation sur l'API : C'est exactement ce que je cherchais :) !

Actuellement, je suis encore un "étudiant SQX-Java". Mais je suis sûr que je publierai une extension pratique sous "Codebase" plus tard, si elle est terminée.

Pour vous permettre de mieux comprendre ce que je fais, voici par exemple une boucle que j'utilise dans une extension MM (de type martingale). Elle calcule le "orderdayPipsPL" pour le jour précédant le jour réel :

//—

orderdayPipsPL = 0 ; //lorsque MM est appelé, nous devons le mettre à zéro avant que la boucle ne démarre

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 ; // ignore les ordres en attente

if (order.isLong() || order.isShort())
{
orderTime = order.CloseTime ;
if (order.isLong())
{
order.PipsPL = (float)Strategy.convertRealPriceToPips(Symbol, (order.ClosePrice - order.OpenPrice)) ;
}
else if (order.isShort())
{
order.PipsPL = (float)Strategy.convertRealPriceToPips(Symbol, (order.OpenPrice - order.ClosePrice)) ;
}
//—
if (orderTime >= todayStart && orderTime <= todayEnd) //nous sommes au jour actuel
{
//Rien à faire
}
autre
{
if (orderdayStart==0 && orderdayEnd==0)
{
orderdayStart = SQTime.correctDayStart(orderTime) ;
orderdayEnd = SQTime.correctDayEndMT(orderTime) ;
orderdayLots = order.Size ;
}
if (orderTime >= orderdayStart && orderTime <= orderdayEnd) //nous sommes au jour de la commande
{
orderdayPipsPL += order.PipsPL ;
}
else if (orderdayPipsPL!=0) //nous sommes déjà avant le jour de la commande
{
si (orderdayPipsPL<0)
{
absSL = Strategy.convertRealPriceToPips(Symbol, (order.OpenPrice - order.StopLoss)) ;
si (absSL<0) absSL = -absSL ;

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

tradeSize = orderdayLots * factor ;
pause ;
}
else if (orderdayPipsPL>0)
{
// rien à calculer
tradeSize = Math.min(LotsIfNoMM, MaxLots) ;
pause ;
}
else break ;
}
}
}
}

//—

0

Affichage de 4 réponses de 1 à 4 (sur un total de 4)