Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 591

 
artmedia70:
No... Siempre me han gustado las chicas.

Uh... (exhala suavemente) : )

¡Eso es genial! :)

Prometo no abusar de este conocimiento. :)

Lan. ¡Buenas noches! Ahora me voy a dormir.

 
DiPach:

Artem quiso decir con "... condición desencadenada - poner una marca", lo que quería decir era escribir en el código de la secuencia de comandos para poner el icono (marcador) cuando se desencadena la condición.

La Referencia MQL4 tiene muy buenos ejemplos de scripts para crear iconos. Por ejemplo, este script que crea y mueve los iconos de "Compra" en un gráfico.

r772ra:

Buen script, saca la función requerida de ahí,

y ahí lo tienes.

Gracias.
 
 

Quiero escribir la estructura, pero no puedo. Está escrito en la ayuda que FileWriteStruct escribe en un archivo binario, si no se especifica el tamaño, entonces la estructura completa.

¿Quién tiene alguna opinión?

Sigue escribiendo en un binario.

O envíenme a una sucursal donde puedan ayudarme.

Archivos adjuntos:
 
_SERG_:

Quiero escribir la estructura, pero no puedo. Está escrito en la ayuda que FileWriteStruct escribe en un archivo binario, si no se especifica el tamaño, entonces la estructura completa.

¿Quién tiene alguna opinión?

Sigue escribiendo en un binario.

O dirigirme a una sucursal donde puedan ayudarme.


¿Dónde se define el tamaño del array?

 
Vinin:


¿Dónde se define el tamaño del array?


En la declaración " ORD Orders[10];" o mediante "ArrayResize( Orders, 10)", pero esto no afecta al error. Acabo de comprobarlo. (Realmente no he especificado el tamaño en el guión).

Entiendo que no hay posibilidad de convertir diferentes tipos de datos.

Terminal 646, ME 934.

 
_SERG_:

en la declaración " ORD Orders[10];" o mediante "ArrayResize( Orders, 10)", pero esto no afecta al error. Acabo de comprobarlo. (Realmente no he especificado un tamaño en el guión).

Entiendo que no hay posibilidad de convertir diferentes tipos de datos.

Terminal 646, ME 934.


El ejemplo de prueba informó que el archivo fue creado. Sólo que no puedo encontrarlo
 
Vinin:

El ejemplo de prueba informó que el archivo fue creado. No lo encuentro.

Lo encontré. Aunque debería tenerlo en un directorio completamente diferente. Así que funciona.
 
Vinin:

Lo encontré. Aunque lo tengo en un directorio completamente diferente. Así que funciona.

¿Puedo echar un vistazo a las correcciones? Si el archivo es mío.

Si el de la ayuda, DEMO_FileWriteStruct, por lo que compila, traté de tomar la función de escribir en el archivo de la misma, pero no necesito para controlar el número de líneas escritas. ¿O he entendido que la estructura se escribe byte a byte?

Entonces tengo una pregunta, ¿se debe leer también byte a byte? En la estructura, cuando se necesita para cargar de nuevo desde el archivo?



 
_SERG_:

¿Podemos ver las correcciones?


He utilizado el ejemplo de la ayuda

//+------------------------------------------------------------------+
//|                                          Demo_FileWiteStruct.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- параметры для получения данных из терминала
input string          InpSymbolName="EURUSD";           // валютная пара
input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1;        // таймфрейм
input datetime        InpDateStart=D'2013.01.01 00:00'; // дата начала копирования данных
//--- параметры для записи данных в файл
input string          InpFileName="EURUSD.txt";         // имя файла
input string          InpDirectoryName="Data";          // имя директории
//+------------------------------------------------------------------+
//| Структура для хранения данных свечи                              |
//+------------------------------------------------------------------+
struct candlesticks
  {
   double            open;  // цена открытия
   double            close; // цена закрытия
   double            high;  // максимальная цена
   double            low;   // минимальная цена
   datetime          date;  // дата
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime     date_finish=TimeCurrent();
   int          size;
   datetime     time_buff[];
   double       open_buff[];
   double       close_buff[];
   double       high_buff[];
   double       low_buff[];
   candlesticks cand_buff[];
//--- сбросим значение ошибки
   ResetLastError();
//--- получим время появления баров из диапазона
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения времени. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим максимальные цены баров из диапазона
   if(CopyHigh(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,high_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения максимальных цен. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим минимальные цены баров из диапазона
   if(CopyLow(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,low_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения минимальных цен. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим цены открытия баров из диапазона
   if(CopyOpen(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,open_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения цен открытия. Код ошибки = %d",GetLastError());
      return;
     }
//--- получим цены закрытия баров из диапазона
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("Не удалось скопировать значения цен закрытия. Код ошибки = %d",GetLastError());
      return;
     }
//--- определим размерность массивов
   size=ArraySize(time_buff);
//--- сохраним все данные в массиве структуры
   ArrayResize(cand_buff,size);
   for(int i=0;i<size;i++)
     {
      cand_buff[i].open=open_buff[i];
      cand_buff[i].close=close_buff[i];
      cand_buff[i].high=high_buff[i];
      cand_buff[i].low=low_buff[i];
      cand_buff[i].date=time_buff[i];
     }
 
//--- откроем файл для записи массива структуры в файл (если его нет, то создастся автоматически)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для записи",InpFileName);
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
      //--- подготовим счетчик количества байт
      uint counter=0;
      //--- в цикле запишем значения массива
      for(i=0;i<size;i++)
         counter+=FileWriteStruct(file_handle,cand_buff[i]);
      PrintFormat("В файл %s записано %d байт информации",InpFileName,counter);
      PrintFormat("Всего байтов: %d * %d * %d = %d, %s",size,5,8,size*5*8,size*5*8==counter ? "Верно" : "Ошибка");
      //--- закрываем файл
      FileClose(file_handle);
      PrintFormat("Данные записаны, файл %s закрыт",InpFileName);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
  }
 
Vinin:


He utilizado el ejemplo de la ayuda

El archivo generado se encuentra en \Data\EURUSD.
npDirectoryName="Data"  InpSymbolName="EURUSD"