[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 223

 
solnce600:

¡Caballeros! ¡Buenas noches!

¿Podría decirme por qué el compilador piensa que en el código siguiente

la variable int Ticket es indefinida.

Genera un error

'Ticket' - variable no definida C:\NArchivos de programa\NAlpari NZ MT4(2)\N-expers.mq4 (18, 6)

Pero la variable Ticket también está definida en la sentencia de asignación en el código siguiente y el código se compila correctamente

La variable int Ticket es local y se restablecerá en el siguiente tick.
 
Vinin:


Probablemente sólo faltan paréntesis en un lugar

Problema resuelto. Muchas gracias.
 
TarasBY:
La variable int Ticket es local y se restablecerá en el siguiente tick.
Se tiene en cuenta la observación, muchas gracias.
 

Me he encontrado con este problema.

Necesito inicializar un array unidimensional de tipo double para 3000 valores de precio de oferta, todos los valores son diferentes y no están en orden.

Tengo que introducir manualmente cada valor separado por comas - no es realista.

Lo he intentado con excel, pero si pongo un punto en lugar de una coma flotante, excel no lee los números para poner una coma entre ellos.

Por favor, sugiera la mejor opción.


 

Escribí un simple Asesor Experto que devuelve 3 variables y las pasa a start().

Entonces, en cada tic estos datos (tipo de objeto, precio1 y precio2) deben ser devueltos.

//+-------------------------------------------------------------------------------------+
//|                                                TradingByLine.mq4                    |
//|                                                              hoz                    |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

string objName;
int isObj,
    objType;
double price1,
       price2;

//+-------------------------------------------------------------------------------------+
//| Функция иницилизации                                                                |
//+-------------------------------------------------------------------------------------+
int init()
{

   

  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Функция деиницилизации                                                              |
//+-------------------------------------------------------------------------------------+
int deinit()
{
//----
   
//----
  return(0);
}
//+-------------------------------------------------------------------------------------+
//| Блок поиска своих объектов                                                          |
//+-------------------------------------------------------------------------------------+
bool IsObjectFound(double& price1, double& price2, int& objType)
{
   for (int obj=0; obj<=ObjectsTotal()-1; obj++)
   {
      objName = ObjectName(obj);
      isObj = ObjectFind(objName);
      price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

      if (isObj != -1)
         return(true);
   }
   return(false);
}
//+-------------------------------------------------------------------------------------+
//| Функция start                                                                       |
//+-------------------------------------------------------------------------------------+
int start()
{
   if (!IsObjectFound(price1, price2, objType))
      return(0);
   Print("objType = ", objType);
   Print("price1 = ", price1, ", price2 = ", price2);

  return(0);
}

A continuación, ejecuto este Asesor Experto en modo de visualización en el probador y dibujo una línea en el gráfico a mano. Los precios de dibujo y el tipo de objeto que obtuve en la funciónIsObjectFound() no devuelven correctamente. Aquí está la salida del registro:

2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:46     2013.01.24 00:02  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0
2013.03.16 20:12:45     2013.01.24 00:01  TradingByLine EURJPY,M1: objType = -1
2013.03.16 20:12:44     2013.01.24 00:01  TradingByLine EURJPY,M1: price1 = 0, price2 = 0

La línea está dibujada a mano, lo que significa que tiene un tipo y otros parámetros:

La línea

¿Por qué no se devuelven los parámetros requeridos?

 
solnce600:

Me he encontrado con este problema.

Necesito inicializar un array unidimensional de tipo double para 3000 valores de precio de oferta, todos los valores son diferentes y no están en orden.

No es realista introducir manualmente cada valor separado por una coma.

Lo he intentado con excel pero si pongo un punto en lugar de una coma flotante excel no lee los números para poner una coma entre ellos.

Por favor, sugiera la mejor opción.


Excel puede leer, muéstrame más detalles de cómo lo hiciste
 
hoz:

Escribí un simple Asesor Experto que devuelve 3 variables y las pasa a start().

Entonces, en cada tic estos datos (tipo de objeto, precio1 y precio2) deben ser devueltos.

A continuación, ejecuto este Asesor Experto en modo de visualización en el probador y dibujo una línea en el gráfico a mano. Los precios de dibujo y el tipo de objeto que obtuve en la funciónIsObjectFound() no devuelven correctamente. Aquí está la salida del registro:

La línea está dibujada a mano, lo que significa que tiene un tipo y otros parámetros:

¿Por qué no se devuelven los parámetros requeridos?

Tenemos que

price1 = ObjectGet("objName", OBJPROP_PRICE1);
      price2 = ObjectGet("objName", OBJPROP_PRICE2);
      objType = ObjectType("objName");

objName sin comillas. Es el nombre de la variable (identificador en el texto del programa) que contiene el nombre del objeto (cadena)

 
alsu:

Debe ser

objName sin comillas. Es el nombre de la variable (identificador en el texto del programa) que contiene el nombre del objeto (cadena)



Por cierto, la documentación opina lo contrario. Ahí es donde me he visto envuelto en la confusión.

error de documentación

 
alsu:

Excel puede leerlo, muéstrame más detalles de cómo hacerlo

En la línea de 100 valores con una coma después del primer signo (es decir, el precio)

Resaltar una línea

Inicio - encontrar y reemplazar

Cambiando todas las comas por puntos - con éxito.

Ahora tenemos que poner comas entre los valores

Selecciono el formato de las celdas

Todos los formatos

En el campo activo que muestra el formato numérico de mi cadena - pongo una coma al final

Exel dice que no puede procesar el formato que he introducido.

 
hoz:


Por cierto, la documentación opina lo contrario. Así que me han engañado.

¡¡¡¡Las comillas son el VALOR de la variable de cadena, no la variable en sí!!!!