56 минут назад, 0ll сказал:но можно с помощью графических фигур - отрезков
Спасибо. Такой вариант не устраивает.
Вопрос закрыт
От loreno, 17 августа, 2011 в Уголок Программиста
56 минут назад, 0ll сказал:но можно с помощью графических фигур - отрезков
Спасибо. Такой вариант не устраивает.
Вопрос закрыт
В 21.01.2020 в 16:43, Blakjek сказал:Большое спасибо. Просто моя стратегия основана именно на пробое уровня, но нет возможности отслеживать каждую свечу. А вы можете сделать индикатор в котором можно выставить уровень вручную и алерт при пробое этого уровня по цене закрытия свечи?
Я многое могу, был бы стимул многое делать )
Попробуй такой вариант. Индикатор посылает всевозможные уведомления, когда цена либо пересечет заданную линию, либо свеча закроется выше/ниже линии (опционно).
Может кому еще будет полезен, либо кто то придумает, как его доработать до идеала.
Здравствуйте, помогите мне дописать этот Индикатор не как не могу решить проблему. Идея такая когда появляется сигнал (if(barUp >= EMAYelow)) на определенном баре то на этом бар должен нарисоваться прямоугольник за (н) количества баров. Что только не пробивал, не пойму, где Ошибка.
Стрелки работают, а прямоугольники нет. Спасибо.
7 часов назад, awals сказал:Что только не пробивал, не пойму, где Ошибка.
Стрелки работают, а прямоугольники нет. Спасибо.
У меня не работает индикатор PZ, выдает ошибку.
Если создавать прямоугольники, то каждому нужно давать оригинальное имя, в нашем случае можно к имено прибавлять текущее i
Вообще код сразу выдают ошибку размера массива. Если массив создается динамический, то его размер нужно менять через ArrayResize, либо же создавать обычный hi[10000], если известно, сколько именно нужно туда вставлять переменных.
Теперь какая то вакханалия на графике рисуется.
Подскажите как реализовать
Lots=NormalizeDouble(AccountBalance()/CheckLots,2);
округление в меньшую сторону, т.е. если AccountBalance()/CheckLots = 0,019
округляло до 0,01
Нашел решение
Lots=NormalizeDouble(AccountBalance()/CheckLots-0.005,2);
Изменено 26 января, 2020 пользователем MakarFX
6 часов назад, MakarFX сказал:Нашел решение
Поздравляю! Это решение у программистов называется "костыль". Если идти через MathFloor, то получится долго и запутанно, костыль - сразу и просто! ( я не шучу )
Здравствуйте помогите найти мне в чём причина, никак не могу удалить Прямоугольник созданным Индикаторам, если я сам нанесу Прямоугольник на График он удаляется, а вот созданный индикатором (Indi.ex4) нет.
Для того чтобы удалить надо навести мышку на Прямоугольник и нажать Клавиша (Shift).
10 часов назад, 0ll сказал:Поздравляю!
Спасибо. Я не программист, поэтому только "костылями" пользуюсь)
Пожалуйста помогите, вроде простой вопрос
ObjectSetText("Lev",StringConcatenate("Lev: ",DoubleToStr(MarketInfo(Symbol(),MODE_STOPLEVEL),0)),SizeInfo,"Times New Roman",InfoColor);
Как задать толщину шрифта FW_BOLD, точнее как связать с
TextSetFont( "Time New Roman",9,FW_BOLD,0);
Очень прошу показать в коде, а то боюсь на словах не пойму.
P.S. Справочник MQL4 не помог.(
Добрый день! Нужен индикатор , алгоритм очень простой - кто то возьмется?
23 часа назад, MakarFX сказал:округление в меньшую сторону, т.е. если AccountBalance()/CheckLots = 0,019
Lots=NormalizeDouble(AccountBalance()/CheckLots,2);
if (MarketInfo(Symbol(), MODE_LOTSTEP) != 0) Lots = MathFloor(Lots/MarketInfo(Symbol(), MODE_LOTSTEP))* MarketInfo(Symbol(), MODE_LOTSTEP); //округление полученного лота вниз
Lots = MathMin(MathMax(Lots, MarketInfo(Symbol(), MODE_MINLOT)), MarketInfo(Symbol(), MODE_MAXLOT)); //сравнение полученнго лота с минимальным/максимальным.
Изменено 27 января, 2020 пользователем MakarFX
14 минут назад, MakarFX сказал:Спасибо. Я уже решил этот вопрос
там еще в конце важное сравнение идет с минимальный и максимальным лотом текущего счета, бывает, что округляет до 0, поэтому проверка будет не лишней.
6 часов назад, MakarFX сказал:Как задать толщину шрифта FW_BOLD, точнее как связать с
походу никак, тут тоже не нашли ответа: https://www.mql5.com/ru/forum/212818
Можно изучить Canvas, через него можно мутить супер сложные фигуры и с текстом тоже посложнее есть работа, но я запарился его изучать, забил )
6 минут назад, Rever27 сказал:походу никак, тут тоже не нашли ответа
Для себя вопрос решил https://www.mql5.com/ru/forum/160683/page1051#comment_14736160
11 минут назад, Rever27 сказал:там еще в конце важное сравнение идет
Смотри скрин выше.
Первое число без округления, а второе с округлением.
23 часа назад, awals сказал:Здравствуйте помогите найти мне в чём причина, никак не могу удалить Прямоугольник созданным Индикаторам, если я сам нанесу Прямоугольник на График он удаляется, а вот созданный индикатором (Indi.ex4) нет.
Для того чтобы удалить надо навести мышку на Прямоугольник и нажать Клавиша (Shift).
Indi.ex4 17 \u043a\u0411 · 1 загрузка ShiftDel.mq4 16 \u043a\u0411 · 1 загрузка
Привет всем , разобрался условия был не дописал в проверке на Прямоугольник.
Подскажите пожалуйста, где можно Деокмпилировать (.ex4), может кто-нибудь знает где или у кого есть Деокмпилятор?
Всем доброго времени суток.
Скажите, как прикрутить свой звук к "Alert()"?
Меня интересует в коде как прописать, т.к.в индикаторе прописан Алерт по нескольким событиям, то хочу разделить для каждого события свой звук.
Изменено 29 января, 2020 пользователем MakarFX
Подскажите пожалуйста, как написать проверку на то что объект существует, у меня выдаёт ошибку код 4200 что объект уже существует.
6 часов назад, awals сказал:Подскажите пожалуйста, как написать проверку на то что объект существует, у меня выдаёт ошибку код 4200 что объект уже существует.
Полагаю проблема не в том, что объект уже существует, а в том, что Имя которое вы задаете объекту, уже существует. Поэтому если посмотрим на линии которые создаются программой они будут нумероваться :
Vertical Line 46413
Vertical Line 46570
Horizontal Line 46449
Horizontal Line 46602
Trendline 46467
Trendline 46551
Fibo 46478
Fibo 46590
Тоже правило и для человека. Когда создаем объекты, мы их должны нумеровать 1,2,3,4 и т.д. Все это для того, чтобы можно было к ним обращаться.
Проверка на существование.
Берем все объекты ObjectsTotal()
21 минуту назад, MikR0ReR сказал:Полагаю проблема не в том, что объект уже существует, а в том, что Имя которое вы задаете объекту, уже существует. Поэтому если посмотрим на линии которые создаются программой они будут нумероваться :
Vertical Line 46413
Vertical Line 46570
Horizontal Line 46449
Horizontal Line 46602
Trendline 46467
Trendline 46551
Fibo 46478
Fibo 46590
Тоже правило и для человека. Когда создаем объекты, мы их должны нумеровать 1,2,3,4 и т.д. Все это для того, чтобы можно было к ним обращаться.
Проверка на существование.
Берем все объекты ObjectsTotal()
- И проверяем на совпадение. Имя, которое хотим дать в
Спасибо
Доработка индикатора Круглых уровней (Key Levels) - их нумерация
Порядковая нумерация круглых уровней
Нумеруются только уровни в 1000 пунктов (новых)
В настройках индикатора, входные параметры:
Show_00_ Levels (true/false)
Show_50_ Levels (true/false)
Show_20_30_40_60_70_80_90_Levels (true/false)
Level_00_Color (Цветовая палитра (1000пп) уровней)
Level_50_Color (Цветовая палитра (1000пп) уровней)
Level_20_30_40_60_70_80_90_Color (Цветовая палитра (1000пп) уровней)
Level_№_distance_x (расстояние от правой границы)
Возможность устанавливать сколько (1000пп) уровней показывать (по умолчанию 30 (30 х 1000пп))
Отсчет круглых уровней ведется от уровня где находится текущая цена
Круглый уровень, в котором находится текущая цена - не берется в расчет, по-умолчанию будет "ноль"
Нумерация порядковых уровней начинается от 1001 (1)и далее.
Масштаб порядкового номера =90% от уровня (900пп), размещен по центру уровня.
Если что-то упустил, дайте знать, при желании взяться за доработку.
Заранее благодарю
Изменено 30 января, 2020 пользователем Дервиш
7 часов назад, MikR0ReR сказал:Полагаю проблема не в том, что объект уже существует, а в том, что Имя которое вы задаете объекту, уже существует. Поэтому если посмотрим на линии которые создаются программой они будут нумероваться :
Vertical Line 46413
Vertical Line 46570
Horizontal Line 46449
Horizontal Line 46602
Trendline 46467
Trendline 46551
Fibo 46478
Fibo 46590
Тоже правило и для человека. Когда создаем объекты, мы их должны нумеровать 1,2,3,4 и т.д. Все это для того, чтобы можно было к ним обращаться.
Проверка на существование.
Берем все объекты ObjectsTotal()
- И проверяем на совпадение. Имя, которое хотим дать в имеющихся ObjectName()
А как должен выглядеть это в Коде? A то что-то пробую никак не могу понять.
if(open > close && barUp >= EMAYelow && open[i-1] > close[i-1])
{
ObjectCreate(0, "Rect" + (string)i, OBJ_RECTANGLE, 0, mytime + 60 * 60, hi, mytime - 60 * 60, low);
ObjectSetInteger(0, "Rect" + (string)i, OBJPROP_COLOR, clrRed);
ObjectSetInteger(0, "Rect" + (string)i, OBJPROP_BACK, true);
}
else(open < close && barUp >= EMAYelow && open[i-1] < close[i-1])
{
ObjectCreate(0, "Rect" + (string)i, OBJ_RECTANGLE, 0, mytime + 60 * 60, hi, mytime - 60 * 60, low);
ObjectSetInteger(0, "Rect" + (string)i, OBJPROP_COLOR, clrGreen);
ObjectSetInteger(0, "Rect" + (string)i, OBJPROP_BACK, true);
}
@awals Идите на страницы и пройдите курс, слишком много вопросов которые там объясняются.
«Программирование на MQL4» — Курс молодого бойца
Обучение языку MQL4 под MetaTrader 4
Я смотрю у вас есть "i" в "Rect" + (string)i. Если при создании объекта выдает ошибку, что такой объект существует, значит такое имя уже есть. Это также значит что "i" не оригинальное. Я предлагаю как вариант сделать счетчик. Так как ни этот случай где нужно проводит проверку по именам.
int count_obj; это пишем где входные настройки определяем.
{
ObjectCreate(0, "Rect" + count_obj, OBJ_RECTANGLE, 0, mytime + 60 * 60, hi, mytime - 60 * 60, low);
ObjectSetInteger(0, "Rect" + count_obj, OBJPROP_COLOR, clrRed);
ObjectSetInteger(0, "Rect" + count_obj, OBJPROP_BACK, true);
count_obj+=1;
}
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем