Sind die Aufträge sortiert?

4 Antworten

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Profil besuchen

vor 7 Jahren #116287

Hallo,

 

Ich entwerfe ein Plugin, das die Anzahl der offenen Lose aufzeichnet und ich habe herausgefunden, dass die Aufträge aus SQOrderList nicht sortiert sind

 

Nach einigen Informationen von anderen Plugins sollen sie sortiert werden

/**
	 * Die Funktion empfängt eine Liste aller Aufträge, sortiert nach der Öffnungszeit, und kann sie manipulieren
	 * die Liste manipulieren und jede Bestellung, die einem bestimmten Filter entspricht, aus der Liste entfernen.
	 *
	 * Die Auftragsstruktur ist in der Dokumentation hier verfügbar:
	 * http://www.strategyquant.com/doc/api/com/strategyquant/lib/results/SQOrder.html
	 *
	 * @param originalOrders - Liste der ursprünglichen Aufträge, die geändert werden können. Jeder Auftrag hat die oben angegebenen Auftragseigenschaften
	 */

aber mein Code leitet dies ab

Paket 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.results.SQData;
import com.strategyquant.lib.language.L;
import com.strategyquant.lib.settings.SQConst;
importieren com.strategyquant.lib.results.SQOrderList;
import com.strategyquant.lib.results.SQOrder; 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("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);
     Datum unten = neues Datum(orderList.get(orderList.size()-1).OpenTime);
     
     System.out.println("Schlusszeit "+d);
     System.out.println("Top "+top);
     System.out.println("Unten "+Unten);


     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 ) // Ausstiegszeit
      { lots++; }
      sonst
      {
         lots = 0;
         exittime = orderList.get(i).CloseTime;
      }
           
      chart.add("", i+1, lots);
       
      }

		return chart.render();
	}
}

Schlusszeit Mon Apr 04 10:12:00 GMT 2016
Seitenanfang Thu Mar 31 23:08:00 GMT 2016
Unten Fri Apr 01 00:01:00 GMT 2016

 

Die Aufträge stehen also im Vergleich zur Handelsdatei einfach auf dem Kopf. In der Handelsdatei gibt es Aufträge mit einem OpenPrice von 28.03 und 30.03, also sollte 28.03 ganz unten stehen und nicht 31.03

Ich füge eine Handelsdatei bei, die ich für diesen Test verwende.

 

Können Sie ein Beispiel geben, wie man sie sortiert?

 

Krzysztof

 

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Profil besuchen

vor 7 Jahren #141436

Wie lautet also die Antwort auf diese Frage? Wie viele Messwerte aus der QA zeigen falsche Werte aufgrund dieses Fehlers? Wann werden Sie ihn beheben? Kaum zu glauben...dieses Produkt gibt es schon so viele Jahre und noch immer sind große Fehler in....

 

Krzysztof

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 7 Jahren #141501

Hallo,

 

Sie beziehen sich auf einen Hilfskommentar aus einer ganz anderen Kategorie von Snippets. Es wird nicht gesagt, dass TradeAnalysis Snipet geordnete Trades in einer bestimmten Reihenfolge verwendet, da die Reihenfolge der Trades die meisten dieser Statistiken nicht beeinflusst.

 

Sie können die Aufträge aber ganz einfach mit dem Befehl sortieren:

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

 

müssen Sie auch zwei Importe hinzufügen, um dies zu tun:

import java.util.Collections;
import com.strategyquant.lib.comparators.OrderComparatorByCloseTime;
 
Sie können Aufträge alternativ nach Öffnungszeit mit OrderComparatorByOpenTime() oder nach Ticket mit OrderComparatorByOrder() sortieren.

Mark
StrategyQuant Architekt

0

krzysiaczek99

Subscriber, bbp_participant, community, 57 replies.

Profil besuchen

vor 7 Jahren #141504

Hallo,

 

Danke für die Informationen. Also nach der Sortierung Trades werden in aufsteigender oder absteigender Reihenfolge sein? Wenn absteigend, wie kann man diese Liste auf den Kopf stellen?

wird  Sammlungen.umkehren(orderList) arbeiten?

 

Krzysztof

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 7 Jahren #141516

es ist in natürlicher Reihenfolge. Collections.reverse() sollte funktionieren.

Mark
StrategyQuant Architekt

0

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)