Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2606
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В MQL5 надо создать семь хендлов индикатора и семь массивов для CopyBuffer()
Пусть будет массив с одним значением ind_M1[1], ind_M15[1], но без массива никак.
Проблема в том, что они вызываются только на активном графике.
Вот простой пример:
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 0
//---- plot Label1
#property indicator_label1 "Label1"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- input parameters
input int SizeLabel = 9;
input color ModifyColorLabel = Khaki;
//--- indicator buffers
double Label1Buffer[];
int SWT_handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0, Label1Buffer, INDICATOR_DATA);
ResetLastError();
SWT_handle = iCustom(NULL, PERIOD_D1, "SWT", true, true);
Print("SWT_handle = ", SWT_handle, " error = ", GetLastError());
//---
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[])
{
//--- скопируем значения индикатора Custom Moving Average в наш индикаторный буфер
int copy = CopyBuffer(SWT_handle, 11, 0, rates_total, Label1Buffer);
Print("copy =", copy, " rates_total =", rates_total);
//--- если попытка неудачная - сообщим об этом
if(copy <= 0)
Print("Неудачная попытка получить значения индикатора Custom Moving Average");
//--- return value of prev_calculated for next call
ObjectCreate(0, "Mid", OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, "Mid", OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, "Mid", OBJPROP_XDISTANCE, 5);
ObjectSetInteger(0, "Mid", OBJPROP_YDISTANCE, 56);
ObjectSetInteger(0, "Mid", OBJPROP_FONTSIZE, 9);
ObjectSetString(0, "Mid", OBJPROP_FONT, "Franklin Gothic Medium");
ObjectSetString(0, "Mid", OBJPROP_TEXT, "Medium ");
ObjectSetInteger(0, "Mid", OBJPROP_COLOR, ModifyColorLabel);
ObjectCreate(0, "Mid _Vol", OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, "Mid _Vol", OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, "Mid _Vol", OBJPROP_XDISTANCE, 55);
ObjectSetInteger(0, "Mid _Vol", OBJPROP_YDISTANCE, 56);
ObjectSetInteger(0, "Mid _Vol", OBJPROP_FONTSIZE, 9);
ObjectSetString(0, "Mid _Vol", OBJPROP_FONT, "Franklin Gothic Medium");
ObjectSetString(0, "Mid _Vol", OBJPROP_TEXT, DoubleToString(Label1Buffer[rates_total-1], _Digits)); // _Digits вместо Digits
ObjectSetInteger(0, "Mid _Vol", OBJPROP_COLOR, ModifyColorLabel);
return(rates_total);
}
Работает только на D1, на остальных т/ф показывает нули...
А мне нужно, чтобы данные отображались на любом таймфрейме.
P.S. Это простой пример, чтобы не загромождать суть.
Указаны данные индикатора с таймфрейма D1
SWT_handle = iCustom(NULL, PERIOD_D1, "SWT", true, true);
Но как только я перехожу на таймфрейм Н4, эти данные перестают получаться.
В МТ4 такого не было. Вызов давал данные для D1 независимо от того, на каком т/ф был установлен индикатор.
Проблема в том, что они вызываются только на активном графике.
Вот простой пример:
Работает только на D1, на остальных т/ф показывает нули...
А мне нужно, чтобы данные отображались на любом таймфрейме.
Научитесь вставлять код.
Я вам сказал, что надо создать 7 хендлов, а у вас всего один
Семь хендлов согласен, а семь массивов нет необходимости.
Тогда придётся на каждом чихе перезаписывать массив. Конечно в некоторых случаях можно и мизинцем правой ноги почесать левое ухо, а надо ли это?
Тогда придётся на каждом чихе перезаписывать массив. Конечно в некоторых случаях можно и мизинцем правой ноги почесать левое ухо, а надо ли это?
В данном случае человеку нужны текущие показания
Научитесь вставлять код.
Я вам сказал, что надо создать 7 хендлов, а у вас всего один
Ну и?
У меня это реализовано, но что толку, если на каждом т/ф работает только один из них, для активного т/ф. А остальные нулевые.
Я конечно могу привести код со всей семеркой, но вопрос то не в этом.
Вопрос в том, как сделать так, и можно ли сделать так, чтобы данные для D1 получались вне зависимости от того, на D1 я нахожусь или на М15 или другом т/ф.
Сейчас же данные для D1 получаются только на D1. На остальных параметр просто не рассчитывается.
В данном случае человеку нужны текущие показания
Да, текущие. И для всех т/ф одновременно.
В МТ4 у меня был простенький списочек:И мне сказали, что в MQL5 это невозможно. Хочу уточнить ситуацию.
И я имел все 9 значений независимо от текущего т/ф графика. В МТ5 я имею данные только для текущего т/ф.
Ну и?
У меня это реализовано, но что толку, если на каждом т/ф работает только один из них, для активного т/ф. А остальные нулевые.
Я конечно могу привести код со всей семеркой, но вопрос то не в этом.
Вопрос в том, как сделать так, и можно ли сделать так, чтобы данные для D1 получались вне зависимости от того, на D1 я нахожусь или на М15 или другом т/ф.
Сейчас же данные для D1 получаются только на D1. На остальных параметр просто не рассчитывается.
Почему мы это не видим?
И мне сказали, что в MQL5 это невозможно.
Не там, и не с теми общаетесь... Говорить можно что угодно...
— Доктор, больше 3-х раз в неделю с женой не получается.
— Дед, а лет тебе сколько?
— 85.
— Дед, ну это же превосходно!
— Да? А мой сосед говорит, что с женой ежедневно, а ему 95!
— Ну так и вы говорите!
Я Вам показал.
Сделайте хендлы для кажого ТФ и запрашивайте текущее значение
Я Вам показал.
Сделайте хендлы для кажого ТФ и запрашивайте текущее значение
Ок, спасибо. Попробую разобраться. Я с MQL5 только начинаю. У меня на МТ4 давно реализован комплект из 5 индикаторов. И все устраивает, но МТ4 умирает и приходится думать о будущем. Три основных на МТ5 переделал. А два сервисных, для отображения сводной информации, осталось, в них идут вызовы данных из внешних индикаторов и с этим у меня пока что полный затык. Я уже не говорю, что куча проблем ожидается с роботом.
Кавалерийским наскоком не получится, буду разбираться...