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

 

Buenas tardes. No puedo leer los datos del archivo y escribirlos inmediatamente. Si descomento un fragmento de código con bucles y MathRand(), el archivo se hace papilla como debe ser. Pero si se dejan líneas comentadas (ya hay desorden en el archivo), entonces la próxima vez que active/desactive el Asesor Experto, el archivo contendrá ceros. Las matrices de lectura-escritura son doble ROM1[128][128] y doble ROM2[3][128]. Las matrices no se modifican en ninguna otra parte del código, sólo se leen. Aquí hay un trozo de código:

int init()                                     
   {
   Print ("Сработала ф-ия init"); // Сообщение
   Handle=FileOpen("Neuro",FILE_BIN|FILE_READ|FILE_WRITE);// Открытие файла на чтение и запись   
   FileSeek(Handle, 0, SEEK_SET); //указатель на начало файла
   FileReadArray(Handle, ROM1);
   FileSeek(Handle, 131073, SEEK_SET); //указатель на конец первого массива
   FileReadArray(Handle, ROM2);

/*
   for(i=0; i<128; i++) //заполнение памяти первого слоя кашей
      {
      for(k=0; k<128; k++)
         {
         ROM1[i][k] = (MathRand()-16383)/3200;
         }
      }
   for(i=0; i<3; i++) //заполнение памяти второго слоя кашей
      {
      for(k=0; k<128; k++)
         {
         ROM1[i][k] = (MathRand()-16383)/3200;
         }
      }
*/         
   return(0);                                       
   }   
//--------------------------------------------------------------------
int deinit()                                   
   {
   FileSeek(Handle, 0, SEEK_SET);
   FileWriteArray(Handle, ROM1);
   FileSeek(Handle, 131073, SEEK_SET);
   FileWriteArray(Handle, ROM2);
   FileClose(Handle);
   return(0);                                     
   }

Por favor, ayúdenme a entender esto. Gracias.
 
Hola, ¿podría decirme cómo escribir en el código del EA
condición para buscar una señal

Por ejemplo:
Hay una orden en el mercado con magic 565 abierta a las 13:00
En el EA existe la condición de que para abrir la orden
en el mercado una orden con un número mágico 565, ¿cómo puedo en mi Asesor Experto posponer la búsqueda de la señal por uno
La búsqueda de una señal para comenzar a las 14:00.

Actualmente veo una situación en la que a las 13:00, se abre una orden con Magic 565
y el búho abre su pedido a las 13:00:02.

dos órdenes idénticas.


Gracias.

 
var58:
Hola, ¿podría decirme cómo escribir en el código del EA
condición para buscar una señal

Por ejemplo:
Hay una orden en el mercado con magic 565 abierta a las 13:00
En el EA existe la condición de que para abrir la orden
en el mercado una orden con un número mágico 565, ¿cómo puedo en mi Asesor Experto posponer la búsqueda de la señal por uno
La búsqueda de una señal para comenzar a las 14:00.

Actualmente veo una situación en la que a las 13:00, se abre una orden con Magic 565
y el búho abre su pedido a las 13:00:02.

dos órdenes idénticas.


Gracias.

Puede buscar una señal cuando quiera, pero la apertura de una posición debe estar programada.

Vigile la hora de apertura de una posición con magic 565 y observe la hora actual. Si la hora actual es mayor que la hora de apertura de una posición con magic 565 por el número de minutos especificado, entonces puede abrir una posición.

 
Artyom Trishkin:

Puede buscar una señal cuando quiera, pero tiene que permitir que se abra una posición por tiempo.

Ver la hora de apertura de una posición con magic 565 y ver la hora actual. Si la hora actual es superior a la hora de apertura de Magik 565 en un número determinado de minutos, la posición puede abrirse.


Muchas gracias. ¿Cómo se ve en el código?
 
Buenas tardes. No puedo leer los datos del archivo y escribirlos inmediatamente. Si descomento un fragmento de código con bucles y MathRand(), el archivo se hace papilla como debe ser. Pero si se dejan líneas comentadas (ya hay desorden en el archivo), entonces la próxima vez que active/desactive el Asesor Experto, el archivo contendrá ceros. Las matrices de lectura-escritura son doble ROM1[128][128] y doble ROM2[3][128]. Las matrices no se modifican en ninguna otra parte del código, sólo se leen. Aquí hay un poco de código:

Un poco de eso. La función no leerá un array bidimensional doble, aunque lo escribirá correctamente.

He hecho un bucle para la lectura elemento a elemento. Puede ser, puede ser de utilidad para alguien.

{
FileSeek(Handle, n,  SEEK_SET); //изменение позиции файлового курсора        
Neuron[k][i].rom[l] = FileReadDouble(Handle, DOUBLE_VALUE); //загрузка из файла
n=n+8;
}
 
var58:

Muchas gracias. ¿Qué aspecto tiene el código?

Y no se trata de escribir código gratis, sino de ayudar a los que intentan escribirlos ellos mismos, pero no consiguen hacerlo bien.

Muéstranos lo que no puedes hacer en tu código: te ayudaremos.

 
Tamul:

He trabajado un poco. La función doble del array bidimensional no quiere leer, aunque escribe bien.

He hecho una lectura bucle a bucle. Tal vez alguien lo necesite.

{
FileSeek(Handle, n,  SEEK_SET); //изменение позиции файлового курсора        
Neuron[k][i].rom[l] = FileReadDouble(Handle, DOUBLE_VALUE); //загрузка из файла
n=n+8;
}

¿Por qué debería ofrecer esas muletas a la gente, sólo porque yo mismo no he afrontado la tarea?

Para leer una matriz bidimensional desde un archivo, debe ser una matriz bidimensional preparada para ello.

Si recuerdo bien ese ejemplo de código, no vi que el archivo se cerrara después de ser escrito. Se crea un archivo vacío y se escriben datos en él, pero este archivo lleno se almacena en la memoria principal y los datos del archivo sólo pueden leerse desde el disco. Como resultado, el archivo parece haber sido escrito pero físicamente no está en el disco... Para guardar los datos en el disco, hay que cerrar el archivo o guardarlo a la fuerza en el disco.

 
Artyom Trishkin:

Y no se trata de escribir código gratis, sino de ayudar a los que intentan escribirlos ellos mismos, pero no consiguen hacerlo bien.

Muéstranos lo que no puedes hacer en tu código y te ayudaremos.


gracias
 

Hola: Por favor, escriba un ejemplo sencillo (muy sencillo) en mql4. Soy un completo principiante.

1) abrir una orden pendiente cuando alcance cualquier valor (es decir, si el precio es 0,7777, entonces abrir una orden pendiente)

2) Cerrar una orden (de mercado) cuando haya alcanzado cualquier valor (es decir, si el precio es 0,6666, entonces cerrar la orden).

Ni siquiera puedo cerrar un pedido utilizando un número de pedido único. Quiero intentar cambiar el estado actual de mi robot de trading, pero no entiendo nada.

Traté de leer un tutorial de este sitio, pero ningún efecto (tal vez soy tan estúpido), y los ejemplos elementales son de alguna manera no en Internet. Gracias de antemano

 
maxon777:

Hola: Por favor, escriba un ejemplo sencillo (muy sencillo) en mql4. Soy un completo principiante.

1) abrir una orden pendiente cuando alcance cualquier valor (es decir, si el precio es 0,7777, entonces abrir una orden pendiente)

2) Cierre una orden de mercado cuando haya alcanzado cualquier valor (es decir, si el precio es 0,6666, entonces cierre la orden).

Ni siquiera puedo cerrar un pedido utilizando un número de pedido único. Quiero intentar cambiar el estado actual de mi robot de trading, pero no entiendo nada.

Traté de leer un tutorial de este sitio, pero ningún efecto (tal vez soy tan estúpido), y los ejemplos elementales son de alguna manera no en Internet. Gracias de antemano


Deberías buscar Expert Advisors de órdenes pendientes en CodeBase y ver cómo está escrito el código.