Ошибки, баги, вопросы - страница 1326

 
Alexander Laur:

Karputov Vladimir и Vladimir Zubov вы хоть читаете то, что комментируете? Или для Вас главное выразить свое почтение. Ну если не вникли в обсуждаемую проблему, так постойте в стороне, глядишь что то полезное для себя уясните.

Мой разговор с Ренатом о НЕКОРРЕКТНОЙ РАБОТЕ ФУНКЦИЙ !!!

Почему функция ПРАВИЛЬНО (return(true)) отработавшая возвращает НУЛЬ?

Как может стоимость тика быть равна нулю? Где берет функция SymbolInfoDouble() данные о стоимости тика, если возвращает нулевое значение стоимости тика?

Вы бы хоть вникали в то, что комментируете.

Вы вероятно не совсем правильно представляете как работают функции. Функция:

  1. Возвращает результат правильности своей отработки. На примере продуктового склада. Задача у функции - взять то, что лежит в коробке №5. Если функция сходила на склад, нашла коробку №5 и вытряхнула то, что там есть в свою сумку - значит функция вернёт ответ "Задача выполнена успешно".
  2. Функции по большому счёту нет дела до того, что она там принесла в сумке. Это теперь Ваша проблема. Анализировать, что именно принесла функция в сумке.

Таким образом Ваша задача, как программиста, проверять два результата: успешность выполнения функции и то, что вернула функция. И не нужно требовать от терминала то, что Вы хотели бы видеть. Достаточно просто правильно делать.

 

Неоднозначный результат

void OnStart()
{
        A a( 10 );
        {
                A a( a.c );             //здесь = не 10
                Print( a.c );
        }
        {
                A a = a.c;              //здесь = 10
                Print( a.c );
        }
}

В одном случае результат: 10, а в другом: не 10. А в чём разница?

 
A100:

Неоднозначный результат

В одном случае результат: 10, а в другом: не 10. А в чём разница?

жесть :) а что в самих методах?
 
Konstantin Karpov:
жесть :) а что в самих методах?

забыл добавить :)

class A {
public:
        A( int b ) : c( b ) {} 
        int c;
};
 
Alexander Laur:

Вы ерунду пишите. Функции создаются для обработки данных и получения результатов этой отработки. Создавать функцию только для того, что бы она ПРОСТО поработала. У меня нет слов.

Из дискуссии выбываю.

+

Пишу мультивалютный эксперт с необходимостью синхронизации инструментов и столкнулся с такими проблемами, что волосья дыбом везде шевелятся.

На данный момент вынужден констатировать - надежного способа получить рыночные данные и при этом четко знать, что данные актуальны, просто невозможно.

Самым забавным, и в то же время шокирующим, оказалось то, что даже флаги в свойствах символа типа 

SERIES_SYNCHRONIZED

не дают НИКАКИХ ГАРАНТИЙ.

 
A100:

Неоднозначный результат

В одном случае результат: 10, а в другом: не 10. А в чём разница?

Спасибо за сообщение, проверим/поправим.
Кстати, в MSVC результат обратный.
 

А знает ли кто нибудь, что SymbolsTotal(true) и его производные показывают инфу вовсе не из "Обзор рынка"?

Ну так бы и написали в справке, но нет же, тайна за семью печатями...

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Список изменений в билдах MetaTrader 5 Client Terminal

kogriv, 2015.07.18 10:44

Подскажите- как быть. Был файл - скрипт на mql5, последние изменения были в марте 15-го года. После марта не трогал файл и метаэдитор долгое время. На днях запустил метатрэйдер, было сделано обновление и вместе с этим файл скрипта (исходник) каким то образом сбился на более раннюю версию. При этом исполняемый файл остался в последней версии. Как то можно восстановить исходник?

 

Для сохранения разных версий надо использовать MQL5 Storage.

Скорее всего речь о модификации файлов из штатного набора скриптов терминала. Они всегда перезаписываются при обновлениях, так что не надо их самостоятельно модифицировать. Нужно сделать копию под другим именем и уже ее править.

 
Renat Fatkhullin:

Для сохранения разных версий надо использовать MQL5 Storage.

Скорее всего речь о модификации файлов из штатного набора скриптов терминала. Они всегда перезаписываются при обновлениях, так что не надо их самостоятельно модифицировать. Нужно сделать копию под другим именем и уже ее править.

Нет. Файл изменялся не из стандартной поставки, и MQL5 Storage не использовался. Вероятно пользователь вошёл в другую папку "Data Folder" - по крайней мере это пока самая жизнеспособная версия.
Причина обращения: