Filtro What If por mes
4 respuestas
Mark Fric
hace 12 años #112399
Estoy publicando un código de ejemplo que añade una nueva condición What If que permite filtrar por mes.
Simplemente abra QuantEditor, cree un nuevo archivo What If y copie el contenido allí:
import java.util.ArrayList;
importar java.util.Iterator;
import com.sonarbytes.eaa.logic.whatif.WhatIf;
import com.sonarbytes.strategy.Order;
import com.sonarbytes.strategy.StrategyStatsData;
import com.sonarbytes.windows.panels.propertyPanel.CComboBoxItemList;
import com.sonarbytes.utils.SQTime;
public class ByMonth extends WhatIf {
public ByMonth() {
setName("Por mes");
addIntParameter("_JAN_", "Enero", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_FEB_", "Febrero", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_MAR_", "Marzo", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_APR_", "Abril", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_MAY_", "Mayo", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_JUN_", "Jun", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_JUL_", "Julio", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_AUG_", "Agosto", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_SEP_", "Septiembre", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_OCT_", "Octubre", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_NOV_", "Noviembre", 1, 1, Integer.MAX_VALUE, 1);
addIntParameter("_DEC_", "Diciembre", 1, 1, Integer.MAX_VALUE, 1);
// establecer el nombre de este método que se mostrará con los parámetros
setFormatedName("Por mes");
}
/**
* 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.
*
*
* Estructura del pedido:
* .ticket - ticket de pedido (número entero)
* .size - tamaño del pedido
* .type - tipo de orden: 1 - operación larga, 2 - operación corta
* .pl - operación resultante Profit/Loss en $
* .pctPL - operación resultante Profit/Loss en %
* .pipsPL - operación resultante Profit/Loss en pips
* .openPrice - precio de apertura de una orden
* .openTime - hora de apertura de una orden (en segundos desde 1.1.1970)
* .stoploss - nivel de stop loss fijado en la operación
* .takeprofit - nivel de beneficio objetivo fijado en la operación
* .closePrice - precio de cierre de una orden
* .closeTime - hora de cierre de una orden (en segundos desde 1.1.1970)
* .closeType - tipo de cierre
* .DD - reducción durante esta operación en $
* .pctDD - reducción durante esta operación en %
* .pipsDD - reducción durante esta operación en pips
* .accountBalance - saldo de la cuenta durante esta operación
* .symbol - símbolo del instrumento (por ejemplo "EURUSD")
*
* @param originalOrders - lista de órdenes originales que pueden ser modificadas. Cada orden tiene las propiedades especificadas anteriormente
*/
@Override
public void filter(ArrayList pedidosoriginales) {
int enero = getIntParameterValue("_ENERO_");
int feb = getIntParameterValue("_FEB_");
int mar = getIntParameterValue("_MAR_");
int abr = getIntParameterValue("_APR_");
int may = getIntParameterValue("_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() ;) {
Orden = (Orden)i.next();
SQTime time = new SQTime(orden.openTime);
int ordenMes = time.getMonth();
if(orderMonth == 0 && jan != 1) i.remove();
if(orderMonth == 1 && feb != 1) i.remove();
if(mespedido == 2 && mar != 1) i.remove();
if(mespedido == 3 && abr != 1) i.remove();
if(mespedido == 4 && mayo != 1) i.remove();
if(mespedido == 5 && jun != 1) i.remove();
if(mespedido == 6 && jul != 1) i.remove();
if(mespedido == 7 && ago != 1) i.remove();
if(mespedido == 8 && sep != 1) i.remove();
if(mespedido == 9 && oct != 1) i.remove();
if(mespedido == 10 && nov != 1) i.remove();
if(orderMonth == 11 && dec != 1) i.remove();
}
}
}
Mark
Arquitecto de StrategyQuant
0
ynachum
hace 11 años #126924
¿Tiene quizás algún otro código de suposición ya escrito como éste?...
Yossi
0
Mark Fric
hace 11 años #126949
Puede ver el código de todas las opciones What-if ya utilizadas en el programa, sólo tiene que abrir el QuantEditor en EA Analyzer.
Mark
Arquitecto de StrategyQuant
0
ForexTrader
hace 11 años #127435
Tengo este error Mark:
La clase ByMonth es pública, debe ser declarada en un archivo llamado ByMonth.java
0
Mark Fric
hace 11 años #127441
Si, no se donde lo creaste, pero deberias crear un archivo llamado ByMonth.java en QuantEditor y poner este codigo ahi.
El nombre del archivo debe coincidir con el nombre de la clase.
Mark
Arquitecto de StrategyQuant
0
Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)