Справка по языку MQL5 - страница 55

 

Да, спасибо ещё раз за... ну понимаете ;) науку!

Открываются весьма интересные перспективы для вводимых параметров.

В части более понятливого представления чем извращение с названиями переменных...

 

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

Классно, надо будет попробывать.

 
YuraZ писал(а) >>

вероятно - предполагаю - это решение было принято в пользу скорости

Часто для тех, кто использует графические построения, скорость обработки и не требуется.

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

============

Сейчас много споров идет по разным аспектам реализации МТ5, MQL5.

А те, кто создал свою автономную программу, не теряют время на эти споры.

НЕ ТЕРЯЮТ ВРЕМЯ НА ПЕРЕПИСЫВАНИЕ СВОИХ РАЗРАБОТОК ПРИ ВЫХОДЕ НОВОЙ ВЕРСИИ ТОРГОВОЙ ПЛАТФОРМЫ (МТ4->МТ5).

Пишут конвертер нового формата истории и не знают горя.

============

Никого ведь не спросили, удовлетворяет скорость обработки графических построений или нет.

============

Проблема даже не в скорости.

В MQL5 в OnCalculate можно передать таймсерию только для одного тф.

Если работаешь с несколькими тф одновременно, например, делаешь мультизигзаг, обрабатывающий одновременно все таймфреймы.

Как тут быть? Через OnCalculate получить доступ ко всем тф не получится. Придется организовывать доступ через копирование истории в свои массивы.

В этом случае все равно как будет работать индикатор - в режиме индикатора или в режиме эксперта.

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

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

-------------------

Пример с нашим автопромом. В наших машинах много непродуманного разработчиками. Результат - отказ от наших машин. ВСЕ!, у кого появляется возможность, с радостью отказываются от наших машин. Сколько бы ВВП ни вливал в поддержку Автоваза из бюджета, который, кстати, мы формируем своими налоговыми отчислениями, это сейчас вряд ли поможет. Как не было там (на Автовазе) грамотной стратегии, так и не видится пока.

 

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

И делать собственно выводы...

 

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

Метатрейдер работает с графикой быстро. Когда говорят, что из-за множества графических построений происходит сильное замедление расчетов, то это говорит только о том, что данная разработка требует доработки. ВСЕ!

Это говорит о квалификации программиста.

==========

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

 

У меня лично нет такой квалификации что-б доработать пару-тройку штатных индикаторов,

и затем сравнить их работу...

Но если кто возьмётся был-бы весьма хороший аргумент с цифрами "на руках".

Если скажем замедление, которое понятное имеет место быть, в районе 5 или даже 25%

то епстественно выбор за удобством использовании графики нежели голых осциляторов...

 

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

Часто производятся избыточные вычисления. Часто не делается проверка в различных (чтобы сломать алгоритм) режимах работы.

Часто просто сделан просто перевод голого алгоритма в программу без проверок "на дурака". То есть без сервисной обработки алгоритма.

Но это уже другая история. Разработчики делают многое. А у нас выбора мало.

 
nen >>:

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

Часто производятся избыточные вычисления. Часто не делается проверка в различных (чтобы сломать алгоритм) режимах работы.

Часто просто сделан просто перевод голого алгоритма в программу без проверок "на дурака". То есть без сервисной обработки алгоритма.

Но это уже другая история. Разработчики делают многое. А у нас выбора мало.

Смысл моего предложения в том, что-бы просто сравнить голый индикатор и тот-же индикатор но с добавленной графикой.

Вот и всё...

 

Функция SeriesInfoInteger имеет два варианта вызова.

В первом варианте запрашиваемый параметр возвращается с типом long.

Во втором варианте запрашиваемый параметр записывается в переменную типа long.

--------

Запрашиваемые параметры имеют типы:

BARS_COUNT

Количество баров по символу-периоду на данный момент

long

BARS_SERIES_FIRSTDATE

Самая первая дата по символу-периоду на данный момент

datetime

BARS_FIRSTDATE

Самая первая дата в истории по символу на сервере

datetime

BARS_SYNCRONIZED

Признак синхронизированности данных по символу

bool

С первым и четвертым параметрами понятно. Вопросов не возникает.

А вот второй и третий параметры типа datetime. Значения этих параметров возвращаются также в виде числа типа long.

Прочесал всю Справку, но так и не нашел, каким образом преобразовать число типа long в тип datetime.

И экспериментирование с преобразованием данных типов пока ничего не дало.

---------------

Рассматриваемая функция и запрашиваемые параметры будут одними из самых востребованных при программировании на MQL5.

Но пока по данной функции возникает множество вопросов. А ответы приходится искать методом тыка (в Справке пока очень скромно написно об использовании этой функции).

Каким образом можно использовать второй и третий из запрашиваемых параметров?

Каким образом произвести преобразование из типа long в тип datetime? Может, кто-нибудь знает?

 

Было бы лучше, чтобы функция SeriesInfoInteger возвращала структуру с четырьмя элементами:

BARS_COUNT

Количество баров по символу-периоду на данный момент

long

BARS_SERIES_FIRSTDATE

Самая первая дата по символу-периоду на данный момент

datetime

BARS_FIRSTDATE

Самая первая дата в истории по символу на сервере

datetime

BARS_SYNCRONIZED

Признак синхронизированности данных по символу

bool

struct MQLInfoSeries
  {
   long     BARS_COUNT;
   datetime BARS_SERIES_FIRSTDATE;
   datetime BARS_FIRSTDATE;
   bool     BARS_SYNCRONIZED;
  }
   
Названия элементов структуры лучше как-то сократить для удобства дальнейшего использования.
Причина обращения: