Publi

Publi

Página 2 de 2 PrimerPrimer 12
Resultados 11 al 19 de 19


  1. #11




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    Re: problema abriendo operaciones en diferentes pares (MT4)


    Publi
    Gracias tivag. Digamos que quiero hacer esto pero no con simbolos sino con la ventana, de manera que si tengo el EA asociado a 3 ventanas, aunque sean del mismo par, las tome por separadas. Es decir, si tengo este código:

    Código:
    if (OrdersTotal()==0)
       {
       int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
       }
    Y digamos que lo asocio a las 3 ventanas, cada una del Par GBP/USD. Si abre una posición en la
    primera ventana, el código considera en la segunda y la tercera como que no hay ninguna orden
    abierta, por lo que abrirá una en cada una.

    Estaba leyendo un poco y la función que me pareciera que sirve para esto es ChartID(), pues
    usando la función Alert() me di cuenta de que, aunque dice Chart (y no window) cada ventana
    tiene un número de chart. ¿Cómo podría decir algo como "en ventana actual", y luego
    colocar lo que quiera de manera que se que todo lo que coloque solo lo considerará para la
    ventana a la que está asociado el EA, independientemente de que tengan diferente o mismo par?

    Gracias de nuevo.
    Por supuesto mereces reputación. Ojalá tuviera mas puntos para que tuviera mas peso.
    Gracias de nuevo.
    Foro de Forex Trading United

     

  2.                         
    Publi
  3. #12
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3.998

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    Gracias tivag. Digamos que quiero hacer esto pero no con simbolos sino con la ventana, de manera que si tengo el EA asociado a 3 ventanas, aunque sean del mismo par, las tome por separadas. Es decir, si tengo este código:

    Código:
    if (OrdersTotal()==0)
       {
       int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
       }
    Y digamos que lo asocio a las 3 ventanas, cada una del Par GBP/USD. Si abre una posición en la
    primera ventana, el código considera en la segunda y la tercera como que no hay ninguna orden
    abierta, por lo que abrirá una en cada una.

    Estaba leyendo un poco y la función que me pareciera que sirve para esto es ChartID(), pues
    usando la función Alert() me di cuenta de que, aunque dice Chart (y no window) cada ventana
    tiene un número de chart. ¿Cómo podría decir algo como "en ventana actual", y luego
    colocar lo que quiera de manera que se que todo lo que coloque solo lo considerará para la
    ventana a la que está asociado el EA, independientemente de que tengan diferente o mismo par?

    Gracias de nuevo.
    Por supuesto mereces reputación. Ojalá tuviera mas puntos para que tuviera mas peso.
    Gracias de nuevo.
    Hola tal y como lo has puesto , si abres una operacion en una de ellas pongamos por ejemplo en la primera, entonces en las otras dos no abrira nada, entonces con esto ya haces lo que quieres. Ahora bien si quieres ir a la ventana pues te podria servir para lo que quieres el CharID() como muy bien dices. Yo veo mejor para lo que comentas que uses el orderstotal, te sera mas rapido y comodo, sino pues usando distintos numeros magicos seria otra opcion todo depende que haga tu robot uno te vendra mejor que otro.

    saludos

    Código:
    if (ChartID()== el numero que sea la id)
       {
       lo que quieras;    
       }
    Foro de Forex Trading United

     

  4. #13




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por tivag Ver mensaje

    Código:
    if (ChartID()== el numero que sea la id)
       {
       lo que quieras;    
       }
    Así fue como lo puse, pero me parece que tengo problemas colocando en nro de ID. Como ChartID() ya lo que dice es el ID, lo que he puesto es esto:

    Código:
    if (ChartID()== ChartID())
    Pero no me ha funcionado. Luego, como valor 0 en ChartID significa Chart actual, probé con:

    Código:
    if (ChartID()== 0)
    Pero tampoco me funcionó al probarlo.

    Entonces, que debo colocar después del == para decir

    if(ChartID()== chartactual)
    Foro de Forex Trading United

     

  5. #14
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3.998

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    Así fue como lo puse, pero me parece que tengo problemas colocando en nro de ID. Como ChartID() ya lo que dice es el ID, lo que he puesto es esto:

    Código:
    if (ChartID()== ChartID())
    Pero no me ha funcionado. Luego, como valor 0 en ChartID significa Chart actual, probé con:

    Código:
    if (ChartID()== 0)
    Pero tampoco me funcionó al probarlo.

    Entonces, que debo colocar después del == para decir

    if(ChartID()== chartactual)
    Pues yo esta mañana hice la prueba poniendo directamente el nº de la id despues del == y me funciono, eso si , le tuve que poner los 0 que me marcaban para que me lo pillara, creo recordar que era el numero.00000 y cinco ceros consecutivos detras, pues o bien lo pones de forma manual o bien me imagino que funcionara en que la id la guardes en una variable y esa variable la pongas despues del ==. De todas formas para lo que tu querias lo de ordertotal == 0 te funcionaria.

    saludos
    Foro de Forex Trading United

     

  6. #15




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    Re: problema abriendo operaciones en diferentes pares (MT4)

    He colocado el siguiente código para ahcer una prueba:

    Código:
       if(ChartID()==130759124995518815)
          {                     
          Alert("Chart1=", OrdersTotal());
          }
    He colocado manual el nro ID, y dentro de esta le he colocado que dijera el numero de ordenes abiertas. Sin embargo, cuando abrí una orden desde otra ventana, y aunque no había sido abierta desde la ventana del ID nro 1307......., lanzó mensaje de que el total de ordenes era de 1 (cuando no se había abierto ninguna desde la ventana donde estaba ese EA asociado). Esto significa que si asocio el EA a varias ventanas y coloco el ChartID() como condicional, igual sumara el numero totales de ordenes que haya en cualquier ventana y no solo donde el EA este asociado, por lo que pienso que hace falta algo mas.

    Mencionaste antes que lo habías probado y te había funcionado. Sería muy útil para mi saber si lo que te funcionó fue colocar un EA donde al utilizar ChartID, consideró lo que dijeras en el codigo solo en la ventana en que estaba asociado el EA, y no lo que hacias en otras ventanas. Porque si ha sido esto lo que hiciste entonces puedo pensar que se trata, no del código, sino de algún problema del MT4 que tengo descargado y enfocarme en esto entonces.

    Saludos y gracias por todo lo anterior.
    Gracias de nuevo.
    Foro de Forex Trading United

     

  7. #16
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3.998

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    He colocado el siguiente código para ahcer una prueba:

    Código:
       if(ChartID()==130759124995518815)
          {                     
          Alert("Chart1=", OrdersTotal());
          }
    He colocado manual el nro ID, y dentro de esta le he colocado que dijera el numero de ordenes abiertas. Sin embargo, cuando abrí una orden desde otra ventana, y aunque no había sido abierta desde la ventana del ID nro 1307......., lanzó mensaje de que el total de ordenes era de 1 (cuando no se había abierto ninguna desde la ventana donde estaba ese EA asociado). Esto significa que si asocio el EA a varias ventanas y coloco el ChartID() como condicional, igual sumara el numero totales de ordenes que haya en cualquier ventana y no solo donde el EA este asociado, por lo que pienso que hace falta algo mas.

    Mencionaste antes que lo habías probado y te había funcionado. Sería muy útil para mi saber si lo que te funcionó fue colocar un EA donde al utilizar ChartID, consideró lo que dijeras en el codigo solo en la ventana en que estaba asociado el EA, y no lo que hacias en otras ventanas. Porque si ha sido esto lo que hiciste entonces puedo pensar que se trata, no del código, sino de algún problema del MT4 que tengo descargado y enfocarme en esto entonces.

    Saludos y gracias por todo lo anterior.
    Gracias de nuevo.
    hola pues el codigo que puse fue este:

    Código:
    if (ChartID()==130655549890892400.00000)
    if (OrdersTotal()==0)
       {
       int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
       }
    fue para probarlo y me abre operacion tan solo en esa ventana, eso fue la prueba que hice.


    saludos
    Foro de Forex Trading United

     

  8. #17




    Reputación:
    Poder de reputación: 2

    Mensajes: 60
    Créditos: 0

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por tivag Ver mensaje
    hola pues el codigo que puse fue este:

    Código:
    if (ChartID()==130655549890892400.00000)
    if (OrdersTotal()==0)
       {
       int ticket1=OrderSend(NULL, OP_BUY, 0.10, Ask, 10, Bid-0.0020, Bid+0.0020, NULL, 0, 120, clrNONE);    
       }
    fue para probarlo y me abre operacion tan solo en esa ventana, eso fue la prueba que hice.


    saludos

    A mi me funcionó cuando lo hice así como tu lo ha hecho. El problema me está ocurriendo cuando lo pongo a trabajar con varias ventanas, que es como correrá en la realidad. Ya tengo una fuerte sospecha de lo que está pasando.

    El código que puse fue este:

    Código:
       if(ChartID()==130759124995518815)
          {                     
          if(OrdersTotal()==0)
             {
             int ticket1=OrderSend(NULL, OP_BUY, Lote, Ask, 10, Bid-SL, Bid+TP, NULL, 12345, TimeStop, clrNONE);
             Alert("ErrorOpen=", GetLastError());
             }
          }

    Lo que hice ahora fue hacer 3 códigos como este pero cada uno con el nro ID de cada gráfica, y asocié cada código a una ventana según corresponda su número de ID. Me pasó que abrió operación solamente en una grafica, así no hubiera ninguna abierta desde otra ventana, por lo que creo que lo que está haciendo el código es eso:

    Primero revisa si se cumple la primera condicion:
    if(ChartID()==130759124995518815)

    Si esta se cumple, entonces revisa la segunda:
    if(OrdersTotal()==0)

    cuenta cuantas operaciones hay abiertas en "total" a ver si se cumple condición de que no haya ninguna abierta, pero contabiliza "todas" las órdenes que hayan abiertas, así se hayan abierto en otra ventana. Es decir: revisa primera condición, y si esta se cumple, revisa si orderstotal es igual a "0", independientemente desde que ventana se haya abierto.

    Por las pruebas que he hecho creo que eso es lo que está haciendo. Y entonces, ¿cómo hago para que cuente solamente las órdenes abiertas en esa ventana?
    Foro de Forex Trading United

     

  9. #18
    Avatar de tivag
    antecessor


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 610
    Créditos: 3.998

    Re: problema abriendo operaciones en diferentes pares (MT4)

    Cita Iniciado por trader0 Ver mensaje
    A mi me funcionó cuando lo hice así como tu lo ha hecho. El problema me está ocurriendo cuando lo pongo a trabajar con varias ventanas, que es como correrá en la realidad. Ya tengo una fuerte sospecha de lo que está pasando.

    El código que puse fue este:

    Código:
       if(ChartID()==130759124995518815)
          {                     
          if(OrdersTotal()==0)
             {
             int ticket1=OrderSend(NULL, OP_BUY, Lote, Ask, 10, Bid-SL, Bid+TP, NULL, 12345, TimeStop, clrNONE);
             Alert("ErrorOpen=", GetLastError());
             }
          }

    Lo que hice ahora fue hacer 3 códigos como este pero cada uno con el nro ID de cada gráfica, y asocié cada código a una ventana según corresponda su número de ID. Me pasó que abrió operación solamente en una grafica, así no hubiera ninguna abierta desde otra ventana, por lo que creo que lo que está haciendo el código es eso:

    Primero revisa si se cumple la primera condicion:
    if(ChartID()==130759124995518815)

    Si esta se cumple, entonces revisa la segunda:
    if(OrdersTotal()==0)

    cuenta cuantas operaciones hay abiertas en "total" a ver si se cumple condición de que no haya ninguna abierta, pero contabiliza "todas" las órdenes que hayan abiertas, así se hayan abierto en otra ventana. Es decir: revisa primera condición, y si esta se cumple, revisa si orderstotal es igual a "0", independientemente desde que ventana se haya abierto.

    Por las pruebas que he hecho creo que eso es lo que está haciendo. Y entonces, ¿cómo hago para que cuente solamente las órdenes abiertas en esa ventana?
    hola pues la forma mas segura que se me ocurre es que cada vez que abras una operacion la metas en una variable, sumandole +1 en cada operacion nueva que abra y cada vez que cierres la operacion reste uno, asi tendras un contador de operaciones individual para cada codigo , lo que no se es si podras entrar en la info de esa variable desde otra ventana cuestion de que lo pruebes. De esta forma no te haria falta ni el char id, pero claro la cuestion es si se podra acceder a la otra variable desde la otra ventana, eso ya no lo se.


    saludos y suerte
    Foro de Forex Trading United

     

  10. #19
    Avatar de robertomar
    Heidelbergensis


    Reputación:
    Poder de reputación: 9

    Espana
    Mensajes: 905
    Créditos: 15.929

    Re: problema abriendo operaciones en diferentes pares (MT4)


    Publi
    A ver compis, que es lo que pretendeis conseguir con lo del ChartID() enfocado a discernir entre distintas órdenes???.

    MT4 no guarda ningún dato entre los diferentes propiedades de las órdenes que haga referencia a desde qué ID de char fue abierta dicha orden. Los datos a los que se tiene acceso, una vez buscadas y seleccionadas las órdenes correspondientes que nos interesen son:




    Lo que estais intentando se podría hacer, ya que en MT4 se puede hacer casi todo, pero no es absolutamente nada práctico ni útil por varias razones:

    1 - El ChartID() se utiliza para operaciones con gráficos y otras tareas varias que nada tienen que ver con selección de órdenes.

    2 - Habría que hacer un proceso más complejo para guardar el ID del chart desde el cual se ha abierto cada orden.

    3 - Y, sobre todo, los datos a los que podemos acceder fácilmente buscando las órdenes con normalidad como lo hace todo el mundo, (los que he enumerado más arriba) son más que suficientes para poder buscar y encontrar la orden u órdenes que necesitemos en todos los casos, sin tener que hacer este tipo de componendas.

    4 - Para lo que quereis, si es buscar si hay órdenes abiertas por un EA que esté anclado a un chart concreto es tan sencillo como poner el parámetro del Magic Number como parámetro externo (con el modificador input) y cada vez que anclemos el EA a un gráfico diferente, cambiarle ese valor, y ponerle un Magic Number diferente. Después en el código se buscan las órdenes con normalidad como lo hacemos todos (por aquí y por otro post ya se han puesto códigos para buscar órdenes por su Magic Number) y si no encuentra ninguna que lleve el Magic Number justo que hemos puesto en la instancia del EA que hemos adjuntado justo a ese gráfico, entonces ya se abre operación o se hace lo que se tenga por objetivo de hacer. Esto mismo se podría hacer con el OrderComment en lugar de con el Magic Number, pero es más rápido, práctico y eficiente hacerlo por el Magic Number.


    Me parece que ya lo comentó Tivag y algún otro compañero, y tal cual, os aseguro que si anclais el EA a 1000 gráficos diferentes del mismo par y en cada uno de esos 1000 gráficos le poneis un Magic Number diferente (para comodidad mediante parámetro externo), cuando busqueis una orden de entre todo el pool exigiéndole que tenga que tener ese Magic Number , no os encontrará otra que haya sido abierta desde otro chart, sino solo esa, si la hay. Y si no la encuentra, pues a aplicar lo que se quisiera aplicar.

    Saludos y un abrazo.
    Foro de Forex Trading United

     

Página 2 de 2 PrimerPrimer 12
Publi
Publi


Aviso Legal
Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal