Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Capturas de pantalla de la plataforma de comercio MetaTrader
GBPUSD, H1, 2017.03.01
Alpari International Limited, MetaTrader 5, Demo
¿Qué es el arco iris?
Por cierto, tomó los otros datos. De nuevo en la tercera imagen hay un arco iris. Supongo que esto sucede debido a su interferencia en el código con el que escribió este documento. Escribiste en el paper que hiciste algunas modificaciones.
Normalizar la aleatoriedad al inicializar los nodos no limita los propios nodos al entrenar. Puedes inicializar los nodos con unidades, no afectará al resultado.
Pero puede afectar a la velocidad de obtención del resultado.
El hecho de que inicialice los nodos con valores aleatorios del campo entre el mínimo y el máximo para cada una de las columnas por separado, simplemente acelera la convergencia, porque SOM no tiene que conducir los nodos a los campos especificados al principio.
Este proceso está orgánicamente entretejido en el propio proceso de aprendizaje, por lo que ni siquiera se puede decir que este es el momento en el que la malla está conduciendo y este es el momento en el que está aprendiendo. Conducir en un campo determinado significa ajustar el nodo con un coeficiente de cambio muy grande.
Así que, fundamentalmente, mi intervención no cambió nada. Sólo aceleró la velocidad de convergencia.
Pero si tienes quejas sobre este mecanismo, eres libre de arreglarlo. Cambiar la inicialización de los nodos al crear la rejilla en Include\SOMNode.mqh
//| Inicialización de los parámetros del nodo en el límite establecido |
//+------------------------------------------------------------------+
void CSOMNode::InitNode(int x1,int y1,int x2,int y2,const double &min_values[],const double &max_values[])
{
//--- establece las coordenadas del nodo
m_x1=x1;
m_y1=y1;
m_x2=x2;
m_y2=y2;
//--- cálculo de las coordenadas del centro del nodo
m_x=x1+MathAbs((x2-x1))/2;
m_y=y1+MathAbs((y2-y1))/2;
//--- prepara un array de pesos
ArrayResize(m_weights,m_dimension);
//--- inicialización de los pesos con valores aleatorios;
for(int i=0; i<m_dimension; i++) {m_weights[i]=min_values[i]+(max_values[i]-min_values[i])*rand()/32768;}
};
Pon rand() sin normalizar y será exactamente como en el algoritmo original. Así: m_pesos[i]=rand();
¿Estoy en lo cierto al entender que si se crea un archivo "optim.csv" como este:
sólo hay dos valores:
entonces ejecutando "Sample5_SOM_Net_Player" mostrará algo como esto
es decir, la red Cohen encontró que el archivo "optim.csv" tiene dos ... ¿Dos qué? ¿Patrones?
Es decir, si quiero estudiar dos barras vecinas - si son alcistas o bajistas, necesito hacer una descripción de tales secuencias, algo como esto:
Al final habrá cuatro secuencias principales ("11", "12", "21", "22") y una quinta - cuando alguna barra no es ni alcista ni bajista (el tamaño del cuerpo de la barra es cero).
A continuación, sólo tiene que ir a través del número dado de barras y hacer un archivo "optim.csv" en el que escribir estas secuencias. Obtendrá algo como
Luego ejecute "Sample5_SOM_Net_Player". ¿Correcto?
Usted tiene dos valores, pero ha ordenado 250 nodos (50x50), por lo que naturalmente la rejilla extiende los nodos por todo el campo de valores intermedios.
Además, ha introducido un valor insignificante Tiempo en el campo de agrupación. Si desea utilizar el tiempo, entonces la estructura de datos debe reflejar de alguna manera la periodicidad, de lo contrario cómo entenderá la rejilla en qué se diferencia el lunes del viernes. Tal representación del tiempo como usted tiene es razonable al menos en los datos de varios años, entonces se reunirán repeticiones (si se quitan los valores del año, por supuesto).
Entender una idea simple, la rejilla de Kohonen coloca nodos en la vecindad de similares (en términos multivariantes) ejemplos. Y entonces todo encajará con la comprensión del trabajo.
Usted tiene dos valores, pero ha ordenado 250 nodos (50x50), por lo que naturalmente la rejilla extiende los nodos por todo el campo de valores intermedios.
Además, ha introducido un valor insignificante Tiempo en el campo de agrupación. Si desea utilizar el tiempo, entonces la estructura de datos debe reflejar de alguna manera la periodicidad, de lo contrario cómo entenderá la rejilla en qué se diferencia el lunes del viernes. Tal representación del tiempo como usted tiene es razonable al menos en los datos de varios años, entonces se reunirán repeticiones (si se quitan los valores del año, por supuesto).
Entender una idea simple, la rejilla de Kohonen coloca los nodos en la vecindad de similares (en términos multivariantes) ejemplos. Y entonces las cosas caerán en su lugar con la comprensión del funcionamiento.
Si rehago el archivo csv con este formato: [tamaño del cuerpo de la vela][día de la semana (1, 2, 3, 4, 5)] y lo relleno para, digamos, 100 barras, ¿terminaré con 100 EJEMPLOS en el archivo csv? ¿Y cuántos nodos poner en ese caso? 3*3?
Si rehago el archivo csv con este formato [tamaño del cuerpo de la vela][día de la semana (1, 2, 3, 4, 5)] y lo relleno para, digamos, 100 barras, ¿terminaré con 100 EJEMPLOS en el fichero csv? ¿Y cuántos nodos poner en ese caso? 3*3?
Depende de lo que quieras obtener, clustering o regresión.
Clustering combinará varios ejemplos en un cluster, luego el número de nodos debe ser menor que el número de ejemplos.
La regresión requerirá más nodos que ejemplos, para cubrir campos en puntos que no están representados en los ejemplos.
De nuevo este proceso no es binario, por lo que no se puede decir que sea clustering, sino que es regresión, imagínatelo como un espectro multidireccional, a más clustering menos regresión y viceversa. Y en el punto cero, cuando el número de nodos es igual al número de ejemplos, tenemos aproximadamente las mismas cantidades de agrupación y regresión.
Depende de si desea clustering o regresión.
El clustering combinará varios ejemplos en un cluster, luego el número de nodos debe ser menor que el número de ejemplos.
La regresión requerirá más nodos que ejemplos, para cubrir campos en puntos que no están representados en los ejemplos.
Para simplificar, quería obtener una visualización para cuatro secuencias:
Foro sobre negociación, sistemas automatizados de negociación y prueba de estrategias de negociación.
Discusión del artículo "Una vez más sobre los mapas de Kohonen"
Vladimir Karputov, 2017.04.04 13:49
Es decir, si quiero investigar dos barras vecinas - si son alcistas o bajistas, necesito hacer una descripción de tales secuencias, algo así como:
Al final habrá cuatro secuencias principales ("11", "12", "21", "22") y una quinta - cuando alguna barra no es ni alcista ni bajista (el tamaño del cuerpo de la barra es cero).
en un número determinado de barras. Es decir, ejecuto el script sobre un número determinado de barras y asigno una de las cinco secuencias ("0", "11", "12", "21", "22"). También asigno un día de la semana. Obtengo 100 ejemplos de [nombre de la secuencia][día de la semana] para 100 compases.
Bien, para simplificar, quería una visualización para cuatro secuencias:
en un número determinado de compases. Es decir, paso el script sobre un número dado de compases, y le asigno una de las cinco secuencias ("0", "11", "12", "21", "22"). También le asigno un día de la semana. Al final tengo 100 ejemplos de [nombre de la secuencia][día de la semana] para 100 compases.
Lo siento, no lo entiendo, si tienes una combinación de condiciones y las conoces exactamente, ¿para qué necesitas una cuadrícula?
Si no, es mejor mostrar en la rejilla lo que te interesa, por ejemplo, la diferencia Open[i]-Close[i] en una columna y la diferencia Open[i+1]-Close[i+1] en otra columna, y ya en base a la agrupación establecer las condiciones que cluster interpretar.
Lo siento, no lo entiendo, si tienes una combinación de condiciones y sabes exactamente cuáles son, ¿para qué necesitas una cuadrícula?
***