¿están ordenados los pedidos?

4 respuestas

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Visitar el perfil

hace 7 años #116287

Hola,

 

Estoy diseñando un plugin que traza el número de lotes abiertos y he descubierto que los pedidos de SQOrderList no están ordenados

 

De acuerdo con alguna información de otro plugins que se supone que se ordenan

/**
	 * La función recibe la lista de todos los pedidos ordenados por tiempo de apertura y puede manipular
	 * la lista y eliminar cualquier orden que coincida con cierto filtro de la lista.
	 *
	 * La estructura de los pedidos está disponible en la documentación aquí:
	 * http://www.strategyquant.com/doc/api/com/strategyquant/lib/results/SQOrder.html
	 *
	 * @param originalOrders - lista de pedidos originales que pueden ser modificados. Cada orden tiene las propiedades de orden especificadas anteriormente
	 */

pero mi código deduce esto

paquete 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 NúmeroMáximoDeOfertas() {
		this.name = "MaxNumberOfTrades";
	}
	
   @Override
	public JFreeChart drawChart(SQResultsGroup strategyResult, SQData data) {
		SQLineChart gráfico = new SQLineChart();
      chart.xLegend = L.t("Operaciones");
      chart.yLegend = L.t("Lotes");
           
      if(strategyResult==null) {
         return chart.render();
      }

     SQOrderList orderList = filterOrders(strategyResult, data);


     int lotes = 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("Hora de cierre "+d);
     System.out.println("Top "+top);
     System.out.println("Inferior "+inferior);


     for (int i = 0; i < orderList.size(); i++) {
      
       //System.out.println(orderList.get(i).OpenTime);
       //System.out.println(orden.OpenTime);
       //System.out.println(order.CloseTime);
      
      if ( orderList.get(i).OpenTime <= exittime ) // hora de salida
      { lotes++; }
      else
      {
         lotes = 0
         exittime = orderList.get(i).CloseTime;
      }
           
      chart.add("", i+1, lotes);
       
      }

		return chart.render();
	}
}

Closetime lun 04 abr 10:12:00 GMT 2016
Top Thu Mar 31 23:08:00 GMT 2016
Fondo Fri Apr 01 00:01:00 GMT 2016

 

por lo que las órdenes están al revés en comparación con el archivo de comercio. En el archivo de comercio hay órdenes con OpenPrice de 28.03 y 30.03 por lo que 28.03 se supone que es en la parte inferior no 31.03

Adjunto archivo de comercio que uso para esta prueba.

 

¿Puede dar un ejemplo de cómo clasificarlos?

 

Krzysztof

 

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Visitar el perfil

hace 7 años #141436

¿Cuál es la respuesta? ¿Cuántas medidas de control de calidad muestran valores erróneos debido a este error? ¿Cuándo van a solucionarlo? Es difícil de creer ... este producto es de tantos años y todavía errores importantes en ....

 

Krzysztof

0

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 7 años #141501

Hola,

 

se está refiriendo a un comentario de ayuda de una categoría de snippets totalmente diferente, no se dice que el snipet TradeAnalysis utilice operaciones ordenadas en un orden concreto, porque el orden de las operaciones no influye en la mayoría de estas estadísticas.

 

Pero usted puede ordenar fácilmente los pedidos mediante el uso de comandos:

Collections.sort(orderList, new OrderComparatorByCloseTime());

 

también tienes que añadir dos importaciones para hacerlo:

import java.util.Collections;
import com.strategyquant.lib.comparators.OrderComparatorByCloseTime;
 
Puede ordenar los pedidos alternativamente por hora de apertura utilizando OrderComparatorByOpenTime() o por ticket utilizando OrderComparatorByOrder()

Mark
Arquitecto de StrategyQuant

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Visitar el perfil

hace 7 años #141504

Hola,

 

Gracias por la información. Así que después de ordenar las operaciones será en orden ascendente o descendente? Si es descendente, ¿cómo dar la vuelta a la lista?

se  Colecciones.invertir(orderList) funcionan?

 

Krzysztof

0

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 7 años #141516

está en orden natural. Collections.reverse() debería funcionar.

Mark
Arquitecto de StrategyQuant

0

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)