Как создать массив (IDataHolder) в Thinkscript? (Thinkorswim)

#arrays #thinkscript

#массивы #thinkscript

Вопрос:

Я пытаюсь создать сканер нерегулярного объема в Thinkorswim с помощью Thinkscript. Я хочу создать массив томов за прошлые периоды, чтобы я мог сравнить их с объемом текущего периода (используя fold или рекурсию). Однако, хотя в документации Thinkorswim подробно описывается то, что называется типом данных IDataHolder, который представляет собой массив данных, я не могу найти, как его можно создать, в отличие от простой ссылки на исторические данные, хранящиеся в Thinkorswim. Вот документация: https://tlc.thinkorswim.com/center/reference/thinkScript/Data-Types/IDataHolder

Я попытался закодировать что-то столь же простое, как это, для инициализации массива:

 def array = [];
 

Это выдает ошибку. Я пробовал разные типы скобок, менял любые возможные проблемы с синтаксисом и т. Д.

Возможно ли это на языке Thinkscript? Если нет, есть ли какие-либо обходные пути? Если даже этого нет, есть ли сторонний программный интерфейс, который я мог бы использовать для извлечения данных из Thinkorswim и получения сканера таким образом? Спасибо за любую помощь.

Ответ №1:

IDataHolder представляет такие данные, как close , open , volume , и т.д., которые хранятся на нескольких столбцах или тиках. Вы можете ссылаться на один из этих предопределенных рядов данных, или вы можете создать свой собственный, используя переменные: def openPlus5cents = open 0.05 , скажем, будет IDataHolder значением типа.

Как вы обнаружили, нет способа создать массив в обычном смысле программирования, поэтому вам придется проявить немного творчества. Возможно, скажем, вы могли бы выполнить сравнение внутри fold ? volume[1] > volume или тому подобное? Может быть, опубликовать другой вопрос с примером сравнения, которое вы пытаетесь сделать?