Обсуждение статьи "Пользовательские индикаторы в MQL5 для начинающих"

 

Опубликована статья Пользовательские индикаторы в MQL5 для начинающих:

Любой новый предмет для новичка с первого взгляда кажется сложным для понимания. Нам кажется простым и ясным то, что мы уже знаем. Но мы просто не помним, что всем нам когда-то приходилось изучать с нуля, даже родной язык, на котором мы разговариваем. Так и язык MQL5, таящий в себе огромные возможности для написания торговых стратегий, можно начать изучать с базовых понятий и примеров. Мало-помалу, и настанет тот день, когда владение им будет таким же естественным и простым, как умение ходить. В этой статье на примере пользовательского индикатора SMA рассматривается взаимодействие технического индикатора с клиентским терминалом MetaTrader 5.

Автор: Nikolay Kositsin

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

int  iMA(
   string symbol,                                     // имя символа
   ENUM_TIMEFRAMES period,                 // период
   int ma_period,                                    // период усреднения
   int ma_shift,                                       // смещение индикатора по горизонтали
   ENUM_MA_METHOD ma_method,         // тип сглаживания
   ENUM_APPLIED_PRICE applied_price     // тип цены или handle
   );
используя которую, можно получить тот же результат. Но. Как получить applied_price при использовании короткой формы int OnCalculate(). Иными словами, как добраться до значений во вкладке "Параметры" при инициализации индикатора?

Спасибо. 

 
Спасибо. очень понятное объяснение для новичков вроде меня. жду следующей статьи...
 

Спасибо. Это очень понятно и полезно для начинающих.

 

if(prev_calculated==0) // проверяем первый старт индикатора
first=MAPeriod-1+begin; // индекс старта для всех баров
else first=prev_calculated-1; // индекс старта для новых баров

when first=MAPeriod-1+begin; какой бар является текущим ? [0] или [rates_total] ?

when first=prev_calculated-1; это большое число, нужно повторить вычисление?

 
В статье " Пользовательские индикаторы в MQL5 для новичков" говорится: "В индикаторах лучше использовать возрастающий порядок [а не "обратный"]". Но если программа будет работать все дальше и дальше, то в конечном итоге она будет стремиться к бесконечности, то есть буфер (целочисленный) для номеров индексов скоро закончится, не так ли? Как вы решаете эту проблему?
Custom Indicators in MQL5 for Newbies
  • 2010.03.03
  • Nikolay Kositsin
  • www.mql5.com
Any new subject seems complicated and hard-to-learn for a newbie. Subjects that we know seem very simple and clear to us. But we simply do not remember, that everyone has to study something from scratch, and even our native language. The same is with the MQL5 programming language that offers wide possibilities of developing one's own trading strategies - you can start learning it from basic notions and simplest examples. Interaction of a technical indicator with the MetaTrader 5 client terminal is consider in this article on the example of the simple custom indicator SMA.
 

Спасибо за статью! Очень полезно материал для новичка и
для того кто переходит с другого языка. 

 

Компьютерный перевод? Придумайте.

По сравнению с MQL4, субскрипты массива метрик вычисляются из прошлого и являются фиксированными, а не динамическими. Интересно, что произойдет, если запустить его на неделю или месяц? Все ли данные находятся в памяти? Если все в памяти, не будет ли он работать все медленнее и медленнее?

Однако на сайте https://www.mql5.com/zh/articles/31中又说:

  1. "Установка индекса элемента как последовательности такая же, как и в MQL4" - Что это значит? В нашем примере мы используем индекс элемента как временную последовательность. Другими словами, текущий столбец (еще не сформированный) всегда имеет индекс [0], предыдущий (уже сформированный) - индекс [1] и так далее.

Поэтому будьте внимательны к тому, какой регистр используется на самом деле. В большинстве примеров на MQL4 используется индексный массив с индексом current равным 0, в большинстве примеров на MQL5 используется подскрипт индексного массива с индексом past равным 0.

MQL5 初学者:EA 交易技术指标使用指南
MQL5 初学者:EA 交易技术指标使用指南
  • 2013.09.04
  • Sergey Pavlov
  • www.mql5.com
为在EA 交易中获得内置或自定义指标的值,首先应使用相应函数创建指标的处理函数。本文中的示例说明了在创建自己的程序时如何使用技术指标。在本文中说明的指标使用 MQL5 语言构建。本文的目标受众是那些在交易策略开发上不具备太多经验的读者,并旨在通过使用提供的函数库提供简单明了的指标使用方式。
 
DxdCn:

Компьютерный перевод? Придется обойтись.

По сравнению с MQL4, субскрипты массива метрик вычисляются из прошлого и являются фиксированными, а не динамическими. Интересно, что произойдет, если запустить его на неделю или месяц? Все ли данные находятся в памяти? Если все в памяти, не будет ли он работать все медленнее и медленнее?

Однако на сайте https://www.mql5.com/zh/articles/31中又说:

  1. "Установка индекса элемента как последовательности такая же, как в MQL4" - что это значит? В нашем примере мы используем индекс элемента как временную последовательность. Другими словами, текущий столбец (еще не сформированный) всегда имеет индекс [0], предыдущий (уже сформированный) - индекс [1] и так далее.

Поэтому будьте внимательны, какой случай используется на самом деле. В большинстве примеров на MQL4 используется массив индикаторов с текущим значением 0, а в большинстве примеров на MQL5 - массив индикаторов с подстрочными индексами с прошлым значением 0.

Функция ArraySetAsSeries() используется в MQL5 для преобразования динамических массивов (выделение памяти для хранения последних значений в направлении большего индекса) в форму временного ряда, то есть самые новые данные хранятся по индексу 0, следующие самые новые данные - по индексу 1, и так далее, причем самые новые данные будут храниться по индексу 0 вечно.

Читаем с помощью функции copybuffer (), с позиции индекса 0 начинаем читать назад элементы массива, читаем, сколько собственных определений в строке.

 

Николай!

Не подскажешь мне почем у при попытке заполнить в цикле индикаторный массив по формуле  Mass[ i ]= Mass[ i+1]+А; где А переменная, компиляция проходит без ошибок а при присоединению к окну  выходит сообщение  array out of range (выход из размера массива)?