以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [求助]请问这个公式怎么修改才是对的 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=182902) |
|
-- 作者:vakoth -- 发布时间:2020/11/8 16:23:48 -- [求助]请问这个公式怎么修改才是对的 代码如下,BPC[1]=BPC[barpos-1] pERD:=20; delta:=0.1; Fraction:=0.25; Price:=(h+l)/2; ebeta :=Cos(360 / PERD),NODRAW; gamma := 1 / Cos(720*delta/PERD); alpha := gamma - SqRt(gamma*gamma - 1); BPM:=0.5*(1-alpha)*(Price -REF(Price,2)); variable:BPC:=0; if barpos>PERD then BPC:=BPM+ebeta*(1+alpha)*BPC[1]-alpha*BPC[2]; te:BPC; 请问怎样修改成金字塔用的公式,有点奇怪, 我把BPC:=BPM+ebeta*(1+alpha)*BPC[1]-alpha*BPC[2]; 改成BPC:=BPM+ebeta*(1+alpha)*BPC-alpha*BPC[barpos-2]; 或者改成 XT:=REF(BPC,1); if barpos>PERD then BPC:=BPM+ebeta*(1+alpha)*BPC-alpha*XT; 或者改成 if (barpos<PERD and barpos>3) then BPC:=BPM; if barpos>PERD then BPC:=BPM+ebeta*(1+alpha)*BPC-alpha*XT; 计算的结果都是不对的,请教版主帮忙指点一下 [此贴子已经被作者于2020/11/8 16:25:04编辑过]
|
|
-- 作者:FireScript -- 发布时间:2020/11/9 9:16:50 -- 不是很明白, 你这个BPC 到底是数组还是什么。 你源代码又到底是哪个软件商的代码?而且你贴的代码也不完整啊。 |
|
-- 作者:vakoth -- 发布时间:2020/11/9 22:03:01 -- 代码是完整的,只剩下线色代码没有写上去了 上面的第一句
|
|
-- 作者:FireScript -- 发布时间:2020/11/10 8:40:43 -- BPC[1]替换成ref(BPC,1) BPC[2] 替换成ref(BPC,2) |
|
-- 作者:vakoth -- 发布时间:2020/11/10 9:52:57 -- 就是测试过不行才来问的 |
|
-- 作者:FireScript -- 发布时间:2020/11/10 9:56:26 -- 那就没办法了。等效替换就是这样子改的。 你要么直接贴最原始的代码,你贴的是你改了一半的代码,我们是没办法知道最初的思路和逻辑到底是这样的,说不定是其他地方问题。BPC[1] 表示上一个K的值,这种写法应该是TB上的吧。 |
|
-- 作者:vakoth -- 发布时间:2020/11/10 19:45:46 -- 我就增加了variable:BPC:=0;这句话,没有其他改动了; 我想请问一下 BPC:=BPM+ebeta*(1+alpha)*BPC[1]-alpha*BPC[2];改成我们金字塔的带变量句子是怎样的 是 variable:BPC:=0 BPC:=BPM+ebeta*(1+alpha)*BPC-alpha*BPC[barpos-2]; 还是怎样的,因为在 if then 语句中是不能用REF的,我知道可以把ref语句在if then之前定义,我想请教一下,我不在之前定义是怎么写的,感觉在这里我有点混乱
|
|
-- 作者:vakoth -- 发布时间:2020/11/10 19:50:02 -- 我测试的时候就发现这个值出现问题了,原公式后面的都是处理和引用这个公式结果的代码,全部发了,没必要了吧,那不是增加版主的工作吗 |
|
-- 作者:yukizzc -- 发布时间:2020/11/10 23:00:14 -- variable:n=0; n:=n+1; d:n; cc:ref(n,1); c2:ref(n,2); 就这样定义好n,然后ref就是调用前面周期的n
|
|
-- 作者:vakoth -- 发布时间:2020/11/15 17:22:15 -- 版主,我试过好多回在别的软件上能计算结果,转到金字塔就计算出来结果就是不对,不知道什么原因 比如下面的算式,在金字塔就是算出来的计算过就是不对,这个应该是每个软件都差不多都有的公式吧,我也知道有修改好的,但是每次遇到类似的问题老是要找原因,很无奈,希望找到问题的根源在哪里 xROC:=100*(close-REF(close, 1))/REF(close, 1); nvi:= iff(vol < vol[1], if(barpos>2,nvi[1], 0)+ xROC,if(barpos>2,nvi[1], 0)); 我在金字塔把它改成 xROC:=100*(close-REF(close, 1))/REF(close, 1); variable:Nvi0:= 0.0; nvi0:= iff(vol < vol[barpos-1], if(barpos>2,nvi0[barpos-1], 0)+ xROC,if(barpos>2,nvi0[barpos-1], 0)); TE:nvi0; [此贴子已经被作者于2020/11/15 17:23:19编辑过]
|