Filtro What If por mes

4 respuestas

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 9 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

Cliente, bbp_participant, comunidad, 21 respuestas.

Visitar el perfil

hace 9 años #126924

¿Tiene quizás algún otro código de suposición ya escrito como éste?...

Yossi

0

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 9 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

Abonado, bbp_participant, comunidad, 34 respuestas.

Visitar el perfil

hace 9 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

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 9 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)