Gli ordini sono ordinati?

4 risposte

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Visita il profilo

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

 

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Visita il profilo

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

0

Mark Fric

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

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:

importare java.util.Collections;
import com.strategyquant.lib.comparators.OrderComparatorByCloseTime;
 
È possibile ordinare in modo alternativo gli ordini in base all'ora di apertura utilizzando OrderComparatorByOpenTime() o in base ai ticket utilizzando OrderComparatorByOrder().

Marchio
Architetto StrategyQuant

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Visita il profilo

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

0

Mark Fric

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

7 anni fa #141516

è in ordine naturale. Collections.reverse() dovrebbe funzionare.

Marchio
Architetto StrategyQuant

0

Stai visualizzando 4 risposte - da 1 a 4 (di 4 totali)