Типы пользовательских переменных в ThinkScript

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

Сразу надо определиться с тем, что если мы объявляем переменные с помощью таких слов как def или plot, то такие переменные являются числовыми и не могут содержать каких-то других значений, например текстовых.

Переходим к первому типу boolean. Переменные этого типа могут содержать лишь только одно из двух значений, истина или ложь. Языке thinkScript истина является значение Yes, а ложь соответственно No, а значит и переменные типа boolean могут содержать лишь только значения Yes или No.

Эти значения применяются в настройках индикатора, если нам необходимо в индикаторе что-то включить или выключить и дать возможность это делать пользователю, мы создаем переменную типа boolean

В этом примере мы объявили переменную A и присвоили ей значение Yes. Теперь у пользователя в настройках появилось новое поле, переменная A, напротив которой имеется выпадающий список с двумя значениями Yes и No

input Bolean ThinkScript ThinkOrSwim

input Bolean ThinkScript ThinkOrSwim

То значение которое мы вводим в коде является значением по умолчанию. Так как мы написали Yes, то соответственно значение по умолчанию было принято Yes. Если мы напишем No, то соответственно значение по умолчанию будет No. Это нужно для того чтобы в момент когда пользователь добавляет индикатор, настройки были введены таким образом, какими мы их пропишем в коде, а дальше пусть пользователь меняет их как захочет.

А теперь интересный момент, так как я написал выше что переменные объявленные с помощью таких слов как def или plot могут иметь лишь только числа, то что будет, если мы попытаемся значение переменной A присвоить в переменную объявленную с помощью слова def или plot?

Какое теперь значение имеется в переменной B? Тут всё просто, когда мы объявили переменную B с помощью def и попытались записать в неё значение Yes, то произошло преобразование по такому правилу. Значение Yes это 1, а значение No это 0. Соответственно переменная B приняла значение 1. Чтобы в этом убедиться но можем вывести на экран значение переменной B

Result Bolean ThinkScript ThinkOrSwim

Result Bolean ThinkScript ThinkOrSwim

Если мы в настройках поменяем значение переменной А с Yes на No, то переменная B примет значение 0 и мы это увидим на экране.

Ну и последнее про тип boolean, а точнее про его применение на практике.

Предположим мы хотим дать пользователю самому решать хочет он видеть сообщения на экране или не хочет для этого можем написать следующий код

Первый параметр который принимает функция addLabel отвечает за отображение сообщения или не отображение. Если значение истина значит сообщение отображается в противном случае сообщение не отображается. Таким образом если пользователь в настройках выбирает параметр Yes, то сообщение на экране отображается. Если же необходимо будет убрать сообщение с экрана то пользователь выбирает в настройках параметр No и сообщение пропадает.

Переходим к следующему типу переменных это constant. Чтобы немного объяснить что такое Константа и зачем она нужна приведу следующий пример. Представьте что вам дали список в котором пронумеровали фрукты. 1 — яблоко 2 — груша 3 — апельсин и так далее. И теперь предлагают в тексте использовать вместо слов числа. Естественно вам будет необходимо сначала выучить этот список, а потом подставлять значения. Согласитесь что это неудобно. Проще написать предложение. Я нарвал яблок и обменял их на груши, нежели писать я нарвал 1 и обменял их на 2. Но программы на компьютерах предпочитают работать именно с числами, а не со словами которые нам более удобно использовать. Для этого и были разработаны так называемые Константы. То есть человек может писать своими словами, яблоки, груши, апельсины, а компьютер будет производить замену на значение 1 2 3 и работать с числами как ему это удобно.

Во многих функциях применяется константы. Рассмотрим например функцию MovingAverage. Первым параметром эта функция принимает как раз константу.

В этом примере AverageType.EXPONENTIAL является константой. А теперь давайте заглянем немного глубже и узнаем, что скрывается под этими словами. Напишем в следующий пример

Теперь мы видим на экране сообщение, а в нём написано 1. Если мы в настройках будем менять тип скользящей средней, то в сообщениях мы будем видеть числа от 0 до 4. Согласитесь, писать текст намного удобнее нежели использовать числа, мы пишем AverageType.SIMPLE что для нас означает что мы используем простое усреднение, а компьютер понимает что мы передали ему число 0. Таким образом с использованием констант всем становится удобно, так как нам более удобно работать со словами мы используем слова, а компьютеру более удобно работать с числами он использует числа. К каждой функции применяются свои константы, описание которых можно увидеть при изучении конкретной функции.

Пора переходить к следующему типу данных enum. Это так называемые перечисления, оно кстати очень похоже на предыдущий тип данных constant. Но если в constant, всё определено заранее до нас, то в enum мы можем сами составить список.

Прописав такой код в нашем индикаторе мы увидим следующее

enum ThinkScript ThinkOrSwim

enum ThinkScript ThinkOrSwim

Как и при применении constant в настройках мы видим выпадающий список из которого можно выбрать одно значение. Но вот с выводом результата у нас немного другая ситуация. Мы видим на экране сообщение, а в нём написан наш текст, тем самым в enum не происходит приравнивание значения числу. Чтобы в этом убедиться мы можем написать следующий пример

Мы получаем ошибку.

enum Error ThinkScript ThinkOrSwim

enum Error ThinkScript ThinkOrSwim

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

Таким образом у нас все работает.

Result Enum ThinkScript ThinkOrSwim

Result Enum ThinkScript ThinkOrSwim

Теперь мы можем немного расширить варианты действий пользователя. Так как если мы используем тип Bolean, то у пользователя имеется лишь только два варианта да или нет, а при использовании типа enum пользователю можно дать целый список, из которого он сможет выбирать.

Следующий тип переменной float. Это число с плавающей запятой. Не будем долго на нем останавливаться просто приведу пример

Таким образом пользователь может вписать в переменную не целое число, а какую-нибудь десятую часть.

Двигаемся дальше и переходим к типу переменных integer. И снова долго не задерживаемся это просто обыкновенное целое число.

Таким образом пользователь не сможет использовать дробные числа, а может прописывать лишь только какие-то целые числа. Если пользователь всё-таки пропишет дробное число, то есть поставить точку, то дробная часть будет отброшена.

Выходим на финишную прямую и разбираемся с типом переменных Price. Что-то очень похоже на константу но это не она. Пользователю также выпадает целый список из которого он может выбрать одно значение, Но эти значения не приравниваются к каким-то числам от 0 до n, они возвращают числа в зависимости от выбранного значения.

price ThinkScript ThinkOrSwim

price ThinkScript ThinkOrSwim

Если пользователь выбирает значение close, то в переменную попадают цены закрытия с графика, если же он выберет значение Open, то соответственно в переменную попадут цены открытия с графика и так далее.

Ну и наконец-то последний тип переменных string. Это текстовая переменная, тут пользователь может писать абсолютно любой текст который придёт в голову. Небольшой пример применения.

В этом примере пользователю дается возможность прописать название бумаги и он увидит на графике цены закрытия этой бумаги.

На этом мы закончили разбор с типом переменных, надеюсь что всё понятно, но если все-таки имеются какие-то вопросы то пишите их в комментариях под этой темой.

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

avatar

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

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