Обсуждение статьи "Обработка ошибок и логирование в MQL5" - страница 2

 
Михаил:

Сергей!

Вот для таких ситуаций и существуют коды возврата торгового сервера.

Пример: Вы проверили наличие свободных средств и получили утвердительный результат.

Отсылаете ордер, а он не был принят (как Вы сказали : "Да мало ли что может произойти "),

так вот торговый сервер вернёт Вам в коде возврата ошибку "Недостаточно средств". 

Михаил, Вы правда думаете, что я это не понимаю? :)

Окей, переведу свою фразу и мысль статьи: сначала делаем предварительную проверку, а потом проверяем результат. Я не зацикливаюсь на торговле (для неё да, это коды возврата торгового сервера), т.к. это может быть что угодно:

1) Например файл: сначала проверили, существует ли такой файл, если нет, то создали и записали в него данные. После проверили, что получилось

2) Например граф. объект: сначала проверили, существует ли такой объект. Если нет, то создали, иначе подвинули (если координаты изменились). Потом проверили, что получилось.

и т.д. Почти что угодно, что зависит от чего-то другого и может завершиться неудачей.


Итак, давайте всё таки определимся/подытожим. Ваша основная претензия в том, что не рассмотрены коды возвратов ошибок торгового сервера и возможные реакции программы на них?

По первому - всё это есть в документации.
По второму - мне кажется, что если прочитать статью, то возможные реакции станут очевидны.

Но если Вы со мной не согласны, то самое простое решение - написать статью целиком об этом. Лично я не считаю это столь необходимым, чтобы самому об этом писать. Если для Вас это настолько важно, то пожалуйста, сделайте это. Я уверен, что у Вас получится лучше, чем у меня, ведь у Вас есть явный интерес конкретно к этому.

P.S. я уверен, что MQL4/5 это не только советники. Очевидно, что для Вас это в основном они. Но к примеру за последние два месяца я сделал раза в два больше индикаторов, чем советников. Так что всё очень субъективно.

 

Сергей!

У меня нет претензий к Вашей статье.

 
Увы, очень неэффективный логгер. Хотел попользоваться, но видимо придется самому изобретать велосипед ;-).
 

по поводу эффективности логгера... На ЯП java тоже сначала сделали логгер, а потом долго мучались.

В java эту проблему решили с помощью var args, которые недоступны в MQL4/5. В чем проблема ? - сначала мы вызываем функции error.toString() потом конкатенируем все стринги в функции `CLogger::log(string1 + string2 + string3...); ` а лишь в конце проверяем - надо ли полученный стринг печатать.


Что бы я предложил взамен? - ничего нового, то что фактически стало стандартом в той же яве:

`if(CLogger::isLevel(LOG_LEVEL_INFO))   

     CLogger::log(string1 + string2 + string3);`

конечно в этом случае нужно иметь различные логгеры для записи в файле, printf и прочих.

 

Всё завязано на один файл только. Что если надо вести два? Что если что-то надо лишь только принтить, а что-то писать в файл? Нет гибкости. Надо не через дефайн делать вызов, а через создание объекта.

Или например, хочу принтить и писать в файл. Или надо отправлять пуш и отправлять емэйл одновременно.