Os pedidos estão ordenados?

4 respostas

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Perfil da visita

7 anos atrás #116287

Hi,

 

Estou projetando um plug-in que plota o número de lotes abertos e descobri que os pedidos do SQOrderList não são classificados

 

De acordo com algumas informações de outros plug-ins, eles devem ser classificados

/**
	 * A função recebe a lista de todas as ordens classificadas por tempo de abertura e pode manipular
	 * A função recebe a lista de todas as ordens classificadas por tempo de abertura e pode manipular a lista e remover qualquer ordem que corresponda a determinado filtro da lista.
	 *
	 * A estrutura da ordem está disponível na documentação aqui:
	 * http://www.strategyquant.com/doc/api/com/strategyquant/lib/results/SQOrder.html
	 *
	 * @param originalOrders - lista de pedidos originais que podem ser alterados. Cada pedido tem as propriedades de pedido especificadas acima
	 */

mas meu código deduz isso

pacote 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.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("Lotes");
           
      Se (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("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);
      
      if ( orderList.get(i).OpenTime <= exittime ) // hora de saída
      { lots++; }
      else
      {
         lotes = 0;
         exittime = orderList.get(i).CloseTime;
      }
           
      chart.add("", i+1, lots);
       
      }

		return chart.render();
	}
}

Tempo de fechamento Seg Abr 04 10:12:00 GMT 2016
Top Thu Mar 31 23:08:00 GMT 2016
Fundo Fri Apr 01 00:01:00 GMT 2016

 

portanto, as ordens estão de cabeça para baixo em comparação com o arquivo de negociação. No arquivo de negociação, há ordens com OpenPrice de 28,03 e 30,03, portanto, 28,03 deveria estar na parte inferior, não 31,03

Estou anexando o arquivo comercial que utilizo para esse teste.

 

Você pode dar um exemplo de como classificá-los?

 

Krzysztof

 

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Perfil da visita

7 anos atrás #141436

Então, qual é a resposta para isso? Quantas medidas de QA estão mostrando valores errados por causa desse bug? Quando vocês vão corrigi-lo? Difícil de acreditar... esse produto já existe há tantos anos e ainda há bugs importantes....

 

Krzysztof

0

Marca Fric

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #141501

Olá,

 

Você está se referindo a um comentário de ajuda de uma categoria totalmente diferente de snippets; não foi dito que o snipet TradeAnalysis usa negociações ordenadas em qualquer ordem específica, porque a ordem das negociações não influencia a maioria dessas estatísticas.

 

Mas você pode classificar facilmente as ordens usando o comando:

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

 

você também precisa adicionar duas importações para fazer isso:

importar java.util.Collections;
import com.strategyquant.lib.comparators.OrderComparatorByCloseTime;
 
Você pode classificar alternativamente os pedidos por horário de abertura usando OrderComparatorByOpenTime() ou por tíquete usando OrderComparatorByOrder()

Marcar
EstratégiaQuant arquiteto

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Perfil da visita

7 anos atrás #141504

Hi,

 

Obrigado pelas informações. Então, após a classificação, as negociações ficarão em ordem crescente ou decrescente? Se forem descendentes, como virar essa lista de cabeça para baixo?

irá  Coleções.reverso(lista de pedidos) funcionam ??

 

Krzysztof

0

Marca Fric

Administrador, sq-ultimate, 2 respostas.

Perfil da visita

7 anos atrás #141516

está em ordem natural. Collections.reverse() deve funcionar.

Marcar
EstratégiaQuant arquiteto

0

Visualizando 4 respostas - 1 até 4 (de um total de 4)