Was-wäre-wenn-Filter nach Monat
4 Antworten
Mark Fric
vor 12 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
vor 11 Jahren #126924
Haben Sie vielleicht schon andere Was-wäre-wenn-Codes wie diesen geschrieben?...
Yossi
0
Mark Fric
vor 11 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
vor 11 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
vor 11 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)