l33trade Опубликовано 25 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 декабря, 2016 Народ подскажите пожалуйста.У меня при нажатии определенной кнопки рисуются прямоугольники,мне надо чтоб верхняя и нижняя границы прямоугольника подсвечивались ценовой меткой.Что прописать в коде надо? Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 25 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 декабря, 2016 не совсем, гораздо ниже Bid Ну тем более! Нельзя ставить тейкпрофит buy-ордера ниже цены его открытия! Допустим, цена открытия buy-ордера 1.0450. Не даст Вам МТ поставить тейк ниже 1.0450. Ну это же абсурд получается: купили дороже - продали дешевле. Не может такой вариант быть тейкпрофитом. Это уже стоплосс. Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Есть пользовательский индикатор который рисует трендовую линию (луч). Периодически перерисовывает ее. Луч создается на основе двух точек, индексы массива 0 и 1 прыгают с бара на бар, поэтому стандартная функция iCustom не подходит.(Язык mql4)Вопрос такой: Как в током случае перенести луч в советник?Вроде разобрался, через ChartApplyTemplate, по другому никак.Вся бяка была в том что при тесте надо на график кидать индюк и применять визуализацию, жутко не удобно, особенно при оптимизации.Ни чего не выйдет, если будет загружен из советника шаблон, он загрузится со своими настройками.Что делааать? А если разобрать и понять логику работы индикатора, и просто в сове прописать алгоритм действий по этой логике, без использования внешнего индикатора ? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Народ подскажите пожалуйста.У меня при нажатии определенной кнопки рисуются прямоугольники,мне надо чтоб верхняя и нижняя границы прямоугольника подсвечивались ценовой меткой.Что прописать в коде надо? Нужно в подходящем Вам способе вывода информации прописать значение функции: ObjectGet( string object_name, // имя объекта int index // идентификатор свойства );где в качестве свойства объекта указываем вначале OBJPROP_PRICE1, а затем OBJPROP_PRICE2Как-то так ... Ссылка на сообщение Поделиться на другие сайты More sharing options...
l33trade Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Народ подскажите пожалуйста.У меня при нажатии определенной кнопки рисуются прямоугольники,мне надо чтоб верхняя и нижняя границы прямоугольника подсвечивались ценовой меткой.Что прописать в коде надо? Нужно в подходящем Вам способе вывода информации прописать значение функции: ObjectGet( string object_name, // имя объекта int index // идентификатор свойства );где в качестве свойства объекта указываем вначале OBJPROP_PRICE1, а затем OBJPROP_PRICE2Как-то так ...Ничего не понял) Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Народ подскажите пожалуйста.У меня при нажатии определенной кнопки рисуются прямоугольники,мне надо чтоб верхняя и нижняя границы прямоугольника подсвечивались ценовой меткой.Что прописать в коде надо? Нужно в подходящем Вам способе вывода информации прописать значение функции: ObjectGet( string object_name, // имя объекта int index // идентификатор свойства );где в качестве свойства объекта указываем вначале OBJPROP_PRICE1, а затем OBJPROP_PRICE2Как-то так ...Ничего не понял) Прямого, простого способа нет для решения Вашего вопроса. (или может конечно я его не знаю)Я вижу два пути решения - 1) У объекта прямоугольник есть Описание, которое можно вывести на объект, включив опцию терминала показывать описание объекта, соответсвенно в описание мы программно вписываем ценовые координатыпрямоугольника2) Размещаем где то текст с указанием ценовых координат, при чем еще надо будет думать как этот текстразместить рядом с нужны объектом (или просто его печатать например в углу графика, правда если прямоугольников несколько, то тут тоже надо думать как быть)Какой способ выбрать это Ваш выбор. И потом в этот способ мы вставляем значения функции ObjectGet, с именем вашего объекта и ценами верхней и нижней линии. Изменено 26 декабря, 2016 пользователем AndreyGold Ссылка на сообщение Поделиться на другие сайты More sharing options...
l33trade Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Вот код,там прописано описание объекта Цитата if (lparam == HotKey3 && !zonaUpdate || zonaUpdate == 3) { if (!zonaUpdateInfo) { zonaUpdateInfo = Info[InfoKey].NKZ; if (Info[InfoKey].NKZ } double NKZ = zonaUpdateInfo; if (NKZ == 0) { Comment("Недельная зона не задана!"); if (sound) PlaySound(sound_Error); return; } price2 = price1 - NKZ * _Point * HiLow; if (NKZ_mode == 1) { price3 = price2 - NKZ * _Point * 0.1 * HiLow; price4 = price2; } else if (NKZ_mode == 2) { price3 = price2 + NKZ * _Point * 0.1 * HiLow; price4 = price2; } else { price3 = price2 + NKZ * _Point * 0.05 * HiLow; price4 = price2 - NKZ * _Point * 0.05 * HiLow; } DrawZone("NKZ__", "Нкз - " + NKZ + "п.", time1, price1, time1 + NKZ_angle, price2, price3, price4, NKZ_length, NKZ_color, NKZ_timeframe, zonaUpdateInfo); return; } Где надо прописать? Изменено 26 декабря, 2016 пользователем l33trade Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Вот код,там прописано описание объекта if (lparam == HotKey3 && !zonaUpdate || zonaUpdate == 3) { if (!zonaUpdateInfo) { zonaUpdateInfo = Info[InfoKey].NKZ; if (Info[InfoKey].NKZ } double NKZ = zonaUpdateInfo; if (NKZ == 0) { Comment("Недельная зона не задана!"); if (sound) PlaySound(sound_Error); return; } price2 = price1 - NKZ * _Point * HiLow; if (NKZ_mode == 1) { price3 = price2 - NKZ * _Point * 0.1 * HiLow; price4 = price2; } else if (NKZ_mode == 2) { price3 = price2 + NKZ * _Point * 0.1 * HiLow; price4 = price2; } else { price3 = price2 + NKZ * _Point * 0.05 * HiLow; price4 = price2 - NKZ * _Point * 0.05 * HiLow; } DrawZone("NKZ__", "Нкз - " + NKZ + "п.", time1, price1, time1 + NKZ_angle, price2, price3, price4, NKZ_length, NKZ_color, NKZ_timeframe, zonaUpdateInfo); return; }Где надо прописать? Это не весь код - я так понимаю у Вас функция DrawZone() непосредственно чертит. Это не функция MQL4 это пользовательская функция. Если хотите, чтобы цены указывались над объектом, надо понять какая переменная из ("NKZ__", "Нкз - " + NKZ + "п.", time1, price1, time1 + NKZ_angle, price2, price3, price4, NKZ_length, NKZ_color, NKZ_timeframe, zonaUpdateInfo) является именно описанием объекта. А если просто на графике указать уровень цен, то тут есть цены price2, price3, price4 из них две, скорее всего являются границами прямоугольника, которые вас интересует. Какие - опять же надо смотреть функцию DrawZone. Если доступа нет к ней то просто поперебирайте параметры и вставьте функциюComment(price2); или Comment(price3); или Comment(price4); перед return в левом верхнем углу будутуровни цен прямоугольника. Есть еще один путь - это программно искать объект на графике и у него пытаться изменить срисовать параметр цены (функция ObjectGetDouble), но для этого надо знать имя объекта там поиск по имени идет. Изменено 26 декабря, 2016 пользователем AndreyGold Ссылка на сообщение Поделиться на другие сайты More sharing options...
jadd Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Нашел способ для отображения прямоугольника по конкретным точкам каждого дня.Отображение происходит по 2-м координатам (p1, t1) и (p2, t2). Всё работает хорошо, но когда пытаюсь вытащить значения цен р1 и р2 в советник, то значения цен соответствуют первому объекту на истории, а не последнему.Не могу понять в чем ошибка. Думал через команду ObjectSet фиксируются значения. Пробовал достать через ObjectGet, но итог тот же - соответствуют 1-му значению.Как можно зафиксировать эти значения на весь день, а на следующий день - обновить? Может можно как то по-другому решить проблему - мне просто интересно максимальная и минимальная цены, к примеру, в период с 00:00 до 10:00 и фиксация их на весь день.Вот часть кода где вычисляю значения координат и тут же отправляю в Comment. Однако на графике одно, а в комменте другое Цитата datetime t1, t2, t3; double p1, p2; int b1, b2; t1=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tb); //время начала рисования прямоугольника, к примеру 00:00 t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+te); //время конца рисования прямоугольника, к примеру 23:55 t3=StrToTime(TimeToStr(dt, TIME_DATE)+" "+tc); //время конца расчета цены для 2-ой координаты, к примеру 10:00 (т.е. прямоугольник перестает обновляться за ценой) b1=iBarShift(NULL, 0, t1); b2=iBarShift(NULL, 0, t3); p1=High[iHighest(NULL, 0, MODE_HIGH, b1-b2+1, b2)]; p2=Low[iLowest (NULL, 0, MODE_LOW , b1-b2+1, b2)]; ObjectSet(no, OBJPROP_TIME1 , t1); ObjectSet(no, OBJPROP_PRICE1, p1); ObjectSet(no, OBJPROP_TIME2 , t2); ObjectSet(no, OBJPROP_PRICE2, p2); Comment(" p1 = " + p1 + " p2 = " + p2); 25-12-2016_17-27-54.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
mihascor Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Спасибо. Наверно так и буду делвть. Изменено 27 декабря, 2016 пользователем mihascor Ссылка на сообщение Поделиться на другие сайты More sharing options...
l33trade Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Вот что я хочу сделать. Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Вот что я хочу сделать. Для этого нужно название объекта знать - имя гляньте на графике прямоугольника судя по тексту онвот так должен называться "NKZ__". Так нет ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
l33trade Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Да абсолютно верно! Добавлено: 26-12-2016 17:57:56Народ помогите кто-нибудь. Изменено 26 декабря, 2016 пользователем l33trade Ссылка на сообщение Поделиться на другие сайты More sharing options...
EDI Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Привет! Подскажите, как можно рассчитать максимальную цену за n-баров и обозначить ее на графике, ну хотя бы горизонтальной линией. Спойлер Ссылка на сообщение Поделиться на другие сайты More sharing options...
scherbakovss Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Суть есть некий индикатор,который в окно данных при наличии сигнала на селл/бай генерит сигнал.Как эту цену с буфера окна данных считать? EURGBPM15.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Вот код,там прописано описание объекта Спойлер if (lparam == HotKey3 && !zonaUpdate || zonaUpdate == 3) { if (!zonaUpdateInfo) { zonaUpdateInfo = Info[InfoKey].NKZ; if (Info[InfoKey].NKZ } double NKZ = zonaUpdateInfo; if (NKZ == 0) { Comment("Недельная зона не задана!"); if (sound) PlaySound(sound_Error); return; } price2 = price1 - NKZ * _Point * HiLow; if (NKZ_mode == 1) { price3 = price2 - NKZ * _Point * 0.1 * HiLow; price4 = price2; } else if (NKZ_mode == 2) { price3 = price2 + NKZ * _Point * 0.1 * HiLow; price4 = price2; } else { price3 = price2 + NKZ * _Point * 0.05 * HiLow; price4 = price2 - NKZ * _Point * 0.05 * HiLow; } DrawZone("NKZ__", "Нкз - " + NKZ + "п.", time1, price1, time1 + NKZ_angle, price2, price3, price4, NKZ_length, NKZ_color, NKZ_timeframe, zonaUpdateInfo); //--- создадим ценовые метки ObjectCreate(0,"ARROW_1",OBJ_ARROW_LEFT_PRICE,0,time1,price1); ObjectCreate(0,"ARROW_2",OBJ_ARROW_LEFT_PRICE,0,time1,price2); return; } Где надо прописать? Можно сделать так (под spoiler) Изменено 26 декабря, 2016 пользователем SilverKZ 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 1.У Вас прямоугольники рисуются каждый день? Имена прямоугольников новые каждый день? Или имя одинаковое каждый раз?2.Чтобы фиксировать значения на весь день, сделайте, чтобы значения обновлялись только в определенное время ежедневно. Честно сказать поверхностно прочитал, в вопрос не вникал досконально. Просто мысли вслух... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Можно так //--- находим максимальную цену за n-баров int n = 1000; double max_price = High[iHighest(NULL,0,MODE_HIGH,n,0)]; //--- создадим горизонтальную линию ObjectCreate(0,"HLINE_MAX",OBJ_HLINE,0,0,max_price); 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
l33trade Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Работает,но небольшой косяк Спойлер Добавлено: 26-12-2016 19:55:46Вот есть еще кусок кода,отвечающий за рисование этой зоны Цитата // Рисуем зону if (price1 > price2) name += "_H"; else name += "_L"; name += "_" + info; if (price3 bool cr = ObjectCreate(name, OBJ_RECTANGLE, 0, 0, 0, 0, 0); ObjectSet(name, OBJPROP_TIME1, time2); ObjectSet(name, OBJPROP_PRICE1, price3); if (!ObjectGet(name, OBJPROP_TIME2)) ObjectSet(name, OBJPROP_TIME2, correctWeekend(time2, time2 + length)); // Если time2 не задан у объекта, тогда задаем, т.к. это новый объект (иначе у зоны отредктирована длина) ObjectSet(name, OBJPROP_PRICE2, price4); ObjectSetText(name, descr); // Описание if (cr) ObjectSet(name, OBJPROP_COLOR, clr); // Цвет ObjectSet(name, OBJPROP_TIMEFRAMES, timeframe); // Таймфрейм для отображения ObjectSet(name, OBJPROP_SELECTED, false); // Снять выделение с объекта ObjectSet(name, OBJPROP_BACK, true); // Рисовать объект в фоне Изменено 26 декабря, 2016 пользователем l33trade Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Работает,но небольшой косяк Попробуйте использовать price3 и price4. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
l33trade Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Пробовал.Та метка что косо вставала,встала куда надо,но другая метка вообще исчезла. Добавлено: 26-12-2016 20:13:58Все дошарил. Спасибо тебе огромное помог)Добавлено: 26-12-2016 20:21:41 Работает,но небольшой косяк Попробуйте использовать price3 и price4. Слушай сейчас начал наносить зоны для тех анализа и заметил такую штуку.Ценовые метки рисуются только один раз,то есть только для одной зоны.Если нанести вторую,меток нету. Изменено 26 декабря, 2016 пользователем l33trade Ссылка на сообщение Поделиться на другие сайты More sharing options...
scherbakovss Опубликовано 26 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2016 Подскажите как получить значение в советнике с окна данных.а именно sell buffer Buy buffer? EURGBPM15.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 27 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 декабря, 2016 Почитайте описание функции iCustom(). https://docs.mql4.com/ru/indicators/icustom Ссылка на сообщение Поделиться на другие сайты More sharing options...
scherbakovss Опубликовано 27 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 декабря, 2016 //Не считывает данные IndicatorShortName("CandleType"); datetime some_time=D'2016.12.23 128:30';//Дата сигнала int shift=iBarShift(Symbol(), Period(),some_time);//высчитываем смещение в барах Alert(shift); double val =iCustom(Symbol(), Period(), "PivotPointReversal_x2_1_49","Show_P4_patern", 1,shift ); Alert(val ); double val1 =iCustom(Symbol(), Period(), "Sell Buffer","Show_P4_patern", 1, shift); Alert(val1 ); EURGBPM15.png120.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
jadd Опубликовано 27 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 декабря, 2016 Заработало!!! Спасибо!!!На решение меня навело имя объекта, которое присваивается каждый день новое.Такими строчками теперь получаю желаемые цены: Цитата double MaxP=ObjectGetDouble(0,"AS"+i,OBJPROP_PRICE1,0); // где AS - название моего прямоугольникаdouble MinP=ObjectGetDouble(0,"AS"+i,OBJPROP_PRICE2,0); Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти