Функция DefineColor в ThinkScript

Синтаксис функции DefineColor:

DefineColor(String name, CustomColor color);

name – Имя цвета

color – Цвет

Описание функции DefineColor:

С помощью текущей функции мы можем дать цвету собственное имя. Допустим вы хотите красный цвет назвать яблочный, нет проблем, эта функция в этом поможет. Конечно из этого пример кажется, что функция не имеет большого смысла, на самом деле она нам сможет очень помочь при разработке индикаторов. Для начала рассмотрим пример как ее использовать.

plot avg = average(close, 12);avg.DefineColor("Sold", Color.RED);
avg.DefineColor("Over Sold", Color.DARK_RED);
avg.SetDefaultColor(avg.Color("Over Sold"));

Этот пример рассмотри построчно. В первой строке строим скользящую среднюю. Во второй строке в переменной avg создаем цвет и даем ему имя «Sold». В третей строке, создаем еще один цвет в переменной avg и даем ему имя «Over Sold». В четвертой строке устанавливаем переменной avg цвет по умолчанию «Over Sold». Как видите из примера, что бы создать именованный цвет используем функцию DefineColor, чтобы обратиться к созданному цвету по имени пишем сначала имя переменной, в которой создали цвет, ставим точку, пишем слово Color а в скобках пишем имя цвета avg.Color(«Over Sold»).

Конечно если мы хотим просто назначить цвет по умолчанию, то такой код писать нет необходимости, но для начала взгляните в настройки нашего индикатора.

setup ThinkOrSwim

Настройки индикатора

Наша переменная avg имеет 2 цвета и называются они так, как мы их назвали в индикаторе. Мало 2? – Создайте 4, 5, 10 … Например так.

setup ThinkOrSwim

Настройки индикатора

Код не привожу, думаю вы теперь сами знаете, как такое сделать.

Поговорим лучше о применении такого на практике.

Коротко скажу, что наша линия может быть окрашена не в 1 цвет, который мы задали по умолчанию, а в разные цвета в зависимости от условий, но это будет подробно рассмотрено в функции AssignValueColor.

Для начала я напишу вот такой пример.

def oc = close - open;
AddLabel(yes, if oc > 0 Then "Рост" else "Падение");

Этот пример показывает в сообщении слова «Рост» если свеча растущая или «Падение» если свеча падающая. Цвет сообщения всегда красный, но давайте усовершенствует наш код и сделаем так, чтобы сообщение меняло свой цвет в зависимости от того, какая свеча. Если свеча растущая, пусть сообщение будет зеленое, если падающая, то темно красная.

def oc = close - open;
AddLabel(yes, if oc > 0 Then "Рост" else "Падение", if oc > 0 Then Color.GREEN else Color.DARK_RED);

Теперь сообщение меняет цвет. Но свеча может расти, может падать, а может и ни то не другое, давайте пропишем и такое состояние, и цвет назначим синий.

def oc = close - open;
AddLabel(yes, if oc > 0 Then "Рост" else if oc < 0 Then "Падение" else "Нет", if oc > 0 Then Color.GREEN else if oc < 0 Then Color.DARK_RED else Color.BLUE);

Вот теперь мы описали все состояния. Вроде все что можно было сделать, но нет. Представьте, что вам не нравится зеленый цвет сообщения, слишком яркий и вы хотите его изменить. Первый способ влезть в код и изменить цвет. А если вы дали свой индикатор другу, он его добавил и ему не нравится цвет, а в коде он не понимает. А в настройках цвет изменить негде. Откройте настройки, и вы увидите чистое окно

setup ThinkOrSwim

Настройки индикатора

Вот что бы не произошло такой ситуации, и вы или ваш друг могли изменить цвет на какой захотите, не изменяя кода, мы с вами еще больше усовершенствуем индикатор используя функцию DefineColor.

def oc = close - open;plot colors = Double.NaN;colors.DefineColor("Up", Color.GREEN);
colors.DefineColor("Down", Color.DARK_RED);
colors.DefineColor("Not", Color.BLUE);AddLabel(yes, if oc > 0 Then "Рост" else if oc < 0 Then "Падение" else "Нет", if oc > 0 Then colors.Color("Up") else if oc < 0 Then colors.Color("Down") else colors.Color("Not"));

Вот теперь полноценный индикатор. Разберем его.

Мы добавили переменную colors (не создавайте переменные, которые уже прописаны как-то в thinkScript, так как слово color зарезервировано, я создал переменную colors добавив в конце букву «s»). Сама переменная на графике никак не отображается, поэтому присвоили ей значение Double.NaN (нет данных). Далее в этой переменной colors создали 3 цвета и дали им имена «Up» «Down» и «Not» что будет означать как Рост – Up, Падение – Down. Ни то ни другое – Not. Ну и в последней строке обратились к нашим цветам по именам.

Откройте теперь настройки индикатора.

setup ThinkOrSwim

Настройки индикатора

Как видите теперь имеется переменная colors, а в ней 3 цвета и любой пользователь, не меняя кода может изменить цвет по своему вкусу.

Постоянная ссылка на это сообщение: https://k-pavel.ru/funkcija-definecolor-v-thinkscript/

avatar

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Подписаться на