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

 
Санек:

1) - Esta parte abre el archivo 11112222.txt para leer los datos del mismo:

//=================================BUY=========================================
    int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения

2) - A continuación viene la condición si handle2>0


  if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
   {

3) - Esta es la parte que no entiendo:


       Print(FileReadString(handle2));

4) - Esta parte cierra el archivo:


       FileClose(handle2); // закрытие текстового файла

5) - Dado que se cumple la condición handle2>0, es decir, el archivo 11112222.txt contiene 1, se abre una orden de compra:

  //ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ      
                    if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
                     {
                        OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
                        FileClose(handle2); // закрытие текстового файла
                     }
                    else
                      Print("NE USPESHNO!!!");
                      FileClose(handle2); // закрытие текстового файла

   }
//=================================конец кода BUY=========================================

¿Qué partes he confundido?

1) Abre el archivo, pero no lee su contenido.

2) El handle del fichero es SIEMPRE mayor que cero. En consecuencia, la condición siempre se mantendrá si el archivo existe, independientemente de su contenido.

3) Esto es exactamente leer el contenido del archivo. Aunque no entiendo por qué se hace la lectura de una cadena, si necesitamos leer un número... Pero aún así puede ser otro problema. Ahora lo principal es describir la secuencia de acciones.

4) Por supuesto, hay que cerrar el archivo y se cierra.

Y sólo hay que condicionar la siguiente cláusula en función de lo que se lea en la cláusula 3, pero no la segunda.

 
Alexey Viktorov:

1) abre un archivo, pero no lee su contenido.

2) Un gestor de archivos es SIEMPRE mayor que cero. En consecuencia, la condición siempre se mantendrá si el archivo existe, independientemente de su contenido.

3) Esto es exactamente leer el contenido del archivo. Pero no entiendo por qué se lee una cadena, si se va a leer un número... Pero aún así puede referirse a otro problema. Ahora lo principal es describir la secuencia de acciones.

4) Hay que cerrar el archivo, por supuesto, y se cierra.

Y sólo la siguiente cláusula debe ser condicionada dependiendo de lo que se lea en la cláusula 3, pero no la segunda cláusula.

No... INVALID_HANDLE tiene el valor -1.

Es entonces cuando obtiene un error de apertura de archivo, entonces obtendrá una señal de venta...

Otras constantes

Constantes especiales utilizadas para indicar el estado de los parámetros y las variables. Pueden ser los siguientes valores:

Constante

Descripción

Valor

NULL

Nulo de cualquier tipo. También indica el estado de cadena vacía

0

VACÍO

Indica el estado vacío del parámetro

-1

VALOR_VACÍO

Valor vacío en la memoria intermedia del indicador

2147483647 (0x7FFFFFFFF)

CLR_NONE, clrNONE

No hay color. Valor por defecto, puntero al valor vacío. Se utiliza en los indicadores personalizados

-1

CARTAS_MAX

Número máximo posible de gráficos abiertos simultáneamente en el terminal

100

INVALID_HANDLE

Mango incorrecto

-1

IS_DEBUG_MODE

Señal de un programa mq5 en modo de depuración

en modo de depuración no es igual a cero, en caso contrario 0

IS_PROFILE_MODE

Señal de un programa mq5 en el modo de perfilado

en el modo de perfilado no es igual a cero, de lo contrario es 0

ARREGLO_COMPLETO

Indica el número de elementos que quedan hasta el final del array, es decir, se procesará todo el array

0

VALOR_ERROR

Una constante puede ser implícitamente lanzada a cualquier tipo de enum

-1

 

No he visto este hilo, así que he creado uno nuevo. por favor,mira https://www.mql5.com/ru/forum/206126

Как в тестере стратегий получить TimeGMT();
Как в тестере стратегий получить TimeGMT();
  • 2017.06.28
  • www.mql5.com
Справочник MQL5, Дата и время, TimeGMT TimeGMT - При работе в тестере стратегий время TimeGMT() всегда равно моделируемому серверному времени TimeT...
 
Alexey Viktorov:

1) abre un archivo, pero no lee su contenido.

2) Un gestor de archivos es SIEMPRE mayor que cero. En consecuencia, la condición siempre se mantendrá si el archivo existe, independientemente de su contenido.

3) Esto es exactamente leer el contenido del archivo. Pero no entiendo por qué se lee una cadena, si se va a leer un número... Pero aún así puede referirse a otro problema. Ahora lo principal es describir la secuencia de acciones.

4) El expediente debe estar cerrado, por supuesto, y se está cerrando.

Y sólo se debe condicionar el siguiente punto en función de lo que se lea en el punto 3, pero no el segundo punto.

Estimados gurús de MQL - si no es un problema, por favor ayúdenme con este código, he pasado medio día en los motores de búsqueda, pero no he encontrado nada similar.

Supongo que son unas pocas líneas, pero para un usuario experimentado es cuestión de minutos)))

 

¿Cómo puede una dll en c++ tomar una cadena de mql4 y convertirla en char*?

struct MqlStr
{
        int               len;
        char             *string;
};

static int proc_func(char* Name);

MT4_EXPFUNC int __stdcall myfunc(MqlStr sym_name)
{
        proc_func(sym_name[0].string);
        
}
int proc_func(char* Name)
{
}
Este es el código correcto, ¿no?
 

Hola a todos, podríais aconsejarme por favor, escribí un EA hace un año aproximadamente, funcionaba bien. No lo he utilizado en todo este tiempo. No sé qué hacer con él, simplemente no sé qué hacer con él. ¿Puede ser porque he cambiado de edificio? Actualmente estoy utilizando la Build 1090.

 
Санек Estimado gurú de MQL - si no es difícil ayudarme con este código, me pasé medio día indagando en los motores de búsqueda, pero no puedo encontrar nada similar.

Parece que es cuestión de unas pocas líneas, lo que para un entendido es cuestión de tres minutos)))

Me llevó dos horas. Tengo que revisar el sistema pieza por pieza. Ejecute ambos EAs a la vez en gráficos adyacentes - todo será visible. Asesor Experto 1 = Escribir en el archivo

//+------------------------------------------------------------------+
//| Запись в файл -1  0  1                                     1.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(7);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждые 7 секунд                                       |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;
   if(rand()<20000)
   {
     x=1;
     if(rand()<16000) x=-1;
   }

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 3);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow);
   ChartRedraw(0);
   Sleep(2000);

   int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE);
   if(handle == -1)
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileWriteInteger(handle, x, 4);
   Sleep(2000);

   ObjectSetText("Семафор","",20,"Arial",White);
   ChartRedraw(0);
   FileClose(handle);
}

EA 2 = Leer archivo

//+------------------------------------------------------------------+
//| Чтение файла  -1  0  1                                     2.mq4 |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Инициализация - установка интервала таймера                      |
//+------------------------------------------------------------------+
void OnInit()
{
   EventSetTimer(1);
}


//+------------------------------------------------------------------+
//| Деинициализация - удаление метки                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int Зачем)
{
   ObjectDelete("Семафор");
}


//+------------------------------------------------------------------+
//| По таймеру каждую секунду                                        |
//+------------------------------------------------------------------+
void OnTimer()
{
   int x=0;

   ObjectCreate("Семафор",OBJ_LABEL,0,0,0);
   ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0);  // Создание
   ObjectSet("Семафор", OBJPROP_CORNER, 2);      // В правый нижний угол
   ObjectSet("Семафор", OBJPROP_XDISTANCE, 0);   // Координата X   
   ObjectSet("Семафор", OBJPROP_YDISTANCE, 40);  // Координата Y
   ObjectSetText("Семафор","",20,"Arial",Yellow);
   ChartRedraw(0);

   Sleep(500);
   int handle = FileOpen("123.txt", FILE_BIN | FILE_READ);  // Получаем НОМЕР файла в ОС
   if(handle == -1)                // Если производится запись, файл занят, будет ошибка
   {
      ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon);
      ChartRedraw(0);
      return;
   }

   x = FileReadInteger(handle,4);                          // Получаем СОДЕРЖИМОЕ файла
   ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue);
   ChartRedraw(0);

   FileClose(handle);
}
 
toni_stark:

Hola a todos, podríais decirme por favor, escribí un EA hace un año aproximadamente, funcionaba bien. No lo he utilizado en todo este tiempo. No sé qué hacer con él, simplemente no sé qué hacer con él. ¿Puede ser porque he cambiado de edificio? Actualmente estoy utilizando la Build 1090.


Es muy posible, ha habido muchas innovaciones. Empiece por comprobar si hay errores de compilación. Con la directiva #PropertyStrict.

 
Vladimir Zubov:

Es posible que haya habido muchas innovaciones. Empiece por comprobar si hay errores de compilación. Con la directiva #PropertyStrict.

No existe tal directiva.

Lo hay:

#property strict
 
Vladimir Zubov:

Es posible que haya habido muchas innovaciones. Empiece por comprobar si hay errores de compilación. Con la directiva #PropertyStrict.


Artyom Trishkin:

No existe tal directiva.

Lo hay:


Pero no puedo abrir el archivo EA que está en mi ordenador con extensión ex4, pero no existe tal archivo a través de MetaEditor. Por favor, dígame cuál es la razón.