Documentación

Última actualización el 19. 6. 2015 por Mark Fric

Crear una nueva función Y si...

QuantAnalyzer 4 se puede ampliar para utilizar sus propios valores estadísticos personalizados, What If, Equidad o métodos de Monte Carlo, muchas otras partes del programa también se puede ampliar por fragmentos..

Todos estos métodos del programa son totalmente dinámicos, cada método (incluidos los predeterminados) es una clase Java independiente - fragmento - implementar 1 o 2 funciones simples que manipulen los pedidos.
Puedes inspirarte en cómo están hechos los métodos existentes a la hora de poner en práctica tu propia idea.

Para ampliar QuantAnalyzer hay que utilizar el módulo incorporado QuantEditor. Es un editor de código que permite crear y editar clases que luego se utilizarán en QuantAnalyzer.
El principio es muy similar al de trabajar con indicadores personalizados en su plataforma de negociación, pero la codificación es mucho más sencilla.

Ejemplo: creación de una nueva función Y si...

Los casos hipotéticos le permiten probar escenarios hipotéticos: por ejemplo, ¿qué pasaría si sólo realizara operaciones de lunes a jueves? ¿O si sólo realizara una operación al día?

Con el QuantEditor puedes crear tus propios casos como estos. En nuestro ejemplo vamos a hacer un caso simple que toma cada segundo comercio.
No es un escenario muy útil, pero muestra lo sencillo que es añadir nuevas funciones a los escenarios Y si...

Empezaremos abriendo QuantEditor desde la barra de herramientas.

QuantEditor se abrirá en una nueva ventana. Como queremos crear un nuevo caso Y si..., hacemos clic en nuevo en la barra de herramientas de QE. Allí elegiremos la opción Y si... y nombraremos a nuestro archivo TakeEverySecondTrade.

Después de pulsar OK el editor creará una nueva clase utilizando una plantilla de trabajo para la clase What If que ya contiene el código genérico para la clase What If.

La clase sólo tiene dos métodos: el constructor NegociarCadaSegundo() y función filtrar() que filtra la lista de pedidos según nuestros criterios.

Veamos primero el constructor.
Se llama igual que el nombre de nuestro archivo y se llama al principio cuando se carga esta clase.

Generalmente debemos establecer el nombre de la clase - lo veremos en las opciones Y si... en el Analizador EA por este nombre. En nuestro caso usaremos "Take Every Second Trade".
Si nuestra clase requiere algunos parámetros podemos definirlos aquí usando llamadas como addIntParameter(), addFloatParameter, addComboBoxParameter().
Puede encontrar la descripción de todas estas funciones en la sección de Ayuda de QuantEditor.

En nuestro caso no necesitamos ningún parámetro por lo que nuestro constructor tendrá este aspecto:

public TakeEverySecondTrade() {
   setName("Tomar cada dos operaciones");
   setFormatedName("Tomar una de cada dos operaciones");
}

Ahora tenemos que definir nuestro filtrar() función. Esta es la función donde debemos especificar lo que queremos de la clase.
Esta función se llama cuando se selecciona este caso hipotético. Recibe la lista de todas las órdenes ordenadas por hora de apertura. Puede manipular la lista de órdenes o una orden en particular; o eliminar una orden de la lista si lo desea.

El código básico (mostrado abajo) no hace nada, sólo recorre la lista de órdenes sin ninguna acción.

public void filter(SQOrderList originalOrders) throws Exception {
   int parámetro = getIntParameterValue("_PARÁMETRO_");

for(Iterator i = originalOrders.listIterator(); i.hasNext();) {
SQOrder order = i.next();

// todo - su acción personalizada
// las órdenes se pueden omitir o manipular aquí
}
}

En nuestro caso queremos eliminar uno de cada dos pedidos de la lista, de forma que sólo queden la mitad de los pedidos en la lista y podemos hacerlo con el siguiente código:

public void filter(SQOrderList pedidosoriginales) {
   boolean isSecondOrder = false;

for(Iterator i = originalOrders.listIterator(); i.hasNext();) {
SQOrder order = i.next();

// si la variable isSecondOrder = true eliminará el orden de los resultados
if(isSecondOrder) i.remove();

// establece la variable isSecondOrder al valor opuesto, de true a false, de false a true
isSecondOrder = !isSecondOrder;
}
}

Explicación del código:
- primero creamos la variabele isSecondOrder y la ponemos a false
- a continuación, a medida que avanzamos por los pedidos comprobamos si esta variable es verdadera y en caso afirmativo eliminamos el pedido
- después de cada comprobación establecemos la variable al valor opuesto (de falso a verdadero, de verdadero a falso) y pasamos a la siguiente orden

Este código eliminará uno de cada dos pedidos de la lista de pedidos.

Se acabó. Hemos terminado.

Ahora podemos hacer clic en Compile y nuestra nueva clase debería compilarse sin errores.

Ahora vuelva a EA Analyzer, vaya a ¿Y si y podrás ver la nueva funcionalidad que acabamos de implementar:

Aplícalo sobre alguna estrategia y deberías ver que tendrá sólo la mitad de las operaciones

En este ejemplo mostramos cómo EA Analyzer 3 hace posible añadir nuevas Y si... función. Puede crear nuevas Montecarlo o Control del patrimonio funcionalidad de manera muy siimilar.

Si crea alguna función interesante, le invitamos a compartirla en nuestro foro con otros.

¿Le ha resultado útil este artículo? El artículo era útil El artículo no era útil

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios