Redes Neuronales en Metatrader

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Avatar de Usuario
nstrader
Mensajes: 257
Registrado: 24 Mar 2007 19:33

Mensaje por nstrader »

Depende de los datos que quieras encontrar, como he dicho antes, la mejor operación en un historial te la va a sacar, pero en el futuro....

Las redes neuronales, sun muy buenas para trabajar con cantidad enorme de datos, si los datos que le metes a la red son erroneos o son de indicadores que van un paso por detrás del precio, la red te sacará operaciones a contra tiempo o erroneas.

Yo lo que creo que debería encontrar la red por ejemplo en vez de buscar buenas operaciones en un historial ,que buscara las mejores lineas de soporte o resistencia de todos los Periodos de un activo y las clasificara, para luego establecer una estrategia con esos datos.

Es decir una vez tengamos la estrategia fundamentada, utilizar las redes neuronales para mejorarlas, de esta forma si que se puede medir y corroborar los resultados de da una red.

Un saludo
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Mensaje por Fer137 »

learntrader escribió:al final en que ha quedado lo de las redes neuronales?sirven para tradear o no?es que queira programar la del paco este si es que realmente vale la pena...saludos
Por lo que dice en el blog es simplemente un montón de parametros sobreoptimizados hasta el absurdo en determinado periodo de tiempo y ademas con los stoploss mayores que los takeprofit.
Lo raro es que no saliera un 90 o 100% de operaciones ganadoras, da igual los datos de entrada que le ponga, lo mismo daría los datos del grafico, de otro activo, o las temperaturas diarias de su pueblo. Con ese monton de parametros la optimización encontrará facilmente una correlación entre cualquier conjunto de numeros y un conjunto de operaciones.

Las funciones en si mismas pueden ser utiles, pero tras esa optimización se debe comprobar los resultados en otros periodos de tiempo, no en el mismo donde lo optimizó.
CarlosSanchez
Mensajes: 4
Registrado: 26 Mar 2009 00:47

Ayuda en la Programación de Metatrader

Mensaje por CarlosSanchez »

Como Trader he visto que algunas estrategias son buenas siempre y cuando los indicadores y parametros utilizados sean lo bastante especificos y exactos: actualmente me encuentro aprendiendo sobre programacion en Metatrader y queria por favor me ayudaran con una inquietud que tengo: necesito desarrollar el código para especificar el número de operaciones máximas que se deben abrir en el momento exacto en que los indicadores y parametros concuerden. Existe algún código que me permita colocarle un límite máximo de operaciones que se deben abrir???. He revisado el Manual y no lo he detallado, si alguien me puede colaborar de antemano le agradezco.
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Mensaje por elcctrro »

Mediante la funcion "OrdersTotal( )" puedes tener el valor de ordenes que tienes ya abiertas y con una variable en la que especifiques el número máximo que permites abrir controlar las aperturas.

Un saludo.
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Mensaje por elcctrro »

Yo entiendo que el tema de la optimizacion aplicado al trading debe ser enfocado desde un punto de vista natural, simulando a como ajustariamos el sistema si estuvieramos interactuando con él, es decir como si el experto fuera una herramienta de apoyo a la operativa del trader que es realmente quien tiene el control.
1º.- Yo más que en cuestiones y divagaciones de si son pardas o tordas cogeria un sistema que funcione y que con una optimización se vea que se puede mejorar el rendimiento. Por ejemplo un sistema de cruce de una media con su desplazada dos barras.
2º.- Dentro del experto pondria en una subrrutina el optimizador.
3º.- el optimizador simularia las operaciones realizadas en las ultimas 100 barras para un intervalo de mas menos 6 longitudes de la media actualmente utilizada y daria como resultado el valor de la media que mejor ha funcionado en estas últimas 100 barras.
4º Por ultimo recogemos el valor del dato del optimizador y se lo colocamos a la media con la que estamos decidiendo las operaciones reales.

Este método no usa algoritmos genéticos, ni intenta adivinar el futuro, simplemente intentaría trabajar con lo que mejor le ha funcionado ultimamente, nada de una optimizacion con datos de dos años que estan muy alejados de la realidad actual.

Un saludo.

CarlosSanchez
Mensajes: 4
Registrado: 26 Mar 2009 00:47

Mensaje por CarlosSanchez »

elcctrro mil gracias, si entiendo el código seria mas o menos asi:

int MaxTrades = 3;

for (MaxTrades = OrdersTotal(); MaxTrades >= 0; MaxTrades--)
{
If ......

Te agradecería que por favor me dieras un ejemplo claro de como se haria, porque no estoy muy seguro de que estos parametros que yo coloco esten bien fundamentados.

Cordial Saludo.
Avatar de Usuario
nstrader
Mensajes: 257
Registrado: 24 Mar 2007 19:33

Mensaje por nstrader »

Si no he entendido mal la pregunta sería algo así

Código: Seleccionar todo

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   int Magic = 1234;
   int MaxTrades = 3; 
   
   //Hay Señal de Compra
   if(N_BUY(Magic) < MaxTrades)//solo comprueba compras
   {
      OrderSend(...);
   }
   else
   {
      //Alert();
   }
   
   //Hay Señal de Venta
   if(N_SELL(Magic) < MaxTrades)//solo comprueba ventas
   {
      OrderSend(...);
   }
   else
   {
      //Alert();
   }
   
   //O Todo junto
   if(N_ALL(Magic) < 3)//comprueba compras y ventas
   {
      OrderSend(...);
   }
   else
   {
      //Lo que quieras.
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+

int N_BUY(int MG)
{
   int N_BUY = 0;
   for(int nb=0;nb<OrdersTotal();nb++)
   {
      if(OrderSelect(nb,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()!=Symbol()) continue;            
      if(MG == OrderMagicNumber() && OrderType() == OP_BUY)
      {
         N_BUY++;
      }
   }
   return (N_BUY);
}

int N_SELL(int MG)
{
   int N_SELL = 0;
   for(int ns=0;ns<OrdersTotal();ns++)
   {
      if(OrderSelect(ns,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()!=Symbol()) continue;            
      if(MG == OrderMagicNumber() && OrderType() == OP_SELL)
      {
         N_SELL++;
      }
   }
   return (N_SELL);
}

int N_ALL(int MG)
{
   int N_ALL = 0;
   for(int ns=0;ns<OrdersTotal();ns++)
   {
      if(OrderSelect(ns,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()!=Symbol()) continue;            
      if(MG == OrderMagicNumber() && OrderType() <= 1)
      {
         N_ALL++;
      }
   }
   return (N_ALL);
}
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Mensaje por elcctrro »

PARA ==> CarlosSanchez

// ABRO EN BAJISTA
if (Direccion==-1 && OrdersTotal()<OrdenesMaximas ) // Pasamos de BUY a SELL
{
Alert("Abriendo SELL ");
cierroBUY();
abroSELL();
}

Un saludo
CarlosSanchez
Mensajes: 4
Registrado: 26 Mar 2009 00:47

Mensaje por CarlosSanchez »

Muchisimas Gracias a Ambos, trabajare en estos códigos y cualquier avance les estare comentando. Mil Gracias.
CarlosSanchez
Mensajes: 4
Registrado: 26 Mar 2009 00:47

Mensaje por CarlosSanchez »

Señores una pregunta adicional, tengo este código para cerrar ordenes pero me genera error "Invalid Ticket", se que hace referencia al numero id del ticket pero nose como establecerlo (el número de ticket que deseo cerrar), sera que me pueden ayudar?

int start ()
{
int ticket;
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-70*Point,Ask+50*Point,NULL,0,0,CLR_NONE);
if(ticket>0)
}
if(iMA(NULL,0,14,0,MODE_SMA,PRICE_CLOSE,0)<=iMA(NULL,0,28,0,MODE_SMA,PRICE_CLOSE,0))
{
OrderClose("""ticket"""???,1,Ask,3,CLR_NONE);
return(0);
}
return(0);
}

Igual me pasa a la hora de modificar una orden, como hago para que dentro del código, el sistema sepa que ticket me debe cerrar o modificar? como hago para asignarle un id??
Avatar de Usuario
nstrader
Mensajes: 257
Registrado: 24 Mar 2007 19:33

Mensaje por nstrader »

Jeje el típico cruce de medias, se nota que estas empezando, pero eso es lo bueno que ya vas trasteando con el código.

Primer error general, las ordenes las tienes que seleccionar del mercado, no las que creas que estan abiertas, por tanto hay que buscar la orden de entre todas las que estan abiertas en el mercado y seleccionar la que te interese, bien con el magicnumber y/o tipo de orden, sea Buy o Sell; a la hora de modificar ocurre lo mismo, hay que usar la función OrderSelect

Código: Seleccionar todo

   int MAGIC = 1234;
   for(int cnt=0;cnt<OrdersTotal();cnt++)
   {
       if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false) break;
       if((OrderMagicNumber() != MAGIC) || OrderSymbol() != Symbol()) continue;
       if(OrderType() == OP_BUY)
       {
         OrderClose(OrderTicket(),OrderLots(),.......);
       }
    }
Avatar de Usuario
nstrader
Mensajes: 257
Registrado: 24 Mar 2007 19:33

Mensaje por nstrader »

Una vez has llamado a OrderSelect() para seleccionar una orden, ya puedes llamar el resto de funciones que hacen referencia a información sobre esa orden, sean:

Código: Seleccionar todo

   OrderClosePrice()
   OrderCloseTime()
   OrderComment()
   OrderCommission()
   OrderExpiration()
   OrderLots()
   OrderMagicNumber()
   OrderOpenPrice()
   OrderOpenTime()
   OrderProfit()
   OrderStopLoss()
   OrderSwap()
   OrderTakeProfit()
   OrderTicket()
   OrderType()
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12852
Registrado: 06 Sep 2004 10:18
Contactar:

Mensaje por X-Trader »

De casualidad en mis exploraciones por la Red me he encontrado con código para hacer cositas con Inteligencia Artificial:

http://reshetov.xnet.uz/files/Artificia ... _Right.mq4


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
elcctrro
Mensajes: 329
Registrado: 26 Nov 2008 11:09
Ubicación: Zona centro España

Mensaje por elcctrro »

mirad esta página:
http://articles.mql4.com/783
y ya me contais, yo estoy intentando hacer un optimizador en tiempo real para tres variables, pero esto de las neuronales lo no termino de ver claro.
Un saludo.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12852
Registrado: 06 Sep 2004 10:18
Contactar:

Mensaje por X-Trader »

Pues al final este buen hombre ha decidido vender picos y palas.... :(

La web citada redirige ahora a ésta:

https://www.brokenpatterns.com/

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”