Соответстивие каждому названию своего значения можно получить даже их html-страницы справки - https://docs.mql4.com/ru/constants/colors
Сам я при необходимости задаю цвета через внешние переменные типа color, например, вот так был изменен индикатор Market Profile - 'MarketProfile'
Кроме того, цвета можно привязать к символу и тайм-фрейму. Но всех вариантов, конечно, не предусмотреть.
Не так уж и сложно, два массива, в одном строковом имя, во втором color - цвет. На ините покрутить немного его, чтобы переменные заполнить. На 30 минут делов.
Теоретически, можно написать такую пользовательскую функцию, которая будет преобразовывать текстовок название цвета в тип color, но не думаю, что она будет востребована - https://docs.mql4.com/ru/basis/types/color
color fStrToColor(string aName){ color tColor[]={ Black, DarkGreen, DarkSlateGray, Olive, Green, Teal, Navy, Purple, Maroon, Indigo, MidnightBlue, DarkBlue, DarkOliveGreen, SaddleBrown, ForestGreen, OliveDrab, SeaGreen, DarkGoldenrod, DarkSlateBlue, Sienna, MediumBlue, Brown, DarkTurquoise, DimGray, LightSeaGreen, DarkViolet, FireBrick, MediumVioletRed, MediumSeaGreen, Chocolate, Crimson, SteelBlue, Goldenrod, MediumSpringGreen, LawnGreen, CadetBlue, DarkOrchid, YellowGreen, LimeGreen, OrangeRed, DarkOrange, Orange, Gold, Yellow, Chartreuse, Lime, SpringGreen, Aqua, DeepSkyBlue, Blue, Magenta, Red, Gray, SlateGray, Peru, BlueViolet, LightSlateGray, DeepPink, MediumTurquoise, DodgerBlue, Turquoise, RoyalBlue, SlateBlue, DarkKhaki, IndianRed, MediumOrchid, GreenYellow, MediumAquamarine, DarkSeaGreen, Tomato, RosyBrown, Orchid, MediumPurple, PaleVioletRed, Coral, CornflowerBlue, DarkGray, SandyBrown, MediumSlateBlue, Tan, DarkSalmon, BurlyWood, HotPink, Salmon, Violet, LightCoral, SkyBlue, LightSalmon, Plum, Khaki, LightGreen, Aquamarine, Silver, LightSkyBlue, LightSteelBlue, LightBlue, PaleGreen, Thistle, PowderBlue, PaleGoldenrod, PaleTurquoise, LightGray, Wheat, NavajoWhite, Moccasin, LightPink, Gainsboro, PeachPuff, Pink, Bisque, LightGoldenrod, BlanchedAlmond, LemonChiffon, Beige, AntiqueWhite, PapayaWhip, Cornsilk, LightYellow, LightCyan, Linen, Lavender, MistyRose, OldLace, WhiteSmoke, Seashell, Ivory, Honeydew, AliceBlue, LavenderBlush, MintCream, Snow, White }; string tName[]={ "Black", "DarkGreen", "DarkSlateGray", "Olive", "Green", "Teal", "Navy", "Purple", "Maroon", "Indigo", "MidnightBlue", "DarkBlue", "DarkOliveGreen", "SaddleBrown", "ForestGreen", "OliveDrab", "SeaGreen", "DarkGoldenrod", "DarkSlateBlue", "Sienna", "MediumBlue", "Brown", "DarkTurquoise", "DimGray", "LightSeaGreen", "DarkViolet", "FireBrick", "MediumVioletRed", "MediumSeaGreen", "Chocolate", "Crimson", "SteelBlue", "Goldenrod", "MediumSpringGreen", "LawnGreen", "CadetBlue", "DarkOrchid", "YellowGreen", "LimeGreen", "OrangeRed", "DarkOrange", "Orange", "Gold", "Yellow", "Chartreuse", "Lime", "SpringGreen", "Aqua", "DeepSkyBlue", "Blue", "Magenta", "Red", "Gray", "SlateGray", "Peru", "BlueViolet", "LightSlateGray", "DeepPink", "MediumTurquoise", "DodgerBlue", "Turquoise", "RoyalBlue", "SlateBlue", "DarkKhaki", "IndianRed", "MediumOrchid", "GreenYellow", "MediumAquamarine", "DarkSeaGreen", "Tomato", "RosyBrown", "Orchid", "MediumPurple", "PaleVioletRed", "Coral", "CornflowerBlue", "DarkGray", "SandyBrown", "MediumSlateBlue", "Tan", "DarkSalmon", "BurlyWood", "HotPink", "Salmon", "Violet", "LightCoral", "SkyBlue", "LightSalmon", "Plum", "Khaki", "LightGreen", "Aquamarine", "Silver", "LightSkyBlue", "LightSteelBlue", "LightBlue", "PaleGreen", "Thistle", "PowderBlue", "PaleGoldenrod", "PaleTurquoise", "LightGray", "Wheat", "NavajoWhite", "Moccasin", "LightPink", "Gainsboro", "PeachPuff", "Pink", "Bisque", "LightGoldenrod", "BlanchedAlmond", "LemonChiffon", "Beige", "AntiqueWhite", "PapayaWhip", "Cornsilk", "LightYellow", "LightCyan", "Linen", "Lavender", "MistyRose", "OldLace", "WhiteSmoke", "Seashell", "Ivory", "Honeydew", "AliceBlue", "LavenderBlush", "MintCream", "Snow", "White" }; aName=StringTrimLeft(StringTrimRight(aName)); for(int i=0;i<ArraySize(tName);i++){ if(aName==tName[i])return(tColor[i]); } return(Red); }
// Непонятки с цветом LightGoldenRod, редактор не подсвечивает его,
// или в справке неправильно назван, заменен на красный - Bisque, Red, BlanchedAlmond
Действительно, если задается в переменной цвет LightGoldenRod, то компилятор
выдает ошибку. Хорошо бы, чтобы разработчики обратили внимание
на это.
Надо проверить, как этот цвет будет работать при задании его программно.
Непонятки с цветом LightGoldenRod, редактор не подсвечивает его, или в справке неправильно назван
В справке он, скорее всего, назван правильно. При задании этого
цвета компилятор выдает ошибку. А если просто написать это слово
и после наведения на него курсора и нажатии F1 появляется справка
с таблицей цветов. Это ошибка... компилятора...
Точно. Ошибка в слове.
Слава, а почему нельзя сделать, чтобы эти слова в некоторых случаях распознавались как цвет. Ведь сейчас они распознаются как цвет при задании цвета этими словами. А если задать в строковой переменной наименование цвета. И потом значению переменной типа color присвоить значение этой строковой переменной. Чтобы при этом не было ошибки. То есть чтобы происходило неявное преобразование типа.???
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Необходимо разные экземпляры определенного графического инструмента, любого, ну например, закрашенные треугольники, выводить с помощью индикатора разными цветами. При выводе одним цветом накладывающиеся друг на друга графические элементы плохо различаются. Однотипных графических элементов может быть много. Если задавать цвет в индикаторе через отдельные параметры, то:
во-первых, количество задаваемых цветов - величина переменная, а следовательно и количество параметров непонятно сколько надо задать;
во-вторых, засорять индикатор огромным количеством параметров для задания цвета не хочется.
Очень хорошо бы сделать это через строковую внешнюю переменную, в которой перечислить через запятую названия цветов. Потом программно выделять подстроки. Таким образом всего через одну переменную задавалось бы большое количество цветов. Любое количество. Но нет функции, которая преобразовывала бы текстовое название цвета в тип COLOR.
Есть предложение раширить язык. Добавить функцию StrToColor(string).
Тогда можно будет присваивать...
color CustomColor;
CustomColor=StrToColor("DarkBlu");
Полчаем CustomColor=DarkBlu;
Если имеется уже готовый способ такого преобразования, прошу написать об этом.
С уважением, Евгений