以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- [求助]数组值的问题,谢谢老师! (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=148752) |
-- 作者:NaturalLaw -- 发布时间:2017/3/7 13:50:44 -- [求助]数组值的问题,谢谢老师!
RUNMODE:0;//运行模式为逐K线计算 VARIABLE:arrSHV[] = 0;//短期波峰数组 SHIF:=H[BARPOS-2] <= H[BARPOS-1] AND H[BARPOS-1] >= H[BARPOS];//判断波峰的条件 IF SHIF THEN BEGIN SHVN:=UBOUND(arrSHV),NODRAW;//波峰个数 SH:arrSHV;//短期波峰轨道 //检查如上代码计算结果是否正确 EXPLAIN(SHVN>0,\'最近波峰:\'&NUMTOSTR(arrSHV[SHVN],2)),COLORYELLOW; EXPLAIN(SHTN>0,\'最近波峰周期:\'&NUMTOSTR(arrSHT[SHTN],0)),COLORYELLOW; EXPLAIN(SHVN>0,\'第一个波峰:\'&NUMTOSTR(arrSHV[1],2)),COLORYELLOW; EXPLAIN(SHTN>0,\'第一个波峰周期:\'&NUMTOSTR(arrSHT[1],0)),COLORYELLOW; //===短期波谷===================================================================================== IF SLIF THEN BEGIN SLVN:=UBOUND(arrSLV),NODRAW;//波谷个数 SL:arrSLV;//短期波谷轨道 //检查如上代码计算结果是否正确 EXPLAIN(SLTN>0,\'最近波谷周期:\'&NUMTOSTR(arrSLT[SLTN],0)),COLORYELLOW; EXPLAIN(SLVN>0,\'第一个波谷:\'&NUMTOSTR(arrSLV[1],2)),COLORYELLOW; EXPLAIN(SLTN>0,\'第一个波谷周期:\'&NUMTOSTR(arrSLT[1],0)),COLORYELLOW; |
-- 作者:jinzhe -- 发布时间:2017/3/7 14:08:32 -- http://www.weistock.com/bbs/dispbbs.asp?BoardID=10&ID=30380&replyID=&skin=1 这里常规数组和序列变量之间的转换 |
-- 作者:NaturalLaw -- 发布时间:2017/3/7 14:27:06 -- 看过了,但还是不知道如何解决问题!请老师帮助,莫非需要用REMOVEBOUND(X,D),来解决问题? 删除数组的数据: |
-- 作者:jinzhe -- 发布时间:2017/3/7 14:42:15 -- 因为h[barpos-2]是一个序列变量是一个特殊的数组,在第一根k线上是没有ref(h,2)的,但是数组是会自动填充值为第一个数据。你的条件是大于等于,在第一根k线上相当于第一根k线的最高值在自己互相比较,全部满足条件。 |
-- 作者:jinzhe -- 发布时间:2017/3/7 14:46:23 -- 无论是把条件里面的等于号去掉还是用ref替代掉[barpos],都能不在第一根k线上给数组赋值 |
-- 作者:NaturalLaw -- 发布时间:2017/3/7 15:40:06 -- 我试着在上面的代码里加了条件语句让它从K线大于3时才开始运算,也不行的,怎么办? IF DATACOUNT > 3 THEN BEGIN ... END |
-- 作者:NaturalLaw -- 发布时间:2017/3/7 15:40:29 -- RUNMODE:0;//运行模式为逐K线计算 VARIABLE:arrSHV[] = 0;//短期波峰数组 SHIF:=H[BARPOS-2] <= H[BARPOS-1] AND H[BARPOS-1] >= H[BARPOS];//判断波峰的条件 IF SHIF THEN BEGIN SHVN:=UBOUND(arrSHV),NODRAW;//波峰个数 SH:arrSHV;//短期波峰轨道 //检查如上代码计算结果是否正确 EXPLAIN(SHVN>0,\'最近波峰:\'&NUMTOSTR(arrSHV[SHVN],2)),COLORYELLOW; EXPLAIN(SHTN>0,\'最近波峰周期:\'&NUMTOSTR(arrSHT[SHTN],0)),COLORYELLOW; EXPLAIN(SHVN>0,\'第一个波峰:\'&NUMTOSTR(arrSHV[1],2)),COLORYELLOW; EXPLAIN(SHTN>0,\'第一个波峰周期:\'&NUMTOSTR(arrSHT[1],0)),COLORYELLOW; //===短期波谷===================================================================================== SLIF:=L[BARPOS-2] >= L[BARPOS-1] AND L[BARPOS-1] <= L[BARPOS];//判断波谷的条件 IF SLIF THEN BEGIN SLVN:=UBOUND(arrSLV),NODRAW;//波谷个数 SL:arrSLV;//短期波谷轨道 //检查如上代码计算结果是否正确 EXPLAIN(SLTN>0,\'最近波谷周期:\'&NUMTOSTR(arrSLT[SLTN],0)),COLORYELLOW; EXPLAIN(SLVN>0,\'第一个波谷:\'&NUMTOSTR(arrSLV[1],2)),COLORYELLOW; EXPLAIN(SLTN>0,\'第一个波谷周期:\'&NUMTOSTR(arrSLT[1],0)),COLORYELLOW; END |
-- 作者:jinzhe -- 发布时间:2017/3/7 15:42:27 -- barpos>3 |