以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 求前值出错 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=155623) |
-- 作者:dddf -- 发布时间:2017/7/2 17:59:12 -- 求前值出错 INPUT: chanlength(20,1,90,1); INPUT: chandelay(15,1,90,1); INPUT: trailingatrs(3,1,90,1); INPUT: atrlength(10,1,90,1); VARIABLE: upperchan=0,lowerchan=0,poshigh=0,atrval=0,con=0,STOPLINE=0; minpoint:=MINDIFF; upperchan:=HHV(h,chanlength); lowerchan:=LLV(l,chanlength); up:upperchan; dn:lowerchan; con:=h>=upperchan[BARPOS-chandelay] and h[BARPOS-1]<upperchan[BARPOS-chandelay]; if HOLDING=0 THEN BUY(con,1,MARKETr); if ENTERBARS=0 THEN BEGIN poshigh:=h; end else BEGIN
if h>poshigh[BARPOS-1] THEN poshigh:=h;//这个POSHIGH是买入后的高点,但是奇怪的是图形上显示出来的并没有维持在最高点,而是随着H变化而下降.求老师指示.是写法错误么?
end; ATRVAL:=MA(TR,atrlength)*trailingatrs; ph:poshigh; ph1:poshigh[BARPOS-1],LINETHICK0; IF HOLDING=1 AND ENTERBARS>0 THEN BEGIN
STOPLINE:=MAX(POSHIGH[BARPOS-1]-ATRVAL[BARPOS-1],LOWERCHAN[BARPOS-CHANDELAY]-MINPOINT);
sell(l<STOPLINE,0,MARKETr); end
|
-- 作者:dddf -- 发布时间:2017/7/2 18:00:20 -- 这个POSHIGH是买入后的高点,但是奇怪的是图形上显示出来的并没有维持在最高点,而是随着H变化而下降.求老师指示.是写法错误么? 用REF函数又不行,不能在IF内使用.
|
-- 作者:dddf -- 发布时间:2017/7/2 18:22:56 -- 从TB翻译过来的.手生.好象两者的数组模式相差很大.有两者改写的对应技巧么? [此贴子已经被作者于2017/7/2 18:23:43编辑过]
|
-- 作者:wenarm -- 发布时间:2017/7/3 8:29:51 -- 表述下你的代码需求。 if ENTERBARS=0 THEN BEGIN
poshigh:=h;
end
else BEGIN
if h>poshigh[BARPOS-1] THEN poshigh:=h;//这个POSHIGH是买入后的高点,但是奇怪的是图形上显示出来的并没有维持在最高点,而是随着H变化而下降.求老师指示.是写法错误么?
end;
根据代码逻辑,可以直接使用这种方式代替上述代码部分,hhv(HIGH,ENTERBARS);
tb属于类c的语法,可能很多地方都是通过数组处理的, 金字塔的函数返回值大部分都是序列变量值,再处理用户的需求时,是很少需要采用数组处理。即可完成需求。
|
-- 作者:dddf -- 发布时间:2017/7/3 15:11:10 -- 嗯,就是全局变量是不是都是序列变量.能不能用BARPOS定位回溯,来访问前面的数据?因为我这段程序用这个来定位时是出错的,你运行一下就知道. 第二就是在程序化交易测评时,结果不正确,交易次数极少.而在图表上肉眼可见的交易信号就很多.是不是也和使用这个BARPOS有关.
|
-- 作者:qq代人发帖 -- 发布时间:2017/7/3 15:38:48 -- 关于金字塔里面的全局变量的说明:http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm 全局变量和序列变量有区分的,不能等同看待,详情的话你看下全局变量的说明。全局变量回溯也是可以的,只是并不好用。
|