Комментарии нужны?
Ребята всем спасибо кто заинтересовался вопросом.
Сушествуют функцыи Get и Set В других языках. Set Отпровляем параметры а Get Получаем. Как пользоватса Get в MQL5?
Да вроде Вы сами ответили на вопрос. Get-функция получает значение какого-либо свойства (объекта, графика и т. д.).
Например:
ObjectGetString(0, sName, OBJPROP_TEXT);
означает получить текст, который отображается объектом, имя которого указано в переменной sName.
Второй вопрос попроще если кто сталкивался.
Игорь, мы оба неправы. Я не сразу понял задачу...
Кроме директивы #property установить уровень индикатора можно функцией
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
Соответственно этот уровень надо задать во входящих параметрах индикатора. В таком случае, уровень рисоваться будет по заданному значению и менять его надо тоже по этому значению.
Тестовый вариант
#property indicator_separate_window #property indicator_buffers 1 #property indicator_type1 DRAW_LINE #property indicator_plots 1 #property indicator_color1 clrGreenYellow #property indicator_level1 0 #property indicator_levelcolor clrPurple input double level = 0.6; double buf[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0, buf, INDICATOR_DATA); IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, level); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int i = 0, limit = prev_calculated == 0 ? 0 : rates_total-1; for(i = limit; i < rates_total; i++) { buf[i] = i%2; } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Игорь, мы оба неправы. Я не сразу понял задачу...
Кроме директивы #property установить уровень индикатора можно функцией
Соответственно этот уровень надо задать во входящих параметрах индикатора. В таком случае, уровень рисоваться будет по заданному значению и менять его надо тоже по этому значению.
Тестовый вариант
Да вы правы что можно использовать параметр input. Я тоже об этом думал.
Но тогда получаетса каша так как вы можете выстовить уровень в 2 местах в input. # properity кто из них будет превалировать над кем дело запуска програмы.
В первый момент #properity а после старта в OnCalculate будет превалировать input.
Но после этого если мы меняем в настройках уровень. Так как input превалирует. Он обратно его изменит на своё значение или опять не перерисует индикатор. Это взвисимости как написать логику индикатора!
А я хочю решить эти 2 проблемы. Решение простое.
Просто считывать в нутри исполнение уровень заданный в индикаторе (Alexey Viktorovна) картинке вы показываете, С каких параметров я хочю считывать параметры в момент вычисления самого индикатора!
Да вроде Вы сами ответили на вопрос. Get-функция получает значение какого-либо свойства (объекта, графика и т. д.).
Например:
означает получить текст, который отображается объектом, имя которого указано в переменной sName.
Вот по тому и спрашиваыю как можно считывать уровни в нутри вычисления при том чтоб уже параметр #properity который задали с начала не влиял на процес работы индикатора!
Тогда как считывать директиву уровня при том после того как компилятор выполнин вычисление?
Да вы правы что можно использовать параметр input. Я тоже об этом думал.
Но тогда получаетса каша так как вы можете выстовить уровень в 2 местах в input. # properity кто из них будет превалировать над кем дело запуска програмы.
В первый момент #properity а после старта в OnCalculate будет превалировать input.
Но после этого если мы меняем в настройках уровень. Так как input превалирует. Он обратно его изменит на своё значение или опять не перерисует индикатор. Это взвисимости как написать логику индикатора!
А я хочю решить эти 2 проблемы. Решение простое.
Просто считывать в нутри исполнение уровень заданный в индикаторе (Alexey Viktorov) на картинке вы показываете, С каких параметров я хочю считывать параметры в момент вычисления самого индикатора!
Проследите последовательность выполнения кода.
- Выполняется #property
- Выполняется всё что написано в OnInit()
- и далее...
Отсюда вывод: Вызывая свойства индикатора и меняя значение уровня в закладке "Уровни" вы ничего не добьётесь, так-как выполнение IndicatorSetDouble(INDICATOR_LEVELVALUE, level); будет последним и пока не измените значение входного параметра level уровень не изменится.
Когда-то я встречал, что для таких случаев делали уровни горизонтальными линиями, но это в далёком прошлом.
Я вот чего не понимаю: Почему вместо того, чтобы взять готовый код, проверить, покрутить его и так и эдак, вы вступаете в обсуждение? Вы считаете что все тут чаще просто пишут не проверенные варианты советов?
Проследите последовательность выполнения кода.
- Выполняется #property
- Выполняется всё что написано в OnInit()
- и далее...
Отсюда вывод: Вызывая свойства индикатора и меняя значение уровня в закладке "Уровни" вы ничего не добьётесь, так-как выполнение IndicatorSetDouble(INDICATOR_LEVELVALUE, level); будет последним и пока не измените значение входного параметра level уровень не изменится.
Когда-то я встречал, что для таких случаев делали уровни горизонтальными линиями, но это в далёком прошлом.
Я вот чего не понимаю: Почему вместо того, чтобы взять готовый код, проверить, покрутить его и так и эдак, вы вступаете в обсуждение? Вы считаете что все тут чаще просто пишут не проверенные варианты советов?
Я вобщето ищю функцыю или как здесь это можно реализовать.
Вроде всё проста считать параметр уровня.
Но по ходу только сами разработчики это могут делать.
https://ibb.co/b69xYx
Ребята всем привет, нужна ваша помощь...может кто знает или может узнать что за шаблон это и как вообще его найти ?
https://ibb.co/b69xYx
Это не шаблон.
А индикатор.
Похож на индикатор уровней потдержки и сопротевления.
Я вобщето ищю функцыю или как здесь это можно реализовать.
Вроде всё проста считать параметр уровня.
Но по ходу только сами разработчики это могут делать.
Вам уже отвечали на вопрос.
Вот эта строчка, прописанная в OnInit() изменит самый первый уровень индикатора на значение, записанное в переменной new_value_0:
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,new_value_0);
Вот эта строчка, изменит второй уровень индикатора на значение переменной new_value_1:
IndicatorSetDouble(INDICATOR_LEVELVALUE,1,new_value_1);
... и т.д.
Вам уже отвечали на вопрос.
Вот эта строчка, прописанная в OnInit() изменит самый первый уровень индикатора на значение, записанное в переменной new_value_0:
Вот эта строчка, изменит второй уровень индикатора на значение переменной new_value_1:
... и т.д.
Похоже что ему не нужно решение вопроса, а нужно просто охаять и МТ и MQL потому, что нет возможности прочесть параметр заданный в #property
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ребята всем спасибо кто заинтересовался вопросом.