Redes Neuronales en Metatrader

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Avatar de Usuario
YsEkU
Mensajes: 179
Registrado: 02 Ene 2007 23:24

Re: Redes Neuronales en Metatrader

Mensaje por YsEkU »

YsEkU, yo el año pasado no encontre en la red librerias para hacer las operaciones virtuales ni para analizar los resultdos, si quieres podemos intentar el hacerlo.
No lo he probado, pero esto promete...
*Libreria para gestionar ordenes virtuales en Metatrader:
http://codebase.mql4.com/6269
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Re: Redes Neuronales en Metatrader

Mensaje por elcctrro »

Muchas gracias YsEkU lo mirare con atención. este año mi optimizador ha de funcionar...mejor que el del año pasado.
Avatar de Usuario
YsEkU
Mensajes: 179
Registrado: 02 Ene 2007 23:24

Re: Redes Neuronales en Metatrader

Mensaje por YsEkU »

Saludos hermanos.

...Un diamante en bruto en esto de las RNA con FANN:
056-060_RedesNeuralesLM35.crop.pdf
(1.62 MiB) Descargado 288 veces
Avatar de Usuario
YsEkU
Mensajes: 179
Registrado: 02 Ene 2007 23:24

Re: Redes Neuronales en Metatrader

Mensaje por YsEkU »

... Y en cuanto al optimizador. Usando la libreria del post anterior es bastante sencillo.


*Por un lado y para ejecutar ordenes a tiempo real, emula las ordenes de tipo:
Order*():{OrderSelect(),OrderSend()... etc) por
v.Order*():{v.OrderSelect(),v.OrderSend()... etc) para lanzar las ordenes en el registro virtual.

*Y para lanzar ordenes virtuales en el historico se usa la funcion v.SetOrder:

Código: Seleccionar todo

int v.SetOrder(string sy, int op, double ll, double pp,double sl=0, double tp=0, int mn=0, datetime ex=0, string lsComm="") 
//+----------------------------------------------------------------------------+
//| Descripción: Registro de una orden en historico.                                        |
//| Parámetros:                                                                |
//|  sy - nombre del symbolo (NULL o "" - el símbolo actual)                   |
//|  op - tipo de operacion                                                    |
//|  ll - lotes                                                                |
//|  pp - precio                                                               |
//|  sl - stop loss                                                            |
//|  tp - take profit                                                          |
//|  mn - magic number                                                         |
//|  ex - expiración                                                           |
//+----------------------------------------------------------------------------+
Para usar la libreria virtual, debes indicar en cada llamada en que barra te encuentras, asi como relizar el calculo de las operaciones abiertas con las funciones:

SetCurrentDateTime(dt); Y RecalcTradeArray(dt);

Os dejo un ejemplo muy basico, con el esqueleto del optimizador ya realizado, en el incluyo una funcion
optimizador(datetime fecha.inicio,datetime fecha.fin) con su correspondiente v.Start() en el que hay ejemplo de los tres tipos de uso de la libreria como optimizador...
YSoptim-EA.mq4
(3.44 KiB) Descargado 127 veces
La libreria, incluye ademas funciones para buscar datos en el Array de historico virtual y filtrar ordenes, pero en este ejemplo no salen...

Saludos hermanos.
Avatar de Usuario
YsEkU
Mensajes: 179
Registrado: 02 Ene 2007 23:24

Re: Redes Neuronales en Metatrader

Mensaje por YsEkU »

Saludos hermanos.

Espero que hagais buen uso de esto... :-D
Libreria para gestión de ordenes virtuales COMENTADA EN CASTELLANO:
YSArrayVO.mq4
(39.39 KiB) Descargado 192 veces
Tiene dos modos de uso principales, como optimizador interno y como Array virtual de ordenes a tiempo real(del post anterior).
YsEkU escribió: *Por un lado y para ejecutar ordenes a tiempo real, emula las ordenes de tipo:
Order*():{OrderSelect(),OrderSend()... etc) por
v.Order*():{v.OrderSelect(),v.OrderSend()... etc) para lanzar las ordenes en el registro virtual.
*Y para lanzar ordenes virtuales en el historico se usa la funcion v.SetOrder:
Para usar la libreria virtual, debes indicar en cada llamada en que barra te encuentras, asi como relizar el calculo de las operaciones abiertas con las funciones: SetCurrentDateTime(dt); Y RecalcTradeArray(dt);
---------------------------------------------------------------------------------------------------------------------
Ok, en el ejemplo teneis todo para entender el funcionamiento básico.

Pero tambien pueden hacerse otro tipo de optimizaciones con mucha más potencia, un problema clasico como la "Reversion a la Media" podría ser entrenado en una RN con perceptrones "a mano" encontrando el punto exacto de maximo beneficio.

Para hacer esto hay que entender bien las funciones SetCurrentDateTime(dt); Y RecalcTradeArray(dt);
La optimizacion NO TIENE POR QUE SER LINEAL, es decir, cuando por ejemplo el optimizador cierra una orden por un stop o un take, con SetCurrentDateTime() puedo volver de nuevo a la barra de apertura de la operación y volver a abrirla y optimizar parametros a fondo y con total libertad, no como el optimizador de serie ademas de poder usarlo desde dentro del experto.

Ademas para los que programais bien,el siguiente paso sería utilizar la estructura que tiene para gestionar el Array virtual en ficheros, para ir un pasito mas alla y realizar un array similar que lleve el control de los resultados de cada optimizacion emulando la salida del optimizador de serie pero internamente.

Y ya de mi ejemplo de optimizador, si se os ocurre una forma mejor para la estructura de separar el start() y el v.start()a mí me a parece que queda muy bien en el conjunto de la libreria, pero vamos se puede mejorar.

Espero ver algun optimizador más currado que el mío, la verdad es que en el post está todo lo necesarío, solo hay que montarse el tetris jejeje :-D

Corto y cierro...
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”