Изучите этот короткий код и он вам может поможет. Реализовано все на Canvas.
Плюс в канвас еще тот, что для МТ4 и МТ5 код будет практически одинаковым.
Здравствуйте уважаемые програмисты!
Проконсультируйте пожалуйста:
...
Благодарю ))
Рисуйте на канвасе:
![Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas](https://c.mql5.com/36/34/dokumentaciya-po-mql5-standartnaya.png)
- www.mql5.com
Вы правильно думаете.
//подсчитывает количество пунктов цены в одном пикселе double GetPointsInPixel(long eChartId, int eWindow) { double eMin=EMPTY_VALUE; ChartGetDouble(eChartId,CHART_PRICE_MIN,eWindow,eMin); if(eMin==EMPTY_VALUE) return(0); double eMax=EMPTY_VALUE; ChartGetDouble(eChartId,CHART_PRICE_MAX,eWindow,eMax); if(eMax==EMPTY_VALUE) return(0); long ePixels=-1; ChartGetInteger(eChartId,CHART_HEIGHT_IN_PIXELS,eWindow,ePixels); if(ePixels<=0) return(0); return(double(eMax-eMin)/ePixels); }
double eIndent=GetPointsInPixel(eChartId,eWindow);
Дальше эту величину прибавлять/отнимать к необходимой цене, при изменении событий:
-смены таймфрейма,
-увеличения/уменьшения графика,
-сжимания шкалы цены.
Изучите этот короткий код и он вам может поможет. Реализовано все на Canvas.
Плюс в канвас еще тот, что для МТ4 и МТ5 код будет практически одинаковым.
Ок, Благодарю )
Упс... Николай опередил...
... ))))))Главное, что мысли совпали ))))
Благодарю )))))
Вы правильно думаете.
double eIndent=GetPointsInPixel(eChartId,eWindow);
Дальше эту величину прибавлять/отнимать к необходимой цене, при изменении событий:
-смены таймфрейма,
-увеличения/уменьшения графика,
-сжимания шкалы цены.
Благодарю ))))))))
Vitaliy Kostrubko:
Вы правильно думаете.
double eIndent=GetPointsInPixel(eChartId,eWindow);
Дальше эту величину прибавлять/отнимать к необходимой цене, при изменении событий:
-смены таймфрейма,
-увеличения/уменьшения графика,
-сжимания шкалы цены.
Благодарю ))))))))
И передайте тому горе-консультанту, что ему надо начать изучать язык, а не примеры ****кодеров.
И передайте тому горе-консультанту, что ему надо начать изучать язык, а не примеры ****кодеров.
Принял )))))
... Время показывает, что даже за 10 лет опыта програмирования самых разных советникоа (разные уровни сложности) == один фиг НЕДОСТАТОЧНО, чтобы знать ВСЮ сферу кодинга )
так как за эти 10 лет - можно стать супер-профи в 2/3 всего языка програмирования ... и 1/3 вообще незнать ))
поэтому обижаться - эт лишнее )) , а вот ДОИЗУЧИТЬ эту 1/3 == дело индивидуальное )).
.... просто он больше заинтересован в "ХИТРЫХ АЛГОРИТМАХ, приносящих ПРОФИТ ... а "мультики" писать - не его интерес ...
Но ваш пример ПОКАЖУ ему обязательно ))
Благодарю )))
Принял )))))
... Время показывает, что даже за 10 лет опыта програмирования самых разных советникоа (разные уровни сложности) == один фиг НЕДОСТАТОЧНО, чтобы знать ВСЮ сферу кодинга )
так как за эти 10 лет - можно стать супер-профи в 2/3 всего языка програмирования ... и 1/3 вообще незнать ))
поэтому обижаться - эт лишнее )) , а вот ДОИЗУЧИТЬ эту 1/3 == дело индивидуальное )).
.... просто он больше заинтересован в "ХИТРЫХ АЛГОРИТМАХ, приносящих ПРОФИТ ... а "мультики" писать - не его интерес ...
Но ваш пример ПОКАЖУ ему обязательно ))
Благодарю )))
Не надо ссылаться на меня. Этот вариант, хоть я и использовал, озвучил его не я. Я только поддержал тёзку в его мнении.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте уважаемые програмисты!
Проконсультируйте пожалуйста:
Делаем советник в виде индикатора! его задача - искать на графике ПАТТЕРН, и над барами писать текст (многострочный (!), напр.:
строка #1 "название сигнала"
строка #2 "% вероятности"
строка #3 "значёк" (стрелока)
Проблема в том, что ЕСЛИ задавать ФИКСИРОВАННОЕ расстояние между строками = напр. 25 пипс, то на м5 всё красиво ... а на Н1 = строки налазят друг-ну-друга (в этом и проблема фиксированного текста (!!!)
Подскажите пожалуйста - КАК можно сделать "автоматическое вычисление" дистанции между строчек при изменении ТФ или "высоты" графика при смещении графика чучуть-влево , или по высоте (????!!!)
..... на ум приходит только одно:
1) "получить" текущую высоту графика (мин. и макс.цены) :
2) Макс цена - Мин.цена = "высота графика в pips" и её принимаем всегда за 100%
3) вместо "фиксированной дистанции между строками (25 pips) - задаём дистанцию В ПРОЦЕНТАХ (напр. 2% от высоты графика из п.2))
..... пообщался с одним програмистом - он говорит == НЕЛЬЗЯ ДВИГАТЬ ОБЪЕКТЫ ... НУ ВОТ НЕЛЬЗЯ ....... чтобы после перелистывания графика = по новой расположить многострочный текст ТАК, чтобы он не налазил друг-ну-друга == это нужно после перелистывания графика == УДАЛЯТЬ ВСЕ НАДПИСИ, И ПЕРЕРИСОВЫВАТЬ ИХ ПО-НОВОЙ С УЧЁТОМ НОВОЙ ВЫСОТЫ ГРАФИКА (п.2) (!)
..... тогда продолжаю кумекать == ОК, А ЧТО ЕСЛИ = делать отрисовку ТОЛЬКО В ЭКРАННОЙ ЧАСТИ ГРАФИКА ???!
Он говорит = ок, НОВЫЕ сигналы напишет КОРРЕКТНО, а те что остались == ИЛИ снова налезут друг-на-друга , ИЛИ наоборот = растянутся ещё шире (вверх и вниз друг-от-друга) ТАК КАК "НЕЛЬЗЯ ДВИГАТЬ УЖЕ НАРИСОВАННЫЕ ОБЪЕКТЫ", а нужно только их удалять , и перерисовать заново (!)
Вопрос к Вам = кто-нибудь уже сталкивался с подобным ??????? как решили эту задачу ??? )))
(чтобы при любом масштабе и высоте графика = многострочный текст возвращался к нормальному расстоянию между строк (если мерять линейкой визуально == 3 мм на глазок ) ... т.е. меж-строчный интервал сделать ДИНАМИЧЕСКИМ) ????? )))))))))
Просто НЕ ХОЧЕТСЯ делать всю надпись В ОДНУ СТРОКУ , и под углом 45* (!) , так как ВИЗУАЛЬНО УДОБНЕЕ когда текст ГОРИЗОНТАЛЬНЫЙ, и в 2-3 строки :)
Подскажите пожалуйста (поделитесь опытом)
Благодарю ))