Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 457

 

No entiendo nada de esto. Mi pregunta fue trasladada por el moderador de MKL5 a MKL4. He seguido el enlace - sí, mi pregunta está colgada ahí, pero la última respuesta es del 5.02.2018. Vino aquí - también MKL4 y la vida está hirviendo ... Entonces, ¿por qué el moderador está lanzando en un hilo muerto? Muy bien, sigamos adelante. Ahora, al grano: lanzar mi "problema" por aquí.


Vladimir Karputov:

Para la condición 1, pon el número mágico ID +1, para la condición 2 el número mágico +2 y así sucesivamente. De este modo, podrá entender que esta posición se abrió por la condición 1 o por la condición 2...

Por la tarde. Sólo he tenido éxito para una posición BAY. El set de magik para vender no funciona por alguna razón. Todo es absolutamente idéntico, excepto el propio magik, por supuesto. ¿Qué he hecho mal?

int total=OrdersTotal();

      for(int i=OrdersTotal()-1;i>=0;i--)

      {

        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

        

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && OrderMagicNumber==111 && MathAbs(WPR1)<20)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);

      

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

           

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && MathAbs(WPR1)>96)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);               

         }

       continue;  

      } 
 
novichok2018:

No entiendo nada de esto. Mi pregunta fue trasladada por el moderador de MKL5 a MKL4. He seguido el enlace - sí, mi pregunta está colgada ahí, pero la última respuesta es del 5.02.2018. Vino aquí - también MKL4 y la vida está hirviendo ... Entonces, ¿por qué el moderador está lanzando en un hilo muerto? Muy bien, sigamos adelante. Ahora, al grano: lanzar mi "problema" por aquí.


Por la tarde. Sólo funcionó para una posición BAY. La configuración del magik para la VENTA no funciona por alguna razón. Todo es absolutamente idéntico, excepto el propio mago, por supuesto. ¿Qué he hecho mal?

1. no conoce mql4.

2. Para cerrar una orden con magic 222 debe abrirse primero con magic 222. Vea qué tipo de asistente abre órdenes de VENTA

3. Después del OrderMagicNumber, debe haber corchetes ().

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

4. ¿Por qué se destaca la condición?

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))
 

Chicos, aquí hay una pregunta - ¿cómo puedo poner los valores de las variables en una matriz unidimensional?

No lo mandes a ayudar - NO hay ejemplo para tal problema.


Digamos que hay una variable a, que cambia bajo ciertas condiciones.

Quiero un array para almacenar los 3 últimos valores de esta variable. ¿Cómo se implementa esto en mql4?


Estoy escribiendo int mas[3];

mas[]=a; dentro del bucle, después de una condición que cambie a,

El compilador da ']', pero nada funciona, aunque lógicamente debería. - expresión esperada, quiere que ponga alguna expresión desconocida dentro de los paréntesis en mas[]=a.

¿Tiene MQL4 alguna función que llene el array con un valor variable en cada iteración del bucle?


 
John Smith:

Chicos, aquí hay una pregunta - ¿cómo puedo poner un valor variable en un array unidimensional?

No lo mandes a ayudar - no hay ningún ejemplo allí para tal problema.


Digamos que hay una variable a, que cambia bajo ciertas condiciones.

Quiero un array para almacenar los 3 últimos valores de esta variable. ¿Cómo se implementa esto en mql4?


Estoy escribiendo int mas[3];

mas[]=a; dentro del bucle, después de una condición que cambie a,

El compilador da ']', pero nada funciona, aunque lógicamente debería. - expresión esperada, quiere que ponga alguna expresión desconocida dentro de los paréntesis en mas[]=a.

¿Tiene MQL4 alguna función que llene el array con un valor variable en cada iteración del bucle?


¿En qué celda del array crees que se coloca el valor de la variable 'a', así: mas[]=a; ?

Yo te enviaría a la ayuda, lee desde el principio :)

 
John Smith:

Chicos, aquí hay una pregunta - ¿cómo puedo poner los valores de las variables en una matriz unidimensional?

No lo envíes para que te ayuden, NO hay ejemplo para un problema así.


Digamos que hay una variable a, que cambia bajo ciertas condiciones.

Quiero un array para almacenar los 3 últimos valores de esta variable. ¿Cómo se implementa esto en mql4?


Estoy escribiendo int mas[3];

mas[]=a; dentro del bucle, después de una condición que cambie a,

El compilador da ']', pero nada funciona, aunque lógicamente debería. - Quiere que ponga alguna expresión desconocida dentro de los paréntesis en mas[]=a.

¿Tiene MQL4 alguna función que llene el array con un valor variable en cada iteración del bucle?


Tal vez, deberías leer no sólo las muestras de código, sino también algunas otras cartas.

Esta es una cita de la documentación:

Grupo de funciones para trabajar con matrices

No se permiten matrices de más de cuatro dimensiones. Cada dimensión está indexada de 0 a tamaño_de_dimensión-1. En un caso particular de un array unidimensional de 50 elementos, llamar al primer elemento es array[0], el último es array[49].

 
Alexey Viktorov:

1. no conoce mql4.

2. Para cerrar una orden con magic 222 primero debe abrirse con magic 222. Mira qué asistente abre órdenes de VENTA

3. Después del OrderMagicNumber, debe haber corchetes ().

4. ¿Por qué está marcado en el estado?

Gracias por su respuesta. Está claro que tengo que abrir con un magik primero. He eliminado el orderticket y he comprobado la lógica con los comentarios. Resulta que el cierre de posiciones se realiza según las condiciones de la primera posición abierta. Es decir, si primero se abre una posición de Compra o Venta con la Condición 1 y luego se abre una segunda posición con la misma condición pero con la Condición 2, la condición de cierre se ignora y la segunda posición se cierra también con la Condición 1 a pesar de la otra Magia.

He aplicado la ruptura tras el cierre de la orden pero la solución ha sido a medias:sólo si se abre una posición del mismo tipo. Si, por ejemplo, se ha abierto primero una posición de venta y aún no se ha cerrado, mientras que se está abriendo y cerrando una posición de compra, la posición de venta no ve ninguna condición para cerrarse hasta que se abra y cierre otra posición de venta (de acuerdo con sus condiciones). Y si BAY abre y cierra de nuevo, vuelve a incumplir sus condiciones de cierre. ¿Y qué hacer?

 
Buenas tardes a todos. Estimados programadores, por favor ayúdenme a insertar una línea con la capacidad de especificar un archivo de sonido para cada Alert3.Lv1;2;3, para activar un sonido diferente que se especifique. A mí no se me da bien la codificación y la programación.
Archivos adjuntos:
 
¡Buenos días señores programadores y conocedores de MQL! Tengo un muy buen Asesor Experto que detiene las operaciones automáticas en base a las noticias. He encontrado uno en la red que no funciona o funciona mal. ¿O puede alguien escribir uno basado en el indicador urdala?
 
Hola chicos. ¿Pueden decirme cómo deshacerse del error [El contexto comercial está ocupado]?
 
Rustam Bikbulatov:
Hola chicos. ¿Pueden decirme cómo deshacerse del error [El contexto comercial está ocupado]?
if(!IsTradeContextBusy())   //торговый поток свободен
  {
 // здесь оформляем запрос
 // на торговую операцию

  }
Razón de la queja: