Русифицированная и немного переделанная stdlib.mqh - может кому пригодится. . .

 

     Доброго времени суток!

Сразу объясню зачем это сделано:

1.Библиотека переписана по русски т.к. (по крайней мере мне) удобнее получать расшифровку ошибки на привычном русском языке и нет надобности искать в    справочнике перевод и описпние ошибок.

2.Библиотека переделана в подключаемй файл т.к. этот вариант не страдает недостатком библиотек - т.е. поздним связыванием (вызов функции из    библиотеки происходит на стадии исполнения и вызов из двух и более Советников одновременно одной и той же функции приводит к ошибке типа "Фунция    не может быть вызвана т.к. библиотека уже занята вызовом из другого Советника").  С подключаемым файлом такой заморочки нет. И нет надобности    проверять  разрешены ли вызовы библиотечных функций и вызовы из DLL в свойствах Советника.

3.В файл добавлены русские комментарии, что может пригодится начинающим разработчикам MQL4 программ т.к. облегчает понимание роли и принципа    работы описанных в файле функий.

Если никому и не пригодится - то не жалко т.к. я этим файлом пользуюсь уже пару недель и никаних проблем пока не заметил. Вся разница только в том, что вызывается он не из libraries, а из include (подпапка подлючаемых файлов в папке MetaTrader/Experts)  и не страдает недостатком библиотек.

P.S. Чтоб у вас все было и вам за это ничего не было.

Файлы:
stdlibrus.mqh  14 kb
 
AlexTrader0618 >>:

Доброго времени суток!

Сразу объясню зачем это сделано:

1.Библиотека переписана по русски т.к. (по крайней мере мне) удобнее получать расшифровку ошибки на привычном русском языке и нет надобности искать в справочнике перевод и описпние ошибок.

2.Библиотека переделана в подключаемй файл т.к. этот вариант не страдает недостатком библиотек - т.е. поздним связыванием (вызов функции из библиотеки происходит на стадии исполнения и вызов из двух и более Советников одновременно одной и той же функции приводит к ошибке типа "Фунция не может быть вызвана т.к. библиотека уже занята вызовом из другого Советника"). С подключаемым файлом такой заморочки нет. И нет надобности проверять разрешены ли вызовы библиотечных функций и вызовы из DLL в свойствах Советника.

3.В файл добавлены русские комментарии, что может пригодится начинающим разработчикам MQL4 программ т.к. облегчает понимание роли и принципа работы описанных в файле функий.

Если никому и не пригодится - то не жалко т.к. я этим файлом пользуюсь уже пару недель и никаних проблем пока не заметил. Вся разница только в том, что вызывается он не из libraries, а из include (подпапка подлючаемых файлов в папке MetaTrader/Experts) и не страдает недостатком библиотек.

P.S. Чтоб у вас все было и вам за это ничего не было.


У хорошего хозяина в хозяйстве всё сгодится, я лично скачал (пусть будет :о) .

 
Чем лучше вызов функций из заголовочного файла без импорта?
 
case 149: error_string="Попытка открыть противоположную позицию к уже существующей";break;
case 150: error_string="Попытка закрыть позицию противоречит правилу FIFO.";break;

Поправка к 150

Да и 149 как-то сложно сформулирована...

У меня она проще написана: "ЛОК запрещён!!!"

;)

Кстати в МТ5 согласно концепции это будет так:

"Попытка закрыть ордер противоречит правилу FIFO."

Наверное...

:)))

 
Zhunko >>:
Чем лучше вызов функций из заголовочного файла без импорта?

     Доброго времени суток!

Выдержка из учебника по MQL4:

Включаемый файл (Included file) - исходный текст часто используемых блоков пользовательских программ. Такие файлы могут включаться в исходные тексты экспертов, скриптов, пользовательских индикаторов и библиотек на этапе компиляции. Использование включаемых файлов более предпочтительно, чем использование библиотек, из-за дополнительных накладных расходов при вызове библиотечных функций. Включаемые файлы рекомендуется хранить в директории каталог_терминала\experts\include

И еще одна выдержка из руководства пользователя MQL4 - недостатки импорта выделены:

Импорт функций осуществляется из откомпилированных модулей MQL4 (файлы *.ex4) и из модулей операционной системы (файлы *.dll). Имя модуля указывается в директиве #import. Для того, чтобы компилятор мог правильно оформить вызов импортируемой функции и организовать правильную передачу параметров, необходимо полное описание функций. Описания функций следуют непосредственно за директивой #import "имя модуля". Новая команда #import (можно без параметров) завершает блок описания импортируемых функций.


Импортируемые функции должны иметь уникальные имена. Нельзя одновременно импортировать из разных модулей функции с одинаковыми именами. Импортируемые функции не должны иметь имен, совпадающих с именами встроенных функций.

Так как импортируемые функции находятся вне компилируемого модуля, компилятор не может проверить правильность передаваемых параметров. Поэтому, во избежание ошибок выполнения, необходимо точно описывать состав и порядок параметров, передаваемых в импортируемые функции. Параметры, передаваемые в импортируемые функции (как из EX4, так и из DLL-модулей), не могут иметь значения по умолчанию.

Для импорта функций во время выполнения mql4-программы используется так называемое позднее связывание. Это значит, что пока не вызвана импортируемая функция, соответствующий модуль (ex4 или dll) не загружается.

Использование заголовочных файлов без импорта позволяет прямо включать в EX4 файлы куски кода, содержещие функции в процессе компиляции. Нет проблем с вызовом библиотек на этапе исполнения программы (т.к. функция уже встроена в EX4 файл.). При использовании заголовочного файла те функции, которые не вызываются в процессе работы EX4 программы, не включаются в исполняемый файл .т.е вся работа программы определяется на этапе компиляции, до начала исполнения, что увеличивает надежность программы и уменьшает расходование памяти компьютера.

P.S. Чтоб у вас все было и вам за это ничего не было!

 

Уважаемый топикстартер! У Вас не дописана одна строка кода, возвращающая описание ошибки № 0. У меня в коде это вот так:

case 0:   error_string=" Нет ошибки"; break;

У Вас:

case 0:   //Нормальное завершение процедуры.

Исправьте пожалуйста.

 
Vitaly Murlenko #:

Уважаемый топикстартер! У Вас не дописана одна строка кода, возвращающая описание ошибки № 0. У меня в коде это вот так:

У Вас:

Исправьте пожалуйста.

А самому - никак? 

 
Vitaly Murlenko #:

Уважаемый топикстартер! У Вас не дописана одна строка кода, возвращающая описание ошибки № 0. У меня в коде это вот так:

У Вас:

Исправьте пожалуйста.

13 год назад были посты. К тому же аккаунт топикстартера удален...

 
Алексей Тарабанов #:

А самому - никак? 

А мне и не нужно -  у меня своя похожая есть. Но пост я всё же опубликовал, чтоб те, кто ещё только будут скачивать сие изделие, знали что и как нужно исправить, ибо ошибка номер ноль - довольно частый гость в отладке кодов.

 
Yevhenii Levchenko #:

13 год назад были посты. К тому же аккаунт топикстартера удален...

Но библиотека актуальна и сегодня. Пусть посты останутся как есть. От этого только лучше будет.

 
Vitaly Murlenko #:

Но библиотека актуальна и сегодня. Пусть посты останутся как есть. От этого только лучше будет.

Логика в этом есть. Не помешает.