оформляте код правильно пожалуйста
//Function Seconds int Seconds() export //Возвращает количество секунд, прошедших с начала текущей минуты //При ошибке функция возвращает -1. { //----------------------------------------------------------------------------// //Служебные переменные MqlDateTime MqlDate; //Структура в которой хранятся данные по дате int Result; //Возвращаемое значение //----------------------------------------------------------------------------// ResetLastError(); //Записываем переданное значение в структуру TimeToStruct(TimeCurrent(),MqlDate); //Определяем количество секунд Result = MqlDate.sec; if(GetLastError()!=0) //При расчетах возникла ошибка, подробно смотрим ее код. { Result = -1; //Сообщаем об ошибке } //----------------------------------------------------------------------------// return(Result); //----------------------------------------------------------------------------// }

- 2010.02.23
- MetaQuotes Software Corp.
- www.mql5.com
Добрый день, подскажите кто знает, для работы моего эксперта нужна функция секунд, прошедших с начала бара, таковой в mql5 нет, ...на форуме нашел пример, который работает только через библиотеку. НО Как создать библиотеку с этой функцией и как правильно ей потом юзать, пользоваться функцией в эксперте. С библиотеками никогда дело не имел. Очень нужна эта функция, подскажите пожалуйста.
Вот сама функция, для работы через библиотеку:
.....
Ну чувствуется моя библиотека в народ пошла, не плохо было бы еще при вставке кода "SRC" юзать... :)
тока эти функции из "Миграционной библиотеки", предназначавшейся для удобства МИГРАЦИИ с MQL4 на MQL5.
А по факту заданного вопроса скажу следующее - Если нужно отловить количество секунд прошедших с начала текущего бара, так это примерно так делается:
1. Получаем текущее текущее серверное время (при помощи TimeCurrent или TimeTradeServer) - RealTime;
2. Получаем время начала бара (можно различными способами, но я предпочитаю из тайм-серии) - BarTime;
3. Рассчитываем количество секунд прошедших с момента формирования текущего бара как RealTime - BarTime.
ок, только какже быть с библиотекой
Библиотека там к слову пришлась, для решения ВАШЕЙ задачи она не требуется (можете функцию создать и помещать ее куда угодно).
PS
Сами библиотеки процедур и фуункций можно создавать двумя способами:
1. Оформлять их при помощи *.mqh-файлов и размещать тут \MQL5\Include (подкаталоги приветствуются);
2. Оформлять их в виде *.mq5-файлов и размещать тут MQL5\Libraries (в основном используется при коммерческом распространении библиотек в виде *.ex5 и требует наличие заголовочных *.mqh).
Библиотека там к слову пришлась, для решения ВАШЕЙ задачи она не требуется (можете функцию создать и помещать ее куда угодно).
Ок, я так попробовал, вставил в код эксперта вашу функцию секунд, при компеляции пишет ошибку перед скобкой int Seconds() export ---> '(' - semicolon is expected g.mq5 80 12
Без этой функции компелируеться, но это уже не рабочий эксперт, какже быть
Эта функция Вам не чего не даст, там нужна другая.
Вот шаблон для такой функции (вроде нормально работает):
//Function PassedSeconds int PassedSeconds(string symbol="",ENUM_TIMEFRAMES period = PERIOD_CURRENT) //Функция возвращает количество секунд прошедших с начала формирования бара //В случае ошибки функция возвращает -1 { //----------------------------------------------------------------------------// //Служебные переменные datetime RealTime,BarTime; //Текущее время и время начала формирования бара datetime ArTime[];//Массив для копирования данных int Result; //Возвращаемый результат //----------------------------------------------------------------------------// ResetLastError(); //Защита от дурака if(symbol=="") symbol = Symbol(); //Получаем текущее время RealTime = TimeTradeServer(); //Копируем данные в массив и получаем время начала формирования бара if(CopyTime(symbol,period,0,1,ArTime)!=-1) { //Получаем время начала формирования бара BarTime = ArTime[0]; } else Result = -1; //Получем количество секунд прошедших с начала формирования бара if(Result!=-1) { Result = (int)(RealTime-BarTime); } //Отлов ошибок выполнения if(_LastError!=0) //При расчетах возникла ошибка, подробно смотрим ее код. { Result = -1; //Сообщаем об ошибке } //----------------------------------------------------------------------------// return(Result); //----------------------------------------------------------------------------// }
Вот шаблон для той функции (вроде нормально работает):
к сожаленью пишет туже ошибку
'(' - semicolon is expected g.mq5 81 18
придеться както вписать в библиотеку
export - Юзать треба тока если библиотека оформлена в виде mq5 и лежит тут MQL5\Libraries, в любых других случаях ее не нужно юзать...
А как прописать эту функцию в библиотеку? непросто ведь вставить код функции в новосозданную библиотеку. И как потом ее в эксперте вызывать и юзать?

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, подскажите кто знает, для работы моего эксперта нужна функция секунд, прошедших с начала бара, таковой в mql5 нет, ...на форуме нашел пример, который работает только через библиотеку. НО Как создать библиотеку с этой функцией и как правильно ей потом юзать, пользоваться функцией в эксперте. С библиотеками никогда дело не имел. Очень нужна эта функция, подскажите пожалуйста.
Вот сама функция, для работы через библиотеку:
//Function Seconds
int Seconds() export
//Возвращает количество секунд, прошедших с начала текущей минуты
//При ошибке функция возвращает -1.
{
//----------------------------------------------------------------------------//
//Служебные переменные
MqlDateTime MqlDate; //Структура в которой хранятся данные по дате
int Result; //Возвращаемое значение
//----------------------------------------------------------------------------//
ResetLastError();
//Записываем переданное значение в структуру
TimeToStruct(TimeCurrent(),MqlDate);
//Определяем количество секунд
Result = MqlDate.sec;
if(GetLastError()!=0)
//При расчетах возникла ошибка, подробно смотрим ее код.
{
Result = -1; //Сообщаем об ошибке
}
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}