Ошибочка:
Да, согласен - уровни - горизонтальные уровни.
Мой вопрос наверное примитивный,но у меня тяжелые неувязки с функцией:IndicatorCounted-не доходит.
Если посмотреть какое значение она возвращает,к примеру в алерте,то это -1.
А это совсем не то что написано в статье "количество посчитанных индикатором баров".
И еще там говорится про какую-то функцию IndicatorBars() .Опечатка,наверное..
Если ответите-век не забуду!!
Гриша.
Тоже чего то не догнал...
Если - counted_bars=IndicatorCounted() - это число неизменённых баров (или посчитанных индикатором), то после повторного запуска start: IndicatorCounted() - а следовательно и counted_bars будет уже чему-то равно. Зачем тогда исполнять строку: if(counted_bars>0) counted_bars--; это же обнулит counted_bars и тогда: limit=Bars-counted_bars - то есть станет равен Bars. И индикатор по новой начнёт пересчитывать все бары??
Где я ошибаюсь, плз, подскажите.
P.S. (может и здесь подскажете?) я использую ДЕЛЕНИЕ на значение из предыдущего бара, при запуске индикатора появлялось деление на НОЛЬ, поэтому сейчас приходиться использовать такую конструкцию:
Counted_bars=IndicatorCounted();
if (Counted_bars==0)
i=Bars-Bars2-1;
while (i>=0)
{ ..... }
i--;
При появлении нового бара Counted_Bars уже не расматривается и i становится =0, в цикле while происходит только одна иттерация только для нового бара.
Может есть вариант попроще??
banderass писал(а):дауж, как я так ...
Мой вопрос наверное примитивный,но у меня тяжелые неувязки с функцией:IndicatorCounted-не доходит.
Если посмотреть какое значение она возвращает,к примеру в алерте,то это -1.
А это совсем не то что написано в статье "количество посчитанных индикатором баров".
И еще там говорится про какую-то функцию IndicatorBars() .Опечатка,наверное..
Если ответите-век не забуду!!
Гриша.
автор забросил эту статью? а вопрос для новичков не "примитивный". И эти статьи читают и до сих пор...
Здравствуйте, помогите пожалуйста разобраться вот в этом:
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
for(int i=0;i<limit;i++)
-----------
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
if(limit>barsToProcess)
limit=barsToProcess;
-----------
я запутался в этих конструкциях, limit=Bars-counted_bars; это будет равно 2 или 1? а во второму случае зачем проверять условие и делать limit=barsToProcess; почему его сразу не присвоить без проверки условия? я пробовал, на индикаторе в данном случае отображается кривая за период barsToProcess а дальше на графике пусто, а как например работает Moving Average, у нее есть период, но прорисовывается от начала до конца?
Спасибо
а то ничего не видно на графике
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
New article Язык MQL4 для "чайников". Пользовательские индикаторы (часть 1) has been published:
Это четвертая статья из цикла "Язык MQL4 для 'чайников'". Сегодня мы будем учиться писать пользовательские индикаторы. Мы изучим классификацию свойств индикаторов, посмотрим, как эти свойства влияют на сам индикатор, узнаем про новые функции и оптимизацию, и наконец-то напишем несколько своих индикаторов. Кроме того, в конце статьи вас ждут советы по стилю программирования. Если это первая статья "для чайников", которую вы читаете, то, пожалуйста, прочитайте предыдущие статьи, чтобы у вас не возникало никаких вопросов. Кроме того убедитесь, что вы хорошо разобрались в старом материале, так как в этой статье я не буду объяснять основы.
Какие бывают индикаторы?
Сейчас я покажу вам какие бывают индикаторы. Конечно, вы и сами видели их достаточно, но сейчас я хочу обратить ваше внимание на свойства и параметры индикаторов, чтобы сделать таким образом небольшую классификацию свойств и параметров. Это поможет вам в дальнейшем писать пользовательские индикаторы. Итак, первый простенький индикатор:
Это Скользящее Среднее (Moving Average, MA), часто используемый технический индикатор. Обратите внимание на следующие важные вещи:
Author: Antoniuk Oleg