Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну названия на английском придумали не просто так.
Я могу Вам привести еще один такой пример, когда русские названия убьют ваш код:
Вы передаете код заказчику, у которого нет кириллицы. Все. .... все пропало..... :-)
А заказчику нужен именно код, или решение?
А заказчику нужен именно код, или решение?
вот поэтому нужно определится с целью и конечными пользователями.
Поставьте себя на место пользователя и забудьте все, что Вы делали: что будет чувствовать пользователь?
будем ли ему все понятно?
вот поэтому нужно определится с целью и конечными пользователями.
Поставьте себя на место пользователя и забудьте все, что Вы делали: что будет чувствовать пользователь?
будем ли ему все понятно?
Cогласен. Я ведь пишу на двух языках. Могу чисто на английском.
Вы, как англоязычный человек, смело игнорьте мое решение. Там мало английских слов.
Кстати, раз уж вы так хорошо разбираетесь с английским кодом, помогите разобрать код предложенный Николаем Семко:
Честно говоря, не понял как он работает. Тут много коротких английских слогов. Как раз, то что вам нравится.
В том-то и дело, что английский Я примерно знаю где-то на 30%, и только технический, но не разговорный.
В программировании слов всего пару десятков, и их запомнить можно написав буквально 1-2 программы.
P.S. Код который вы выложили, там всего 5 переменных, как с ними можно не разобраться?
В том-то и дело, что английский Я примерно знаю где-то на 30%, и только технический, но не разговорный.
В программировании слов всего пару десятков, и их запомнить можно написав буквально 1-2 программы.
P.S. Код который вы выложили, там всего 5 переменных, как с ними можно не разобраться?
Ну, я насчитал 30 переменных в своем коде (в главной функции). А до скольки вы считаете? (шутка).
30% технического английского - это очень сильно. Вы знаете, насколько богат технический английский?
Пара десятков слов в программировании? Теперь понятно, почему мы друг друга не понимаем.))
зы. Если вы имеете ввиду код Николая, то просветите, как он работает.
Кстати, судя по картинке, разложение цвета здесь не полное. Только половина. Диапазон должен простираться от абсолютно белого до абсолютно черного, через все оттенки конкретного цвета.
Да, ты прав.
Я попробовал реализовать это и проанализировать и визуализировать твой код.
Вот что из этого получилось:
Твой вариант
мой вариант:
Поясню:
Белая линия это линия тона (сумма цветов R+B+G) - в идеале это должна быть строго прямая диагональная линия. У меня это реализовано, у тебя нет.
Красная, синяя и зеленая линии — это линии соотношения цветов. Назовем их гармониками спектра. В идеале это должны быть вертикальными. Но это осуществить невозможно после того как изначально максимальный цвет стал 255. Но зато можно достигнуть ситуации, когда это не будет точек перегиба (отмечено красными стрелками) а сделать плавную дугу. Тогда градиент будет выглядеть без "сгустков". Данная проблема существует и в твоем и моем алгоритмах. Это можно исправить, но я пока не вижу смысла, поэтому жалко времени. На практике мне градиент нужен от одного цвета до другого. Это легко реализуется со строго вертикальными гармониками спектра (распушение гармоники вверху это нормально, т.к. это следствие округления). В данной же задаче градиент идет от черного до белого через третий цвет, поэтому эти перегибы и существуют.
Странно, я был уверен, что ты пишешь на MQL5. Но кроме того, что была сама программа 4-ки, но у тебя еще и стиль программирования 4-ки. Попытался твой алгоритм перенести на 5-ку и ничего не получилось, т.к. рисует вообще какие-то цветные полосы. Это скорей всего происходит из-за путаницы с областью видимости переменных, но исправить ввиду того что код не поддается отладке крайне тяжело и я махнул рукой. Я понимаю, что ты привык к своему стилю программирования и мой стиль тебе не понятен. Это взаимно, т.к. я привык не читать программу как книгу, а видеть структуру программы. А у тебя кроме невозможности отладки и понять в какой момент определения переменной, длинные имена переменных заполоняют собой 90% текста программы, в результате чего структура программы теряется, растворяясь в этих длинных именах переменных цвета барби. В общем твой код лично для меня воспринимается как какой-то садомазо.
Кроме того твой алгоритм оказался в десятки раз медленнее, и причина в этом даже не MQL4. Не смог в нем разобраться. Какие тангенсы, какие треугольники, когда существует только RGB?
И попробуй освоить union – очень полезная вещь.
Чтобы лучше понять о чем я говорил, стоит запустить оба скрипта, которые я прикрепил с твоим алгоритмом (MQL4) и моим (MQL5).
Так же у тебя встречаются такие казусы:
только пока не понял, это проблема тормознутости MT4 и ошибка твоего алгоритма.
1. Николай, даже сравнив две первые картинки которые ты привел, сразу можно увидеть что над твоим вариантом висит серая дымка. Присмотрись внимательно. А в моем варианте цвет значительно ярче. Ты считаешь что твой вариант лучше передает цвет?
2. За эталон я брал цветовую палитру виндоус. Я добился 99%-ного совпадения цветов. Проверь свои цвета на совпадения с цветами виндоус. Распечатай массив с оттенками как сделал я. Потом открой свойства графика и палитру. Введи в окошки значения компонентов исходного цвета и далее, веди ползунок вверх вниз. Цифры будут менятся. Ты ищи эти цифры в своей распечатке и смотри насколько они совпадают.
3. Я понимаю, что конкретная реализация может варьироваться. Специально на скорость свой алгоритм не проверял и ради скорости его не оптимизировал. Возможно, твое решение дает большую скорость. Не буду отрицать.
4. В оптике есть понятие призмы. Преломления света. Я отталкивался именно от этой парадигмы. Я построил график 256*256 (от 0 до 255). Далее, строил линии. Нашел ось преломления цвета. Она находится в центре графика. Каждая компонета - это кривая состоящая из двух отрезков. Всего цвет имеет три кривые линии, каждая из которых преломляется в центре графика делясь на два отрезка. Каждый отрезок имеет свой угол. Исходный цвет имеет координату на графике. Его можно найти среди его оттенков. Моя задача была, - найти исходный цвет, определить углы всех шести отрезков и получить значения каждой компонеты на протяжении ее линии.
5. Тангенсы - это соотношения прилежащих катетов к противолежащим. Необходимы для расчета углов отрезков и вычесления высоты противолежащих катетов (которая есть значение компонеты в конкретном тоне цвета).
6. Что касается стилей программирования - предлогаю это не обсуждать. К сути темы это отношения не имеет.
7. Насчет казусов - возможно они есть. Но пока что мне не попались. Поэтому, не знаю.
Кстати, расскажи как работает разложение цвета в твоем варианте. Я не до конца понял.
только пока не понял, это проблема тормознутости MT4 и ошибка твоего алгоритма.
Насчет разницы в скорости алгоритмов:
1. Твой алгоритм заполняет массив uint, а мой - массив string. (мне нужен именно string, чтобы легко вычленять нужные компоненты из оттенка и далее, работать с ними). Разницу в скорости заполнения обоих типов массивов ты сможешь увидеть из приведенного ниже скрипта.
2. Твой алгоритм работает на МТ5, а мой на МТ4. Разница в скорости заполнения массивов на этих платформах обсуждалось мною здесь - https://www.mql5.com/ru/forum/222333. Из приведенного ниже скрипта, ты сам увидешь эту разницу. Поставь его на обоих платформах и сравни.
Результаты замера скорости заполнения 30-ти тысяч ячеек массивов int и string на платформах МТ4 и MT5 (мс):
Как ты видишь, мой алгоритм работает медленнее по двум причинам:
Насчет разницы в скорости алгоритмов:
1. Твой алгоритм заполняет массив uint, а мой - массив string. (мне нужен именно string, чтобы легко вычленять нужные компоненты из оттенка и далее, работать с ними). Разницу в скорости заполнения обоих типов массивов ты сможешь увидеть из приведенного ниже скрипта.
2. Твой алгоритм работает на МТ5, а мой на МТ4. Разница в скорости заполнения массивов на этих платформах обсуждалось мною здесь - https://www.mql5.com/ru/forum/222333. Из приведенного ниже скрипта, ты сам увидешь эту разницу. Поставь его на обоих платформах и сравни.
Результаты замера скорости заполнения 30-ти тысяч ячеек массивов int и string на платформах МТ4 и MT5 (мс):
Как ты видишь, мой алгоритм работает медленнее по двум причинам: