SOLO PARA LECTURA

El foro es ahora un archivo de sólo lectura.

Para informes de errores y preguntas sobre la plataforma → [email protected]

Nuestra comunidad vive en Discord y YouTube: ¡únete a nosotros!

ÚNASE A NOSOTROS Discordia YouTube

Monte Carlo Función de verificación

5 respuestas

huangwh88

Cliente, bbp_participante, comunidad, sq-ultimate, 116 respuestas.

Visitar el perfil

hace 5 años #270606

En la documentación https://strategyquant.com/doc/quantanalyzer/predict-verify-strategy-performance-using-monte-carlo-simulation/se menciona que la función de verificación se supone que compara el rendimiento en vivo de la estrategia con el rango predicho utilizando MC.

Pero, ¿es posible importar los resultados reales en directo y compararlos con las predicciones del MC? Ahora mismo parece que se dividen los datos en partes IS y OOS y se comparan los resultados OOS con las predicciones MC obtenidas a partir de los resultados IS.

 

0

tomas262

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 5 años #270622

Hola,

Sí, puede utilizar la predicción MC y aplicarla a los resultados de sus operaciones en tiempo real. Simplemente cargue los resultados y ajuste los datos "Verificar - fecha" a la fecha a partir de la cual desea iniciar la simulación de la predicción. En el ejemplo adjunto se cargan los resultados del 1.1.2021 al 24.5.2021. La predicción se inicia a partir del 1.3.2021 para que podamos comparar si estamos dentro de los límites de la simulación MC con los resultados de nuestras operaciones.

Adjuntos:
Debes acceda a para ver los archivos adjuntos.

0

Massimo Scapini

Abonado, bbp_participant, cliente, comunidad, sq-ultimate, 62 respuestas.

Visitar el perfil

hace 3 años #280024

Sí,

pero de esta forma supongo que los datos vivos anteriores al 1 de marzo de 2021 se utilizan para simular los datos posteriores, que no es lo que uno puede querer...

Preferiría cargar dos conjuntos diferentes: el primero con los datos simulados del pasado, el segundo con los datos reales (como en la sección "Comparar datos") y luego utilizar el primer conjunto de datos para simular el segundo.

¿Puede solucionarse cargando datos simulados anteriores y datos reales en un único archivo? En caso afirmativo, ¿qué formato podría utilizarse?

Además, ¿cómo puedo cambiar el número de operaciones utilizadas para la función "Predecir"?

0

Massimo Scapini

Abonado, bbp_participant, cliente, comunidad, sq-ultimate, 62 respuestas.

Visitar el perfil

hace 3 años #280025

Probablemente encontré la manera (¡quizás fue lo que sugeriste pero simplemente no lo entendí!):

1. Cargar los datos simulados

2. Cargar los datos en tiempo real

3. Cree una cartera fusionando 1 y 2

4. Ejecute el MC utilizando la fecha de inicio de 2 como referencia

5. ¡Listo!

0

Massimo Scapini

Abonado, bbp_participant, cliente, comunidad, sq-ultimate, 62 respuestas.

Visitar el perfil

hace 3 años #280041

En principio funciona...

... pero desgraciadamente con MT4 la visualización de resultados es bastante engañosa porque todas las transacciones contenidas en el informe de MT4 se cuentan como operaciones, al menos en el gráfico (no sé si en la simulación también).

Ver anexo

 

Para solucionarlo, hay que limpiar el informe MT4 manualmente antes de cargarlo en QA. Bastante molesto

Adjuntos:
Debes acceda a para ver los archivos adjuntos.

0

marca registrada

Abonado, bbp_participant, 2 respuestas.

Visitar el perfil

hace 1 mes #293111

Yo supero este Problem programando un Filtro para Fijar la Fecha hasta allí el MC debe usar los Datos. Usted simplemente punta en su fecha en formato yyyymmdd y utilizar la misma fecha en la función de verificación.

---------

paquete com.strategyquant.extend.MonteCarloMethods;

 

import com.strategyquant.lib.results.SQOrder;

import com.strategyquant.lib.results.SQOrderList;

import com.strategyquant.lib.snippets.MonteCarloSim.MonteCarloMethod;

import java.util.Calendar;

 

public class DateFilter extends MonteCarloMethod {

 

public DateFilter() {

setName(“FilterByDate”);

// Datum im Format YYYYMMDD (z.B. 20231231 für 31.12.2023)

addIntParameter(“_STOP_DATE_”, “Nur Trades bis Datum (YYYYMMDD)”, 20231231, 19000101, 21001231, 1);

setFormatedName(“Filtro: Operaciones bis _STOP_DATE_”);

}

 

@Override

public void compute(SQOrderList originalOrders) throws Exception {

int stopDate = getIntParameterValue(“_STOP_DATE_”);

SQOrderList filteredOrders = new SQOrderList();

 

for(int i = 0; i < originalOrders.size(); i++) {

SQOrder order = originalOrders.get(i);

 

// Umrechnung der CloseTime (Long/Timestamp) in YYYYMMDD

Calendario cal = Calendario.getInstance();

cal.setTimeInMillis(order.CloseTime);

int fechaPedido = (cal.get(Calendar.YEAR) * 10000)

+ ((cal.get(Calendar.MONTH) + 1) * 100)

+ cal.get(Calendar.DAY_OF_MONTH);

 

// Nur Trades hinzufügen, die am oor dem Stichtag liegen

if(orderDate <= stopDate) {

filteredOrders.add(order.clone());

}

}

 

// La lista original se completará con la lista modificada

originalOrders.clear();

for(int j = 0; j < filteredOrders.size(); j++) {

pedidosoriginales.add(pedidosfiltrados.get(j).clone());

}

 

// Opcional: Si las carteras de los métodos MC siguientes son iguales

// java.util.

Collections.shuffle(pedidosoriginales);

}

}

0

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)