Prueba de los sistemas de previsión en tiempo real - página 19

 
grasn >> :

Un poco más tarde podré dar una estimación de la probabilidad de que se cumpla la previsión. Pregunta: ¿de qué correlación habla?

Me refiero a algo que permita evaluar la calidad de un sistema de predicción en algún tipo de puntos. Para poder coger dos sistemas, puntuar cada uno, comparar las puntuaciones y decir "este es XX mejor que aquel".

En general, sería interesante pensar en cómo se podría hacer esa estimación con mayor precisión...

El coeficiente de correlación es lo primero que me vino a la mente. Así.

Retrocedemos en la historia un par de años.

Cada hora que ejecutamos el sistema en el historial, construye una previsión y cuenta su correlación con el historial

Entonces, la correlación media es la puntuación del sistema.

¿Y en qué técnicas se basa para estimar la probabilidad de realización de la previsión?


 

Siempre he querido probar un parámetro curioso: la expectativa matemática en cada sección de tiempo, pero nunca he tenido suficiente tiempo. El cálculo es bastante sencillo, es la suma de los productos de los niveles de precios por las correspondientes frecuencias de ocurrencia. La probabilidad se toma del estado de probabilidad inicial del sistema.


No he probado el parámetro en absoluto, así que no puedo decir nada. Pero sólo por interés deportivo: 15 min, EURUSD, previsión de un día desde el momento actual

Vector de estado (un poco fuera de lugar).


Expectativa sobre las secciones de tiempo (1 muestra - 15 minutos)




Niveles probables (o poco probables):



 

a Lord_Shadows

Переименовали ветку. Теперь уже не игра, а тестирование, и кончились прогнозы.

Las predicciones aún no han empezado, en el sentido de que sólo estamos calentando :o))) únete :o)


a shtoba

Me refiero a algo que permita evaluar la calidad del sistema de predicción en términos de algunos puntos. En general, sería interesante pensar en cómo hacer esa estimación.

Hace tiempo que se inventó esta clasificación para los campeonatos; de hecho, es el número de puntos ganados. Puedo añadir -sin aplicar ningún MM- que sólo funciona el modelo. Lo principal es para qué sirven estos puntos. ¿Qué sentido tiene?

Si vamos al historial de un par de años, ejecutamos el sistema cada hora, construye la previsión y calcula su correlación con el historial. Entonces, el valor medio de la correlación es una especie de puntuación del sistema.

El mercado nunca se repite, y si calculas la correlación de la previsión utilizando 3 datos, encontrarás muchas situaciones "similares". Pero el coeficiente no dice nada.

¿Y qué métodos utilizan para estimar la probabilidad de aplicación de las previsiones?

De dos maneras:

(1) Se realiza una predicción en cada recuento y se evalúa su rendimiento. Luego se calculan las frecuencias, si resulta, se realiza un análisis más complejo para relacionar la frecuencia con la situación actual con la previsión, independientemente del modelo

(2) El segundo método, más teórico, se encuentra en el propio modelo.

 

¡¡¡¡FELIZ DÍA DE LA VOZ!!!! ¡¡¡FELIZ DÍA DE NUESTRA VICTORIA!!! :о)))

Sólo ha perdido un poco el nivel de 1,3331, el resto está bien. Ahora una situación curiosa en el EURUSD. A continuación se muestra el cálculo del "mapa" de entropía de la información:

Si nos atenemos al principio de máxima entropía, deberíamos esperar un retroceso hasta el nivel de 1,3445 aproximadamente, pero por otro lado, el modelo dinámico muestra una posibilidad esencial de subir hasta 1,3756 (recuerdo que considero el nivel de precios como un nivel estadístico, alrededor del cual el precio se "concentrará"). Así que lo más razonable es no empezar a operar el lunes, sino esperar unas 10-20 lecturas de 15 minutos cada una :o)


¿Qué opinan, colegas? ¿Quién tiene planes/objetivos para el lunes?


TEMA:

(1) He empezado a aprender MQL y he hecho un script "fetch data" muy chulo :o) para MathCAD:

extern int diapason = 7000;


int start()
{
double process[];

GetHistoryProcess(process, diapason);
CreateFlowData(process);

return(0);
}


void GetHistoryProcess(double signal[], int window)
{
int n;
int i;

double y[];

ArrayResize(y, window);
ArrayInitialize(y, 0.0);

ArrayResize(signal, window);
ArrayInitialize(signal, 0.0);

i=0;

for(n=0; n<=window-1; n++)
{
y[i]=(High[window-n-1]+Low[window-n-1])/2.0;
i=i+1;
}

ArrayCopy(signal, y, 0, 0, WHOLE_ARRAY);

return(0);
}


void CreateFlowData(double process[])
{
int i;
int N;
int Handle;

string FILE="data.csv";

N=ArraySize(process);
Handle=FileOpen(FILE, FILE_CSV|FILE_WRITE,";");

if(Handle<0)
{
if(GetLastError()==4103)
{
Alert("Нет файла с именем ",FILE);
}
else
{
Alert("Ошибка при открытии файла ",FILE);
}

return;
}

for(i=0; i<=N-1; i++)
{
FileWrite(Handle, process[i]);
}

FileClose(Handle);

return(0);
}


Al principio no entendía por qué no se cumplían los pronósticos, pero luego lo descubrí: me olvidé de "voltear" los datos :o). He introducido extern pensando que tendré una interfaz en la inicialización, donde puedo introducir el rango de historia deseado (también cambia) sin compilación. ¿Entonces no hay interfaz, no funciona para los scripts? Tomó a algunos expertos como ejemplo, allí funciona.


(2) No consigo averiguar cómo "escribir en el futuro" la serie temporal prevista (por ejemplo). Mientras se calculan, y mientras se procesan y analizan los datos, el tiempo se desplaza, por ejemplo, unas cuantas cuentas. A grandes rasgos, quiero cargar 100 muestras en el futuro desde alguna fecha histórica (o cero), es decir, algunos datos tienen que cargarse primero en el historial antes de la barra actual, y otros más allá. No funciona.

 
grasn >> :

Al principio no podía entender por qué las predicciones no se cumplían en absoluto, pero luego lo descubrí: me olvidé de "voltear" los datos :o). Introducido extern, pensando que durante la inicialización habrá una interfaz, donde puedo introducir el rango histórico deseado (también cambia) sin compilación. ¿Entonces no hay interfaz, no funciona para los scripts? Tomó a algunos expertos como ejemplo, allí funciona.

No funciona para los scripts, sólo para los indicadores y Asesores Expertos. Haga su exportación como un indicador si desea gestionar las variables externas


(2) No consigo averiguar cómo (por ejemplo) debo "escribir la serie temporal prevista en el futuro". Mientras se calculaba, y mientras se procesaban y analizaban los datos, el tiempo se movía, digamos, unos cuantos recuentos? A grandes rasgos, quiero cargar 100 muestras en el futuro desde alguna fecha histórica (o cero), es decir, algunos datos tienen que cargarse primero en el historial antes de la barra actual, y otros más allá. Parece que no funciona.

No hay futuro en la MT. Todas las series se colocan en matrices, y viceversa. El índice 0 corresponde a la hora actual (o la más reciente disponible), el índice 1 corresponde a la barra hacia atrás, etc. Entonces para el futuro necesitamos los índices -1, -2, etc., pero no hay tales índices negativos en mql.

Pero hay otros líos. Mira la función SetIndexShift para los indicadores (establece el desplazamiento de la línea del indicador relativamente al principio del gráfico). Es sólo un cambio visual. Los índices son como eran y se mantienen.


También existe SetIndexDrawBegin (Establece el número de serie de la barra desde el inicio de los datos, desde el cual debe comenzar el dibujo de la línea indicadora), puede utilizarse para cortar el dibujo por la izquierda para una barra especificada.

 

Para que todo sea sincrónico en el tiempo - marque los valores de sus series no con índices, sino con tiempo y sincronícelos con el gráfico MT por Tiempo[barra].

Pero hay un problema: el eje temporal del gráfico puede ser no uniforme. Si no hay barras en la serie inicial en el gráfico (no hay conexión con el servidor o hay un hueco por alguna otra razón) - entonces las barras se seguirán dibujando de forma continua, y el tiempo saltará sobre estos huecos. Esto es natural para el "pasado".

 
grasn >> :

... Introducido extern, pensando que en la inicialización habrá una interfaz donde puedo introducir el rango histórico deseado (también cambia) sin compilar. ¿Entonces no hay interfaz, no funciona para los scripts? Tomando como ejemplo a algunos expertos, funciona allí....

Inserta la #propiedad show_inputs en el script y tu externo aparecerá cuando el script se ejecute.

 

a Shtoba, granit77

Colegas, gracias por la ayuda. :о) No estoy muy contento con estos indicadores :o). No sé cómo utilizarlos. Para el comercio son niveles de estado locales, según el concepto de modelado de mercado - el precio se "concentra" cerca de ellos. En la imagen son rojos (más precisamente, no los he calculado todavía, estoy preparando un astrolabio :o)):

Teóricamente, se pueden mostrar en MT como líneas ("tendencia" por ejemplo, el tipo parece ser OBJ_TREND). Sólo se plantea una cuestión muy sencilla, cómo recalcular los recuentos de tiempo (0, 1, 2, .... (15 minutos cada uno)) a tiempo "futuro". Hasta ahora, he encontrado la siguiente manera: tomamos el número de segundos TimeCurrent( ), le añadimos el previsto y este número debe ser convertido en tiempo de alguna manera. ¿Cómo lo hago?

PS: Pero todavía tenemos algo en esta entropía. El precio no ha llegado al nivel, pero ha empezado a moverse y si hacemos un trato todavía estaríamos en el plus: o)

 

 
grasn >> :
... Sólo se plantea una cuestión muy sencilla, cómo recalcular los recuentos de tiempo (0, 1, 2, .... (15 minutos cada uno)) al tiempo "futuro"...
FutureTime=Time[0]+N*Period()*60;
где N - номер бара в будущее от нулевого.