Gli ordini sono ordinati?
4 risposte
krzysiaczek99
7 anni fa #116287
Ciao,
Sto progettando un plugin che traccia il numero di lotti aperti e ho scoperto che gli ordini da SQOrderList non sono ordinati.
Secondo alcune informazioni provenienti da un altro plugin, dovrebbero essere ordinati
/** * La funzione riceve l'elenco di tutti gli ordini ordinati in base all'ora di apertura e può manipolare l'elenco e rimuovere dall'elenco gli ordini che corrispondono a un determinato filtro. * l'elenco e rimuovere dall'elenco tutti gli ordini che corrispondono a determinati filtri. * * La struttura degli ordini è disponibile nella documentazione qui: * http://www.strategyquant.com/doc/api/com/strategyquant/lib/results/SQOrder.html * * @param originalOrders - elenco degli ordini originali che possono essere modificati. Ogni ordine ha le proprietà dell'ordine specificate in precedenza */
ma il mio codice deduce questo
pacchetto com.strategyquant.extend.TradeAnalysisPanes; importare org.jfree.chart.JFreeChart; import com.strategyquant.lib.snippets.TradeAnalysisChartPane; importare com.strategyquant.lib.results.SQData; import com.strategyquant.lib.language.L; importare com.strategyquant.lib.settings.SQConst; importare com.strategyquant.lib.results.SQOrderList; importare com.strategyquant.lib.results.SQOrder; importare com.strategyquant.lib.results.SQResultsGroup; importare com.strategyquant.lib.charts.common.SQLineChart; importare 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("Lotti"); 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("Ora più vicina "+d); System.out.println("Top "+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); se ( orderList.get(i).OpenTime <= exittime ) // orario di uscita { lots++; } altrimenti { lotti = 0; exittime = orderList.get(i).CloseTime; } chart.add("", i+1, lots); } return chart.render(); } }
Ora di chiusura 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
quindi gli ordini sono semplicemente capovolti rispetto al file di negoziazione. Nel file di negoziazione ci sono ordini con OpenPrice da 28.03 e 30.03, quindi 28.03 dovrebbe essere in basso e non 31.03.
Allego il file di scambio che utilizzo per questo test.
Puoi fare un esempio di come ordinarli?
Krzysztof
krzysiaczek99
7 anni fa #141436
Qual è la risposta a questo problema? Quante misure di QA mostrano valori sbagliati a causa di questo bug? Quando lo risolverete? Difficile da credere... questo prodotto è in giro da così tanti anni e ancora ci sono bug importanti in....
Krzysztof
Mark Fric
7 anni fa #141501
Salve,
ti riferisci a un commento di aiuto di una categoria di snippet completamente diversa, non è detto che lo snipet TradeAnalysis utilizzi operazioni ordinate in un ordine particolare, perché l'ordine delle operazioni non influenza la maggior parte di queste statistiche.
Ma è possibile ordinare facilmente gli ordini utilizzando un comando:
Collections.sort(orderList, new OrderComparatorByCloseTime());
per farlo è necessario aggiungere due importazioni:
Marchio
Architetto StrategyQuant
krzysiaczek99
7 anni fa #141504
Ciao,
Grazie per le informazioni. Quindi dopo l'ordinamento le operazioni saranno in ordine crescente o decrescente? Se discendente, come si fa a capovolgere la lista?
volontà Collezioni.inverso(elenco ordini) funzionano?
Krzysztof
Mark Fric
7 anni fa #141516
Stai visualizzando 4 risposte - da 1 a 4 (di 4 totali)