首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法理解它是如何工作的(ThinkScript代码)

无法理解它是如何工作的(ThinkScript代码)
EN

Stack Overflow用户
提问于 2022-02-01 10:58:43
回答 1查看 296关注 0票数 0

目前,我正在将ThinkScript指示符转换为python,但是,我遇到了这段代码,我对它的工作方式有些困惑:

代码语言:javascript
复制
input rollingPeriodMinutes = 60;


def factor = (SecondsFromTime(Market_Open_Time) / (60 * rollingPeriodMinutes) / 100);
def rolloverTime = if factor == Round(factor) then 1 else 0;


rec H1 = compoundValue(1, if !rolloverTime then if high > H1[1] then high else H1[1] else high, high);
rec H = compoundValue(1, if rolloverTime then H1[1] else H[1], high);

我真的不明白在变量"H“的末尾存储了什么。你能帮我理解吗?任何帮助都是实际的!谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-04-27 17:17:45

input rollingPeriodMinutes = 60;

  • 声明(defines)并将变量rollingPeriodMinutes设置为默认值60input声明表示用户将能够在此脚本的Thinkor游泳设置中更改此值。

def factor = (SecondsFromTime(Market_Open_Time) / (60 * rollingPeriodMinutes) / 100);

  • 声明并将变量factor设置为计算值。这使用上面的rollingPeriodMinutes值,以及脚本中其他地方设置的函数Market_Open_Time变量。

def rolloverTime = if factor == Round(factor) then 1 else 0;

  • 声明并将一个变量rolloverTime设置为基于if语句的布尔值。这使用上面的factor变量(在thinkscript中,1是true,0是false )。
代码语言:javascript
复制
rec H1 = compoundValue(1, if !rolloverTime then if high > H1[1] then high else H1[1] else high, high);
rec H = compoundValue(1, if rolloverTime then H1[1] else H[1], high);
  • def已被淘汰。以前,它专门声明了一个递归变量;现在,不管怎么说,都只能使用def。有关更多信息,请参见下面的说明。 CompoundValue在thinkscript中是一个简单的语句,但是从学习中心参考资料中理解起来却很复杂。 简而言之,HH1的声明是‘返回1 bar:如果没有数据,则使用if语句来确定值;否则,如果存在数据,则使用high值。 H1的算法(其中high是为给定条的高价保留的字)的算法可能如下所示:
代码语言:javascript
复制
let numBarsBack = 1
if (data is present for the bar at numBarsBack) then
  if (!rolloverTime == true) then
    if high > (H1 value one bar previous) then H1 = high
    else H1 = (H1 value one bar previous)
    else H1 = high    // thinkscript sometimes requires a "default" in `if` statements, even if there's no 3rd possible value
  else (if rolloverTime == true) then H1 = high
else (if data is not present for the bar at numBarsBack) then H1 = high

*请参阅我关于CompoundValue如何在SO “理解和转换ThinkScripts CompoundValue函数”.***上在thinkscript中工作的完整描述。

备注:

SecondsFromTime ( int fromTime); 描述 返回EST时区中指定时间(24小时时钟表示法)的秒数。注意,当图表的聚合周期大于或等于1天时,此函数总是返回零。 输入参数 参数默认值描述 fromTime -用HHMM格式定义计算秒的时间,24小时时钟表示法.

雷克 注意:这是一篇关于过时的thinkScript符号的文章。尽管thinkScript仍然支持rec变量,但它们可以完全由def替换。 语法 雷克 描述 使您能够引用正在研究或策略本身中计算的变量的历史值。Rec是“递归”的缩写。 示例 rec C= C1 +卷;CumulativeVolume = C;本例绘制了从时间段开始的累积卷。

最后,最后:

  • 请记住,thinkscript代码是对所选时间段中的每个条形码执行的。Ie,如果您每天查看10天,那么10天中的每一天都会有一个条形图;脚本将运行一个循环,重复这10条中的每条的代码。因此,变量将对每个条形图有适当的值。 尽管OP希望将脚本转换为Python,但如果有人对thinkscript的工作方式感兴趣,则有一些技巧可以使整个脚本的值保持不变(尽管这一节代码中没有包含此类示例)。有关如何在thinkscript中执行此操作的信息,请参阅https://stackoverflow.com/a/66894945/1107226
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70939439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档