周期为3分钟,代码如何表达tick棒体之前的三根棒的最高价和最低价?
大神老师好, 麻烦请教以下问题:1:如何通过主力连续合约,映射到 交易的主力合约上的代码,同时周期要求是3分钟的周期。 之后主力合约更换时候,自动切换交易标的。比如 rb2505 和 ag2502 是当下的主力合约。如何实现 onbaropen的时候,扫描下888合约,和当下的主力合约报价,是否匹配,如果匹配,那么选用这个合约,作为下单合约。2:如何表达三分钟交易周期的,tick棒体前 三根棒体的范围内的最高价和最低价,代码如何表达,感谢。3:代码编写过程中,报错内容是 无法识别字符串onbaropen ,有点莫名。。代码如下OnBarOpen(ArrayRef<Integer> indexs) { // 主程序代码 A 棒体新开时,计算一次 Numeric HighD; Numeric LowD; Numeric OpenD; Numeric CloseD; k3_yin = OpenD(3)<CloseD(3); // 这里的k3_yin 用的是 bool 声明的 ,下面的也是。不知道是否符合语法。 k2_yin = OpenD(2)<CloseD(2); // k1_yin = OpenD(1)<CloseD(1); //后面把这段删了,还是报错,无法识别字符串 onbaropen if(OpenD(3)>CloseD(3) and OpenD(2)>CloseD(2) and OpenD(1)>=CloseD(1)) { yangkongjian = abs(HighD(1)-LowD(3)); }//感谢大神老师的帮助。 迷弟:不懂就问
第三个问题 这个代码基础常识性的错误太多了第一 大括号匹配了么?第二 highd,lowd等等这些都是系统函数,你用numeric定义一下是什么意思?第三 k3_yin等这些容器怎么定义的?复制过来直接报未定义错误第四 把以上问题修复以后,编译时正常的,没有任何报错。你发代码前有没有自己先确认一下这个代码是否语法正确,是否能正确复现你的问题吗?这种不能说明问题的代码发出来也没有意义,纯粹浪费时间
回复:大神老师,是这样的,第一:大括号是匹配的,两组大括号,在onbaropen里面的,复制的时候少复制了一个。第二个问题,已经收到,理解下来,HighD(3) 是系统自带的功能函数,意思是,统计当前TICK棒体之前的 三根棒体的最高价。 而 close(3)是回溯 当前棒体之前的 第三根棒的收盘价, 不知是否是这样理解是否 正确 ?第三:k3_yin 的容易,是用来判断,所以之前在变量声明里面用 bool 来声明。后续在IF条件语句中,尝试过直接用变量名来取代逻辑算法,结果报错。最后才尝试直接用逻辑算法来表达。
回复:HighD是系统内置的函数,函数的参数是写在()里的,HighD(3)的意思是求3天前的最高价。回溯是用[],回溯3收盘价应该是Close[3]
第二个问题,必须订阅tick数据,然后用tick图层的数据来处理。重要提醒,不推荐调取数据后把信号结果放在大周期上!非常不推荐!原因建议看零基础课程里的跨周期相关内容!
第一个问题订阅品种对应的888数据。比如rb2502就订阅rb888配合。然后读rb888的relativesymbol看看跟你标的的symbol是否一致,剩下的你自己处理了