Les commandes sont-elles triées ?
4 réponses
krzysiaczek99
Il y a 7 ans #116287
Bonjour,
Je suis en train de concevoir un plugin qui calcule le nombre de lots ouverts et j'ai découvert que les commandes de SQOrderList ne sont pas triées.
D'après les informations fournies par d'autres plugins, ils sont censés être triés.
/** * La fonction reçoit la liste de tous les ordres triés par heure d'ouverture et peut manipuler la liste et supprimer de la liste tout ordre correspondant à un certain filtre. * la liste et supprimer de la liste tout ordre qui correspond à un certain filtre. * * La structure de l'ordre est disponible dans la documentation ici : * http://www.strategyquant.com/doc/api/com/strategyquant/lib/results/SQOrder.html * * @param originalOrders - liste des commandes originales qui peuvent être modifiées. Chaque commande possède les propriétés de commande spécifiées ci-dessus */
mais mon code produit ceci
package com.strategyquant.extend.TradeAnalysisPanes ; import org.jfree.chart.JFreeChart ; import com.strategyquant.lib.snippets.TradeAnalysisChartPane ; import com.strategyquant.lib.results.SQData ; import com.strategyquant.lib.language.L ; import com.strategyquant.lib.settings.SQConst ; import com.strategyquant.lib.results.SQOrderList ; import com.strategyquant.lib.results.SQOrder ; import com.strategyquant.lib.results.SQResultsGroup ; import com.strategyquant.lib.charts.common.SQLineChart ; import java.util.Date ; public class MaxNumberOfTrades extends TradeAnalysisChartPane { public MaxNumberOfTrades() { this.name = "MaxNumberOfTrades" ; } @Override public JFreeChart drawChart(SQResultsGroup strategyResult, SQData data) { SQLineChart chart = new SQLineChart() ; chart.xLegend = L.t("Trades") ; chart.yLegend = L.t("Lots") ; if(strategyResult==null) { return chart.render() ; } SQOrderList orderList = filterOrders(strategyResult, data) ; int lots = 0 ; long exittime = orderList.get(0).CloseTime ; Date d = new Date(exittime) ; Date top = new Date(orderList.get(0).OpenTime) ; Date bottom = new Date(orderList.get(orderList.size()-1).OpenTime) ; System.out.println("Closetime "+d) ; System.out.println("Haut "+top) ; System.out.println("Bottom "+bottom) ; for (int i = 0 ; i < orderList.size() ; i++) { //System.out.println(orderList.get(i).OpenTime) ; //System.out.println(order.OpenTime) ; //System.out.println(order.CloseTime) ; if ( orderList.get(i).OpenTime <= exittime ) // heure de sortie { lots++ ; } else { lots = 0 ; exittime = orderList.get(i).CloseTime ; } chart.add("", i+1, lots) ; } return chart.render() ; } }
Closetime Mon Apr 04 10:12:00 GMT 2016
Top Thu Mar 31 23:08:00 GMT 2016
Bottom Fri Apr 01 00:01:00 GMT 2016
Les ordres sont donc à l'envers par rapport au fichier d'échange. Dans le fichier commercial, il y a des ordres avec des OpenPrice de 28.03 et 30.03, donc 28.03 devrait être en bas et non 31.03.
Je joins le fichier commercial que j'utilise pour ce test.
Pouvez-vous donner un exemple de tri ?
Krzysztof
krzysiaczek99
Il y a 7 ans #141436
Quelle est la réponse à cette question ? Combien de mesures de l'AQ affichent des valeurs erronées à cause de ce bogue ? Quand allez-vous le corriger ? Il est difficile de croire que ce produit existe depuis tant d'années et qu'il y a encore des bogues majeurs sur .....
Krzysztof
Mark Fric
Il y a 7 ans #141501
Bonjour,
Il n'est pas dit que le snipet TradeAnalysis utilise des transactions ordonnées dans un ordre particulier, car l'ordre des transactions n'a pas d'influence sur la plupart de ces statistiques.
Mais vous pouvez facilement trier les commandes en utilisant la commande :
Collections.sort(orderList, new OrderComparatorByCloseTime()) ;
vous devez également ajouter deux importations pour ce faire :
Marque
StratégieArchitecte de Quantités
krzysiaczek99
Il y a 7 ans #141504
Bonjour,
Merci pour l'information. Donc après le tri, les transactions seront dans l'ordre croissant ou décroissant ? Si c'est par ordre décroissant, comment retourner cette liste à l'envers ?
volonté Collections.inverser(liste des commandes) travail ? ?
Krzysztof
Mark Fric
Il y a 7 ans #141516
il est dans l'ordre naturel. Collections.reverse() devrait fonctionner.
Marque
StratégieArchitecte de Quantités
Affichage de 4 réponses de 1 à 4 (sur un total de 4)