问题标签 [thinkscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
thinkscript - thinkscript if 语句失败
thinkscript if 语句在某些情况下无法按预期分支。以下测试用例可用于重现此错误/缺陷。
它通过包含图表和脚本的网格共享
长话短说,在某些情况下,一种可能的解决方法是使用 if 表达式,它是一个函数,它可能更慢,可能导致扫描中的脚本执行超时。
thinkscript 中的这个相当讨厌的错误使我无法以我需要的方式编写一些扫描和研究。
以下是一些在图表上显示问题的示例代码。
要为股票 ADT 准备图表,请设置自定义时间范围:
10/09/18 至 10/09/19,汇总期 1 天。
该脚本的目的是在 2019 年 8 月 14 日找到 4.25 的低值。
我知道在 thinkscript 中有多种方法可以做到这一点,例如GetMinValueOffset()
.
让我们不要讨论实现目标的替代方法,以找到附加脚本的低替代方案。
因为我不是在寻求帮助来实现目标。我正在报告一个错误,我想知道出了什么问题以及如何修复它。换句话说,在这里找到低点只是使脚本更易于理解的一个示例。它可以是任何其他需要脚本计算的东西。
请让我描述一下脚本。
首先,它使用移动平均线进行一些平滑处理。结果是:
然后脚本定义与右边缘的距离,以便我们可以使用偏移量:
然后脚本构建一个查找表:
scriptgetMinValueBetween {}
是一个小函数,它以动态的方式找到两个偏移位置之间的低点。它是必需的,因为GetMinValueOffset()
不接受动态参数。
然后我们有脚本buildValue {}
这是发生错误的地方。该脚本在右边缘执行。
buildValue {}
进行如下间接查找:
首先,它进入查找,在lookupPosn
= 23 处找到值 53。
对于 53,如果通过调用脚本函数找到偏移 53 和 0 之间的低点getMinValueBetween()
。它将值存储在def lowAtIndirectLookupPosn;
如您所见,这确实非常简单——只有 38 行代码!
问题是,它lowAtIndirectLookupPosn
包含错误的值,就好像执行了 if 语句的错误分支一样。
plot testResult
应该放出低点4.25。相反,它输出close[offsetLast]
的是 6.26。
老实说,这是一场灾难,因为无法预测if
程序中的哪个语句会失败。
thinkscript - thinkscript if 函数在重要情况下无用
thinkscript if 函数在重要情况下无法按预期分支。以下测试用例可用于重现此严重错误/缺陷。
简而言之,如果函数参数之一无效,通常可以使用 if 语句来防止函数调用被执行。我们证明情况并非如此。实际上,两个分支都被执行了,包括不满足if条件的分支。
这绝对违背了 if 条件测试的目的,即每种语言中的每个 if 语句都具有的测试。
以下是一些在图表上显示问题的示例代码。通过单击图表左上角闪烁的“i”消息图标可以看到结果:
折叠:'from' 不能大于 'to':1 > -1。
technical-indicator - 理解和转换 ThinkScripts CompoundValue 函数
我目前正在将 ThinkScript 指示器转换为 C#,但是,我遇到了这个CompoundValue
函数,我不确定如何隐藏它。
文件内容如下:
根据以下规则计算复合值:如果柱数大于长度,则返回可见数据值,否则返回历史数据值。此函数用于使用递归初始化研究。
使用示例:
我的解释:
基于描述和示例。看起来我们正在传递一个计算,x[1] + x[2]
它在当前柱和前一个柱上执行这个计算(基于 的第一个参数2
)。我不确定该参数1
的用途。
我的问题:
请解释一下这个函数实际上在做什么。如果可能,请说明此方法如何使用伪代码工作。
pine-script - Thinkorswim 到 Tradeview
我基本上是想把它移植过来,但不知道怎么做。一方面,它没有选择 Thinkscript 使用的最高/最低参考
如果有人可以提供帮助,那就太好了,谢谢
这是我所拥有的,但显然没有用
thinkscript - 前 1 分钟柱的开盘和收盘
我知道在这里问很远,但我正在寻找一种方法来确定前 1 分钟的蜡烛是否为红色,这意味着柱线收盘价低于开盘价。
为此,我只需要前一分钟柱的开盘价和收盘价,但我还没有找到收盘的方法。
开放是相当直截了当的:
获取第一个柱的范围也相当简单,因为我们定义了一个范围(1 分钟)并返回该范围的高/低。
如果有人可以提供帮助,我将不胜感激。
谢谢!
debugging - 您如何在 ThinkOrSwim 平台中单步执行 thinkscript?
我在 ThinkOrSwim 平台上玩 ThinkScript 代码。专门在 MacOSX 上运行此工具。我想知道是否有一种方法来调试 ThinkScript,就像您附加调试器并逐行执行脚本一样。
thinkscript - thinkscript语法怎么解释?
“reversal[1] != reversal ”、“timeInterval != timeInterval[1]”、“periodIndx != periodIndx[1]” 等等。
“X!= X[1]”在 thinkscript 中的真正含义是什么?
arrays - 如何在 Thinkscript 中创建一个数组(IDataHolder)?(思考游泳)
我正在尝试使用 Thinkscript 在 Thinkorswim 上创建一个不规则的卷扫描仪。我想在过去期间创建一个交易量数组,以便我可以将它们与当前期间的交易量进行比较(使用折叠或递归)。然而,虽然 Thinkorswim 文档详细介绍了所谓的 IDataHolder 数据类型,它是一组数据,但我无法找到如何实际创建一个数据类型,而不是仅引用 Thinkorswim 持有的历史数据。这是文档:https ://tlc.thinkorswim.com/center/reference/thinkScript/Data-Types/IDataHolder
我已经尝试编写像这样简单的代码来初始化数组:
这会引发错误。我尝试了不同类型的括号,更改了任何可能的语法问题等。
这在 Thinkscript 语言中可行吗?如果没有,是否有任何解决方法?如果不是这样,是否有第三方编程接口可以用来从 Thinkorswim 提取数据并以这种方式获取扫描仪?谢谢你的帮助。
pine-script - Pinescript 到 Thinkscript 的请求
这个计算的依据是什么?体积,浮动?Idk,但希望得到一些帮助来理解。
虽然我了解 pinescript/thinkscript 的基础知识,并且已经将其他一些简单的脚本从 pinescript 转换为 thinkscript,但我无法理解这一点。
谢谢
stock - Thinkscript概率统计研究-需要帮助完成
我试图计算如果一只股票在开盘时上涨 0.05 的概率,它会上涨 0.50 的概率是多少?遇到一些小问题。
这个想法来自外汇交易员“TheRumpledOne”。他称之为“购买区”。如果你不认识他,就去看看他。把它想象成一个基于概率的开局范围。
加载代码后,您可以看到数字不应超过“barsago”长度。
编辑:想通了。在代码中添加了“上面的交叉”。虽然必须有更好的、“更清洁”的方式?还在这部分代码中添加了“...var and...”,如果确实需要,请注意。
编辑2: 这是我当前的问题。 其他的事情还没有结束。数字似乎不对。现在他们看起来很低。我预计一些股票会在超过 70% 的时间内开盘 + 0.50,但这个指标的说法不同。