А как сделать переход на чарт программно, если DLL-ки не разрешено использовать? Например, это советник либо индикатор для Маркета... Такой функции в MQL явно не хватает, чтобы по ChartID графика можно было программно перейти на него.
Mihail Matkovskij: А как сделать переход на чарт
программно, если DLL-ки не разрешено использовать? Например, это советник либо индикатор для Маркета... Такой функции в MQL явно не
хватает, чтобы по ChartID графика можно было программно перейти на него.
Внимательно читайте документацию. Есть такая функция.
CHART_BRING_TO_TOP
– показывает график поверх всех других.
Внимательно читайте документацию. Есть такая функция.
CHART_BRING_TO_TOP – показывает график поверх всех других.
Я сначала обрадовался, набросал тестовую программу. Но, увы, к сожалению, не работает.
#property indicator_chart_window#property indicator_plots0#include "Edit.mqh"
Edit edit;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mapping
edit.Create(0, "edit1", 0, 21, 21, 120, 21);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
//---//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
if(id == CHARTEVENT_OBJECT_ENDEDIT) {
if(sparam == edit.Name()) {
long chartID = (long)edit.getText();
if(!ChartSetInteger(chartID, CHART_BRING_TO_TOP, 0, true)){
Alert("CHART_BRING_TO_TOP не сработал!");
}
}
}
}
//+------------------------------------------------------------------+
ChartID получаю с помощью другого индикатора на подопытном чарте и ввожу его в edit на другом чарте, индикатор на котором, собственно и должен показывать подопытного (все исходники прикрепил ниже). С помощью исходника GetChartID.mq5 получаю ChartID графика, а с помощью GoToChart.mq5 пытаюсь перейти на него. Но ничего не получается и даже аллерт не вылетает, который должен появляться в случае ошибки.
Я сначала обрадовался, набросал тестовую программу. Но, увы, к сожалению, не работает.
ChartID получаю с помощью другого индикатора на подопытном чарте и ввожу его в edit на другом чарте, индикатор на котором, собственно и должен показывать подопытного (все исходники прикрепил ниже). С помощью исходника GetChartID.mq5 получаю ChartID графика, а с помощью GoToChart.mq5 пытаюсь перейти на него. Но ничего не получается и даже аллерт не вылетает, который должен появляться в случае ошибки.
Мне лениво сейчас искать свой код. Но такая возможность точно есть. Возможно я не совсем внимательно просмотрел свойства. Ищите, экспериментируйте и будет вам счастье.
ps; Всё точно. Я вспомнил в каком индикаторе это использовал. Вот кусок кода из него
Разница только в том, что индикаторы установлены на разных графиках и активируют каждый свой график. Но поскольку в функции есть ChartID() то проблем быть не должно, какой укажешь тот и будет активирован.
И это на mql4, а на mql5 вообще проблем быть не должно.
Мне лениво сейчас искать свой код. Но такая возможность точно есть. Возможно я не совсем внимательно просмотрел
свойства. Ищите, экспериментируйте и будет вам счастье.
ps; Всё точно. Я вспомнил в каком индикаторе это использовал. Вот кусок кода из него
Разница только в том, что индикаторы установлены на разных графиках и активируют каждый свой график. Но поскольку в функции есть ChartID()
то проблем быть не должно, какой укажешь тот и будет активирован.
Так я же и обращаюсь к графику через его Chart ID, Даже специальную программу написал для его получения: (GetChartID.mq5)
#property indicator_plots0#include "Edit.mqh"
Edit chatrID_Edit;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit() {
//--- indicator buffers mapping
chatrID_Edit.Create(0, "chatrID_Edit1", 0, 21, 21, 120, 21);
chatrID_Edit.setText((string)ChartID()); // Вот так я получаю ChartID() нужного графика на который я бросил этот индикатор,
// а затем копирую его в буфер обмена Ctr + C и вставляю его в edit индикатора GoToChart.mq5 //---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
//---//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
После вставки Ctr+V вGoToChart.mq5
и нажатия ввода у меня ничего не происходит. В чем же проблема?
Ура!
Вот этого мне и не хватало! Огромное спасибо и низкий поклон! Всё работает!потому что у меня так и не получилось открыть график ни одной из APIшных функций...
только скинете все таки реализацию.
потому что у меня так и не получилось открыть график ни одной из APIшных функций...
Так я выше код привёл:
на 64-ах тоже работаетТак я выше код привёл:
на 64-ах тоже работаетА как сделать переход на чарт программно, если DLL-ки не разрешено использовать? Например, это советник либо индикатор для Маркета... Такой функции в MQL явно не хватает, чтобы по ChartID графика можно было программно перейти на него.
Внимательно читайте документацию. Есть такая функция.
Внимательно читайте документацию. Есть такая функция.
Я сначала обрадовался, набросал тестовую программу. Но, увы, к сожалению, не работает.
ChartID получаю с помощью другого индикатора на подопытном чарте и ввожу его в edit на другом чарте, индикатор на котором, собственно и должен показывать подопытного (все исходники прикрепил ниже). С помощью исходника GetChartID.mq5 получаю ChartID графика, а с помощью GoToChart.mq5 пытаюсь перейти на него. Но ничего не получается и даже аллерт не вылетает, который должен появляться в случае ошибки.
Я сначала обрадовался, набросал тестовую программу. Но, увы, к сожалению, не работает.
ChartID получаю с помощью другого индикатора на подопытном чарте и ввожу его в edit на другом чарте, индикатор на котором, собственно и должен показывать подопытного (все исходники прикрепил ниже). С помощью исходника GetChartID.mq5 получаю ChartID графика, а с помощью GoToChart.mq5 пытаюсь перейти на него. Но ничего не получается и даже аллерт не вылетает, который должен появляться в случае ошибки.
Мне лениво сейчас искать свой код. Но такая возможность точно есть. Возможно я не совсем внимательно просмотрел свойства. Ищите, экспериментируйте и будет вам счастье.
ps; Всё точно. Я вспомнил в каком индикаторе это использовал. Вот кусок кода из него
Разница только в том, что индикаторы установлены на разных графиках и активируют каждый свой график. Но поскольку в функции есть ChartID() то проблем быть не должно, какой укажешь тот и будет активирован.
И это на mql4, а на mql5 вообще проблем быть не должно.Интересно, почему может не работать CHART_BRING_TO_TOP... Я, вроде, правильно функции прописал...
Я дополнил предыдущее сообщение.
Мне лениво сейчас искать свой код. Но такая возможность точно есть. Возможно я не совсем внимательно просмотрел свойства. Ищите, экспериментируйте и будет вам счастье.
ps; Всё точно. Я вспомнил в каком индикаторе это использовал. Вот кусок кода из него
Разница только в том, что индикаторы установлены на разных графиках и активируют каждый свой график. Но поскольку в функции есть ChartID() то проблем быть не должно, какой укажешь тот и будет активирован.
Так я же и обращаюсь к графику через его Chart ID, Даже специальную программу написал для его получения: (GetChartID.mq5)
После вставки Ctr+V вGoToChart.mq5 и нажатия ввода у меня ничего не происходит. В чем же проблема?