Добрый день, господа программисты!
Подскажите самоучке пожалуйста с помощью какой функции или набора таковых сделать следующий трюк:
Есть индикатор, он показывает сводную инфу по множеству инструментов на графике например евродоллара. И показывает например что надо покупать Cad/Jpy.
Пока я найду эту валютную пару из 30 открытых графиков сто лет пройдет. Нельзя ли прикрутить типа кнопку чтоли на график, при нажатии на которую открывался бы как раз нужный в данный момент график.
Заранее спасибо.
Можно делать вывод сообщений на отдельный график с других графиков, например, "CADJPY - UP". Потом кликаешь на это сообщение, узнаешь какой в нем символ. Делаешь перебор всех графиков и находишь с нужным символом, потом активируешь этот найденный график с помощью ChartSetInteger(), параметр CHART_BRING_TO_TOP.
У меня для этого на самом первом графике, очищенном от баров, стоял советник. Он брал из глобальных переменных терминала информацию, которую ему туда скидывали советники с других графиков, выводил ее на экран разными цветами, ловил клики мышью на этих сообщениях, делал поиск нужного графика. И в других советниках была кнопка, которая возвращала опять на самый первый график.
Можно делать вывод сообщений на отдельный график с других графиков, например, "CADJPY - UP". Потом кликаешь на это сообщение, узнаешь какой в нем символ. Делаешь перебор всех графиков и находишь с нужным символом, потом активируешь этот найденный график с помощью ChartSetInteger(), параметр CHART_BRING_TO_TOP.
У меня для этого на самом первом графике, очищенном от баров, стоял советник. Он брал из глобальных переменных терминала информацию, которую ему туда скидывали советники с других графиков, выводил ее на экран разными цветами, ловил клики мышью на этих сообщениях, делал поиск нужного графика. И в других советниках была кнопка, которая возвращала опять на самый первый график.
Все понятно, кроме этого:"делать вывод сообщений на отдельный график с других графиков, например, "CADJPY - UP". Потом кликаешь на это сообщение, узнаешь какой в нем символ"
Какой функцией делать сообщения на другой график не подскажете, и как их можно кликать чтобы узнать какие в нем символы?
Создать объект OBJ_LABEL - т.е. обычная надпись.
Потом через функцию обработки событий получаете, что содержится в надписи и извлекаете нужное. У меня так реализовано извлечение символа и переход на нужный график:
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if(id == CHARTEVENT_OBJECT_CLICK) { string lableText = ObjectGetString(0, sparam, OBJPROP_TEXT); int nPos = StringFind(lableText, " "); // номер позиции, с которой начинается пробел string lableSymbol = StringSubstr(lableText, 0, nPos); // Извлекаем из метки, на которой щелкнули имя символа long chartPrev = ChartFirst(); // Получим ID 1-го графика while(true) { chartPrev = ChartNext(chartPrev); // Получаем ID след.графика if(chartPrev < 0) break; // Если список графиков закончился if(compareSymbol(chartPrev, lableSymbol)) // Если нашли график с нужным именем символа { ChartSetInteger(chartPrev, CHART_BRING_TO_TOP, true); // выведем его наверх, активируем ChartSymbol(chartPrev); } } } }
Создать объект OBJ_LABEL - т.е. обычная надпись.
Потом через функцию обработки событий получаете, что содержится в надписи и извлекаете нужное. У меня так реализовано извлечение символа и переход на нужный график:
Премного благодарен! К Вашей карме добавлено 100 пойнтов))) Это поистине ценная информация! Буду разбираться и самодельничать.
Хотел лишь уточнить про последнюю информативную строчку (без комментариев которая) - ChartSymbol(chartPrev);
Какой она несет смысл?
Премного благодарен! К Вашей карме добавлено 100 пойнтов))) Это поистине ценная информация! Буду разбираться и самодельничать.
Хотел лишь уточнить про последнюю информативную строчку (без комментариев которая) - ChartSymbol(chartPrev);
Какой она несет смысл?
Вы о справке в редакторе слышали? Ставите курсор на ChartSymbol(chartPrev) и нажимаете F1 - о сколько там открытий чудных...
Премного благодарен! К Вашей карме добавлено 100 пойнтов))) Это поистине ценная информация! Буду разбираться и самодельничать.
Хотел лишь уточнить про последнюю информативную строчку (без комментариев которая) - ChartSymbol(chartPrev);
Какой она несет смысл?
void OnStart() { long chartPrev = ChartFirst(); // Получим ID 1-го графика ChartSetInteger(chartPrev, CHART_BRING_TO_TOP, true); // выведем его наверх, активируем } void OnStart() { long chartPrev = ChartFirst(); // Получим ID 1-го графика ChartSymbol(chartPrev); }
Вот два простых скрипта.
В январе я подавал заявку в СервисДеск о том, что верхний скрипт работает в МТ5. В МТ4 он не работал. Случайно обнаружил, что нижний скрипт, хотя должен просто возвращать имя, тем не менее, он выводил благодаря ChartSymbol() график на первый план. Это работало в МТ4, билд 1090. Наверное, оставил у себя для универсальности, уже не помню.
Но вот только что проверил. В МТ4 нижний скрипт не всегда кидает на первый график. А в МТ5 верхний скрипт - работает. Поэтому там сейчас ChartSymbol() не нужно использовать.
Вы о справке в редакторе слышали? Ставите курсор на ChartSymbol(chartPrev) и нажимаете F1 - о сколько там открытий чудных
Да слышал, слышал. Тут я речь то не о том веду "а что это за функция", а о том, а зачем она в коде, ведь она вроде возвращает значение для самой себя, не присваивая никакой переменной ничего, для красоты получается. Ну или нет. Вот это и хотел у автора уточнить, и он кстати понял меня.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, господа программисты!
Подскажите самоучке пожалуйста с помощью какой функции или набора таковых сделать следующий трюк:
Есть индикатор, он показывает сводную инфу по множеству инструментов на графике например евродоллара. И показывает например что надо покупать Cad/Jpy.
Пока я найду эту валютную пару из 30 открытых графиков сто лет пройдет. Нельзя ли прикрутить типа кнопку чтоли на график, при нажатии на которую открывался бы как раз нужный в данный момент график.
Заранее спасибо.