Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 14
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
Vale, puedes pensar. Imagínese, por ejemplo, que en cada iteración la red neuronal no hace una retropropagación del error estándar basada en la desviación del objetivo de la predicción, sino que obtiene datos que en la versión anterior de los pesos el comercio real difiere del ideal en tantos puntos. Y actualiza los pesos en función de esta información. Es decir, la información debe ser un flujo paralelo a la máquina. Tal vez, se pueda hacer.
¿Por qué necesitas pesas? ¿Por qué hablas de ellos en primer lugar?
Tenía entendido que se necesitan pesos previos, ahora entiendo que no entiendo nada)
¿Por qué necesitas pesas? ¿Por qué hablas de ellos en primer lugar?
Tenía entendido que se necesitan pesos previos, ahora entiendo que no entendí nada)
Pues parece que sí ))
No necesitamos las pesas. Sólo los he mencionado para que te quede claro. Necesitamos saber cómo ha operado el sistema en los pesos anteriores. Necesitamos el resultado del comercio de alguna forma integrada. Todo.
Los pesos son actualizados por el algoritmo.
Aquí, una simple función funciona. Hay que probar uno más complejo. Todavía hay que diferenciarlo, ese es el truco.
library(neuralnet)
y <- as.data.frame(matrix(runif(n = 10000, min = -15, max = 15), ncol = 2))
y$V3 <- runif(n = 5000, min = -15, max = 15)
y$V4 <- runif(n = 5000, min = -15, max = 15)
y$V5 <- runif(n = 5000, min = -15, max = 15)
y$V6 <- runif(n = 5000, min = -15, max = 15)
y$V7 <- runif(n = 5000, min = -15, max = 15)
y$V8 <- y$V1 ^ 2 + y$V2 ^ 2
colnames(y) <- c('input_1', 'input_2', 'noise_1', 'noise_2', 'noise_3', 'noise_4', 'noise_5', 'output')
f_f <- function(x, y){
1/2*(y-x)^2
}
print(
nn_model <- neuralnet(formula = output ~ input_1 + input_2 + noise_1
, data = y
, hidden = 1
, threshold = 0.01
, stepmax = 1e+05
, rep = 100
, startweights = NULL
, learningrate.limit = NULL
, learningrate.factor = list(minus = 0.5, plus = 1.2)
, learningrate=NULL
, lifesign = "none"
, lifesign.step = 10
, algorithm = "rprop+"
, err.fct = f_f #"sse"
, act.fct = "logistic"
, linear.output = F
, exclude = NULL
, constant.weights = NULL
, likelihood = FALSE
)
)
f_f <- function(x, y) 1/2*(y-x)^2
f_f - cuenta el error para la red ¿verdad?
x es el valor que debería tener (curva ideal)
y es como debería ser (la curva real)
La diferencia entre ellos es el error
necesito un vector de operaciones por velas anteriores, necesito las reglas para abrir las operaciones, necesito los datos de entrada de las operaciones
f_f <- function(x, y) 1/2*(y-x)^2
f_f - cuenta el error para la red ¿verdad?
x es el valor que debería tener (curva ideal)
y es como debería ser (la curva real)
La diferencia entre ellos es el error
Creo que necesito un vector de operaciones por velas, pero no entiendo cómo abrir operaciones con qué reglas, cómo deben ser estos datos de entrada
Un colega me ha enviado un enlace a un curso sobre aprendizaje automático, ¿te gustaría echarle un vistazo? Es gratis, pero está en Python por alguna razón ((
https://www.udacity.com/course/machine-learning-for-trading--ud501
Un colega me ha enviado un enlace a un curso sobre aprendizaje automático, ¿te gustaría echarle un vistazo? El curso es gratuito, pero está en Python por alguna razón ((
https://www.udacity.com/course/machine-learning-for-trading--ud501
El más eficaz:
1. Poner en R - 5 minutos.
2. Descargue el paquete rattle, que está diseñado como una GUI, por lo que no requiere ningún conocimiento de R.
3. Para reducir los costes de puesta en marcha puedes utilizar mi artículo. Contiene explicaciones y, lo que es más importante, tiene un archivo adjunto listo. Una vez que hayas visto mi archivo, podrás preparar el tuyo fácilmente.
4. Tienes seis modelos.
5. Lo más importante es que en Rattle puedes ver el ciclo completo del aprendizaje automático:
Todo esto le proporcionará una base sin lagunas y, lo que es más importante, una experiencia concreta de aprendizaje automático relacionado con el mercado de divisas.
PS.
La matraca te será muy útil no sólo en los primeros pasos, sino también más adelante: costes mínimos, para estimar algo, para experimentar...
PSPS
Por supuesto, no se puede prescindir de los libros. Aquí hay muchos. La búsqueda funciona perfectamente.
¡Gracias por la detallada aclaraciónDr.Trader!
Sabes, probablemente lo mejor y más correcto sería enseñar las propias inversiones, incluso el mismo zigzag, es decir, dar tres estados 1) Vuelta en U hacia arriba
2) inversión a la baja
3) no es una vuelta en U
Pero si se trata de enseñarlo, es bastante difícil captar las inversiones, además del sesgo en el número de observaciones, las clases "no invertidas" serán decenas o tal vez cientos de veces más
¿Y qué predictores utiliza y cuáles son los resultados?
Acabo de empezar a utilizar el análisis espectral, las primeras pruebas me salieron mucho mejor que con los indicadores, lo pasé por rattle, el error de entrenamiento y prueba era de un 6% aproximadamente, pero cuando empecé a utilizar R el error subió al 30% si no me equivoco, San Sanich dice que es reentrenamiento, así que todavía no entiendo mucho
También hay una forma de averiguar qué periodos dominan en el mercado a través del análisis espectral y luego se pueden utilizar estos periodos en los indicadores. Conseguiré indicadores adaptativos, no ajustados al historial.
Utilizo indicadores estándar como base para crear predictores. Yo mismo sigo experimentando con ellos, probando las ideas de este hilo del foro.
Lo he estado haciendo durante las últimas semanas, ahora el mejor resultado es el siguiente: (un montón de cálculos, estoy tratando de utilizar D1 marco de tiempo para el cálculo más rápido, más tarde voy a utilizar más pequeño marco de tiempo)
1) exportar de mt5 a csv: ohlc, tiempo, indicadores, todo para las últimas 10 barras. Recientemente he empezado a tomar el tiempo sólo de la barra más nueva, creo que el tiempo de las otras barras es calculable y por lo tanto no aporta ninguna información nueva. Salen a la luz varios centenares de predictores "primarios". El resultado requerido del aprendizaje es "1" o "0" - subida o bajada del precio en la siguiente barra. Mi método con zigzags no es estable y complejo, ahora estoy mejor trabajando con precios cercanos. Cuando trabaje el algoritmo completo para el entrenamiento del modelo desde cero, puede que empiece a trabajar en zigzags y en la predicción de la tendencia.
2) En R estoy haciendo diferentes operaciones matemáticas con los datos disponibles - suma, deltas, min, max, etc. Ya salen más de mil predictores.
3) Obviamente, después del segundo paso hay más basura de la necesaria. Lo estoy filtrando por el método del artículo sobre componentes básicoshttp://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/, SanSanych escribió sobre ello anteriormente. No estoy enseñando el modelo PCR en sí mismo y me he conformado con la función de preselección de predictores por ahora:
srcTable es una tabla con predictores, la última columna debe ser el resultado de entrenamiento requerido.pruneSig es mejor dejar -1.
Como resultado, la función devolverá una lista con los nombres de las columnas de la tabla que contienen alguna información útil. O una lista vacía si no se encuentra nada útil. Este método se menciona en el artículo como poco significativo, pero resulta ser bastante adecuado, tamiza muy bien la basura. Además, la lista de resultados se ordenará por relevancia, de más a menos útil.
4) Si la función devuelve una lista vacía - vuelvo a ejecutar el segundo paso, generando de nuevo diferentes combinaciones matemáticas sobre los datos disponibles, y luego el tercer paso para cribar. Tengo que repetir esto 3-4 veces. El volumen de datos crece con cada repetición, por lo que es mejor limitar de alguna manera el volumen de nuevos datos generados. Podemos cambiar esta función para la criba, de manera que si la lista sale vacía, devuelva uno o dos mejores resultados y genere nuevos predictores sólo a partir de ellos.
5) A continuación, según el artículo, debemos entrenar el modelo del componente principal. Tengo problemas con él - hasta ahora el mejor r-cuadrado para el modelo entrenado es 0,1, no es suficiente, el artículo dice que necesito al menos 0,95. Pero puedo entrenar algún otro modelo de R en los predictores obtenidos y dará un mejor resultado. Tengo más experiencia con la neurona, el mejor resultado en fronttest con ella sale con un error de alrededor del 37%. Se supone que el modelo PCE es más estable, sin necesidad de reentrenamiento, etc., pero hasta ahora no puedo conseguir ningún predictor para él.
Si tiene un error del 30% en el fronttest entonces es un modelo bastante rentable, haga Expert Advisor para mt5 y compruébelo en el probador de estrategias.
Un colega me ha enviado un enlace a un curso sobre aprendizaje automático, ¿te gustaría echarle un vistazo? Es gratis, pero está en Python por alguna razón ((
https://www.udacity.com/course/machine-learning-for-trading--ud501