请教关于代码编写中数据引用的二个问题

各位老师好, 在策略编写中遇到二个问题特来求助。 基础策略包含以下四步:(1)行情预定 预定1100根bar。【问题1】请教,布置策略时要在tb里边设置K线数,除了设置外,可否在init{}里边预定行情数据?有此一问是为了保证交易信号的连续性,担心在没有预定的情况下,运行软件时间之前没有行情数据导致没有交易信号。(2)指标初始化 1.给每根K线设立两个指标值,一个指标值为该K线的时间,一个为结构类型(顶元素值为“1”,底元素值为“-1)。 2.取(1)中预定K线的前1100根K线为顶,指标值为(前1100bar时间,1)(3)指标迭代 1.若当前K线、前一根K线、前二根K线的最高价满足 H[2]<=H[1] and H[1]>=H,那么前一根K线为顶元素,指标值记为(前1bar时间,1) .若当前K线、前一根K线、前二根K线的最低价满足 L[2]>=L[1] and L[1]<=L,那么前一根K线类型为底元素,指标值记为(前1bar时间,-1) 2.取前1根K线的结构类型,如果与上一个结构类型取值不为0的元素的结构类型相同: 若同为顶元素则,最高价更高的顶元素指标值记为(bar时间,1),最高价不更高的顶元素指标值记为(bar时间,0);若同为底元素则,最低价更低的底元素指标值记为(bar时间,-1),最低价不更低的底元素指标值记为(bar时间,0) 3.取前1根K线的结构类型,如果与上一个结构类型取值不为0的元素的结构类型不同: 如果”前1根K线与上一个结构类型取值不为0的元素相隔K线数大于等于2根“并且”前1根K线的最高价最低价区间与上一个结构类型取值不为0的元素的最高价最低价区间不重叠(仅可重叠一个价位)“那么前1根K线的指标值记为(前1bar时间,1)或(前1bar时间,-1)。(4)根据(2)(3)步骤寻找的顶底元素进行相关计算。【问题2】步骤(2)(3)(4)涉及到将顶底元素对应K线的时间和类型的指标,进行存储、添加、删除(或者修改)、引用等操作,特别是步骤(3)中小2项,有可能会援引前一元素的Bar数据还可能删除或者修改它的指标值,这样的存储、添加、删除(或者修改)、引用等操作可以如何设计呢?思路一,指标值存成series类型。请问引用和修改等操作该如何完成?引用到上一个元素的位置还能再次修改它的bar上指标的值吗?思路二,指标值存成二维数组,一列存时间,一列存结构类型的值(或者分类)。请问二位数组是否可以像Python一样进行切片和赋值?

简单的讲序列变量就是每根BAR有一个值,并且可以回溯任何单变量都是bar会重置(包括数组),也就是你如果哟啊基于K线保存数组也要定义成序列数组, series<array<numeric>>global 是全局前缀,可以与时俱进,但全局一份,特点其一就是无法回溯具体用什么变量还是看你自己策略需要什么类型你这种看上去至少应该是序列型

回复:谢谢老师解答。我学习过kyover的教学视频中的变量类型和数据结构。只是不知道如何完成引用,例如您讲的序列数组, series<array<numeric>>,如果K线产生新的顶和底,那么上一个顶或者底(及其bar数据)如何引用呢?要取到它的类型和bar数据才能做步骤(3)。使用什么函数可以完成引用呢? series类型可以向前回溯然后再修改之前的数据吗?

回复:刘老师肯定要说 你别在外面说看过我的教学视频了 哈哈哈哈哈哈视频里肯定讲了怎么引用,我觉得你可以重新看一遍series<array<numeric>> 就表示 每一根K线上都有一个array<numeric>结构的数据比如你想引用 “前1根K线”里 “数组第三个元素”则是 series[1][2]第一个[1]表示series数据回溯bar的数量,第二个[2]表示你这个bar上数组数据的序号我记得是不支持向前修改的

回复:看了楼上的问题,你是不知道如何回溯序列数组?普通序列型,加1个下标就可以了。比如a的回溯是 a[n]数组型的回溯,由于数组本身有下标,所以数组a的回溯 ,是 a[回溯下标][数组下标]同理二维数组是 a[回溯下标][一维下标][二维下标]

回复:谢谢老师,我学习下。

回复:这个回答通透了。谢谢老师