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.
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.
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.
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.
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
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?
//+------------------------------------------------------------------+//| 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//--- параметры для получения данных из терминалаinputstring InpSymbolName="EURUSD"; // валютная параinputENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1; // таймфреймinputdatetime InpDateStart=D'2013.01.01 00:00'; // дата начала копирования данных//--- параметры для записи данных в файлinputstring InpFileName="EURUSD.txt"; // имя файлаinputstring InpDirectoryName="Data"; // имя директории//+------------------------------------------------------------------+//| Структура для хранения данных свечи |//+------------------------------------------------------------------+struct candlesticks
{
double open; // цена открытияdouble close; // цена закрытияdouble high; // максимальная ценаdouble low; // минимальная ценаdatetime date; // дата
};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
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);
}
elsePrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
}
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.
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.Buen script, saca la función requerida de ahí,
y ahí lo tienes.
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.
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?
¿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.
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
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.
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?
¿Podemos ver las correcciones?
He utilizado el ejemplo de la ayuda
He utilizado el ejemplo de la ayuda