Was-wäre-wenn-Filter nach Monat

4 Antworten

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 9 Jahren #112399

Ich sende einen Beispielcode, der eine neue WENN-Bedingung hinzufügt, mit der Sie nach Monat filtern können.

 

Öffnen Sie einfach QuantEditor, erstellen Sie eine neue What If-Datei und kopieren Sie den Inhalt dorthin:

 

import java.util.ArrayList;
import java.util.Iterator;
 
import com.sonarbytes.eaa.logic.whatif.WhatIf;
import com.sonarbytes.strategy.Order;
importieren Sie com.sonarbytes.strategy.StrategyStatsData;
import com.sonarbytes.windows.panels.propertyPanel.CComboBoxItemList;
import com.sonarbytes.utils.SQTime;
 
public class ByMonth extends WhatIf {
 
public ByMonth() {
setName("Nach Monat");
 
      addIntParameter("_JAN_", "Januar", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_FEB_", "Februar", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_MAR_", "März", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_APR_", "April", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_MAY_", "Mai", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_JUN_", "Jun", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_JUL_", "Juli", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_AUG_", "August", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_SEP_", "September", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_OCT_", "Oktober", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_NOV_", "November", 1, 1, Integer.MAX_VALUE, 1);
      addIntParameter("_DEC_", "Dezember", 1, 1, Integer.MAX_VALUE, 1);
        
        // Name der Methode festlegen, der mit dem/den Parameter(n) angezeigt werden soll
setFormatedName("Nach Monat");
}
 
/**
* Die Funktion empfängt eine Liste aller Aufträge, sortiert nach Öffnungszeit, und kann die Liste manipulieren
* die Liste manipulieren und jede Bestellung, die einem bestimmten Filter entspricht, aus der Liste entfernen.     
*
*
* Struktur der Bestellung:
* .ticket - Auftragsticket (ganze Zahl)
* .size - Bestellungsgröße
* .type - Auftragsart: 1 - Long-Trade, 2 - Short-Trade
* .pl - Abschluss mit dem Ergebnis ProGewinn/Verlust in $
* .pctPL - aus dem Handel resultierender Pro-Gewinn/Verlust in %
* .pipsPL - aus dem Handel resultierender Pro-Gewinn/Verlust in Pips
* .openPrice - Eröffnungspreis eines Auftrags
* .openTime - Eröffnungszeit einer Order (in Sekunden ab 1.1.1970)
* .stoploss - Stop-Loss-Niveau, das für den Handel festgelegt wurde
* .takeprofit - für den Handel festgelegtes Gewinnzielniveau
* .closePrice - Schlusskurs eines Auftrags
* .closeTime - Schlusszeit eines Auftrags (in Sekunden ab dem 1.1.1970)
* .closeType - Art der Schließung
* .DD - Drawdown während dieses Geschäfts in $
* .pctDD - Drawdown während dieses Abschlusses in %
* .pipsDD - Drawdown während dieses Handels in Pips
* .accountBalance - Kontostand während dieses Handels
* .symbol - Symbol des Instruments (zum Beispiel "EURUSD")
*
* @param originalOrders - Liste der ursprünglichen Aufträge, die geändert werden können. Jeder Auftrag hat die oben angegebenen Auftragseigenschaften
*/
@Override
public void filter(ArrayList originalOrders) {
int jan = getIntParameterValue("_JAN_");
      int feb = getIntParameterValue("_FEB_");
      int mar = getIntParameterValue("_MAR_");
      int apr = getIntParameterValue("_APR_");
      int may = getIntParameterWert("_MAY_");
      int jun = getIntParameterValue("_JUN_");
      int jul = getIntParameterValue("_JUL_");
      int aug = getIntParameterValue("_AUG_");
      int sep = getIntParameterValue("_SEP_");
      int oct = getIntParameterValue("_OCT_");
      int nov = getIntParameterValue("_NOV_");
      int dec = getIntParameterValue("_DEC_");
 
for(Iterator i = originalOrders.listIterator(); i.hasNext() ;) {
Order order = (Order)i.next();
         SQTime time = new SQTime(order.openTime);
         int orderMonth = time.getMonth();
  
if(orderMonth == 0 && jan != 1) i.remove();
         if(orderMonth == 1 && feb != 1) i.remove();
         if(orderMonth == 2 && mar != 1) i.remove();
         if(orderMonth == 3 && apr != 1) i.remove();
         if(orderMonth == 4 && may != 1) i.remove();
         if(orderMonth == 5 && jun != 1) i.remove();
         if(orderMonth == 6 && jul != 1) i.remove();
         if(orderMonth == 7 && aug != 1) i.remove();
         if(bestellungMonat == 8 && sep != 1) i.remove();
         if(orderMonth == 9 && oct != 1) i.remove();
         if(orderMonth == 10 && nov != 1) i.remove();
         if(orderMonth == 11 && dec != 1) i.remove();
}
}
}

Mark
StrategyQuant Architekt

0

ynachum

Kunde, bbp_participant, Gemeinschaft, 21 Antworten.

Profil besuchen

vor 9 Jahren #126924

Haben Sie vielleicht schon andere Was-wäre-wenn-Codes wie diesen geschrieben?...

Yossi

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 9 Jahren #126949

Sie können den Code aller bereits im Programm verwendeten WENN-Optionen sehen, indem Sie den QuantEditor in EA Analyzer öffnen.

Mark
StrategyQuant Architekt

0

ForexTrader

Abonnent, bbp_participant, Gemeinschaft, 34 Antworten.

Profil besuchen

vor 9 Jahren #127435

Ich habe diese Fehlermeldung erhalten:

 

Die Klasse ByMonth ist öffentlich und sollte in einer Datei namens ByMonth.java deklariert werden.

0

Mark Fric

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 9 Jahren #127441

ja, ich weiß nicht, wo Sie es erstellt haben, aber Sie sollten eine Datei namens ByMonth.java in QuantEditor erstellen und diesen Code dort einfügen.

 

Der Dateiname muss mit dem Klassennamen übereinstimmen.

Mark
StrategyQuant Architekt

0

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