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

 
lil_lil:

Gracias, los valores que hay son de un archivo y de una sola vez, pero mi tarea está repartida en el tiempo.

Registre el precio y la hora actuales al principio de cada día durante 30 minutos, cada 120 segundos.

No sobrescribir las entradas anteriores.


Empieza a escribir tu código y lo que no funcione, lo desmontaremos.

Entonces, ¿qué hay que escribir? Tome cualquier día y lea el precio de apertura de los minutos pares o impares PERIOD_M1...
 
lil_lil:

Gracias, los valores que hay son de un archivo y de una sola vez, pero mi tarea está repartida en el tiempo.

Registra el precio y la hora actuales al principio de cada día durante 30 minutos, cada 120 segundos

No sobrescribir las entradas anteriores.

Esto es lo que escribí una vez. Utilice OnTimer en lugar de OnTick.

#property strict
enum Локаль   // Десятичный разделитель для отображения в Excel
{
  Точка,
  Запятая
};
extern Локаль   RUS = Запятая; // Для русской локализации запятую

string ИмяФайла;          // Имя файла на диске


void OnInit()
{
  ИмяФайла=Symbol()+".txt";
}


void OnTick()
{
   string Текст, Строка;

   // Открытие или создание файла и перемещение указателя в конец
   int Файл = FileOpen(ИмяФайла, FILE_CSV | FILE_READ | FILE_WRITE, " ");
   if(Файл == -1)
   {
      Alert("Ошибка при открытии файла ", ИмяФайла);
      return;
   }
   FileSeek(Файл, 0, SEEK_END);

   // Если новый файл записать строку заголовков колонок
   if(FileSize(Файл)==0)FileWrite(Файл, "           Время   ASK     BID");

   // Сбор информации и запись в файл
   FileWrite(Файл,
             TimeToStr(Time[0]),
             dstr(Ask),
             dstr(Bid) );
   FileClose(Файл);
   Файл = 0;                 // Заметая следы обнулим указатель
}


// Преобразование числа double в строку с запятой или точкой в соответствии с локализацией
string dstr(double Цена)
{
  if(!RUS) return DoubleToStr(Цена, Digits);
  return StringSetChar(DoubleToStr(Цена, Digits), StringFind(DoubleToStr(Цена, Digits), "."), ',');
}
 
Alexey Viktorov:

Empieza a escribir tu código y lo que no funcione, lo desmontaremos.

Escribe Janv 51

/********************Script program start function*******************/
void OnStart()
{
if(iVolume(0,PERIOD_D1,0)>=1)
  {
  int file_1;
   file_1=FileOpen("prise.csv",FILE_CSV|FILE_WRITE);
   if(file_1!=-1) 
     {
      FileWriteString(file_1,Bid,StringLen(Bid));
      FileClose(file_1);
     }
    }
   }
}/*******************************************************************/
 
STARIJ:

Aquí hay algo que solía escribir. Utilice OnTimer en lugar de OnTick.

Gracias

 
Hola. ¿Me pueden decir sidespués de activarel servidor virtual es posible cerrar el sitio mt4? ¿Funciona el servidor virtual o cómo funciona?
 
lil_lil:

Escribe Jan 51

Este es un problema de Excell. Ponga un punto en lugar de una coma como separador entre la parte entera y la parte fraccionaria en la configuración y se mostrará correctamente.
 
Alexey Viktorov:
Este es un problema de Excell. Ponga un punto en lugar de una coma en la configuración como separador de enteros y partes fraccionarias y se mostrará correctamente.

¿Escribe y cómo hacer que escriba cada 120 segundos dentro de los 30 minutos de la apertura del bar?

 
Buenos días! Por favor, ayúdenme a mejorar el código de la copiadora. El problema es el siguiente: EA (Slave) imprime el mensaje de no acceso al archivo, haga lo que haga... ¿Qué pasa?

Descompilado por Artyom Trishkin

Nota para ti.

 
lil_lil:

¿Escribe y cómo hago para que escriba cada 120 segundos dentro de los 30 minutos de la apertura del bar?

EventSetTimer

 
Konstantin Nikitin:

EventSetTimer

¿No funciona en los guiones?