以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 论坛上的SAR算法如何理解 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=79100) |
-- 作者:sadrick -- 发布时间:2015/5/27 18:35:53 -- 论坛上的SAR算法如何理解 下面的黄色部分 我觉得有点多余 但去掉的话又和原图偏离 请指教!!!! INPUT:CYC(10,1,100,2);
//保证variable声明的变量都尽量在公式的最前面,防止带有IF语句的分支执行影响变量的初始化
variable:sarx=0;
//计算高点低点的值放到IF前面,防止前面语句直接退出导致最前CYC个周期的数据无法统计到
原始SAR:SAR(10,2,20);
if barpos <= Cyc then if barpos = cyc+1 then //判断出这些日子数据的上涨,或者下跌 //显示变量 |
-- 作者:jinzhe -- 发布时间:2015/5/28 8:49:41 -- 请说出理由,论坛里面的是经过验证之后正确的,你的感觉不靠谱 |
-- 作者:sadrick -- 发布时间:2015/5/28 9:43:16 -- 如下如题如下 老师 ,或者这样说吧 ,因为sar的算法有很多种 ,特别是转折点的定义 , 所以我可以接受金字塔的写法 ,但我还没弄清楚金字塔控制语句的语法机制,所以感觉怪怪的 ,,, 比如说当某个点的SAR满足最后的的那段条件并执行
if fSar < High then begin YTrend := 1; EP := 1; AF := Step; end sarx := fSar; 此时的ytrend和EP 被重新赋予1的值 当计算下一个点时 ,公式是否从头到尾再算一遍????如果又重新整个公式算一遍 ,那么上面这样的赋值好像没意义 因为公式的一开始 又执行了一遍 if barpos = cyc+1 then begin af:=Step; ep:=-1; 或者新的点计算是从哪里开始 ,,, 从我自己手工计算比照了一下 ,似乎新的点是从下面那里开始的,,为什么可以这样 if YTrend > 0 then begin //是否为跳转标志 if ep > 0 then begin sarx:=lowPrice; EP:=-1; GOTO ENDANDSHOW;//跳转到末尾直接显示 end 麻烦老师解答 因为我想将文华的模型里的sar改成金字塔语言的,谢谢! |
-- 作者:jinzhe -- 发布时间:2015/5/28 10:10:29 -- 不会, if barpos = cyc+1 then 这个条件限定了,只会在当前k线图第11根k线判断一次,后面的k线不会重复判断
[此贴子已经被作者于2015/5/28 10:10:46编辑过]
|
-- 作者:sadrick -- 发布时间:2015/5/28 11:07:55 -- 如下如题如下 这里的限制条件弄明白了 但上面的例子还有疑惑 当上一个点满足最后的那段条件 if fSar < High then begin YTrend := 1; EP := 1; AF := Step; end sarx := fSar; 此时的ytrend和EP 被重新赋予1的值 到下一个点计算时 , 为什么可以用上一个点被新赋值的ytrend和ep(等于1)作为条件 从下面的句子开始重新判断计算 这里有什么机制 有种循环的现象 if YTrend > 0 then begin //是否为跳转标志 if ep > 0 then begin sarx:=lowPrice; EP:=-1; GOTO ENDANDSHOW;//跳转到末尾直接显示 end 这里是最不明白的 麻烦老师讲解一下
[此贴子已经被作者于2015/5/28 11:09:06编辑过]
|
-- 作者:jinzhe -- 发布时间:2015/5/28 11:28:42 -- 这里已经判断是否跳转了,
//是否跳转
要fSar < High 这条件满足之后,才会赋值,同时表示跳转 |
-- 作者:sadrick -- 发布时间:2015/5/28 12:37:17 -- 如下如题如下 不好意思 我表达不清楚 我是说假设上个点已经满足条件fSar < High并重新赋值 trend1 := 1; EP := 1;新的一根BAR时,再次从下面代码开始计算 , 为什么可以用上一个点的ytrend和EP(重新被赋值等于1)的值作为新的一个点的判断条件, 是IF的机制可以可样使用吗 if YTrend > 0 then begin //是否为跳转标志 if ep > 0 then begin sarx:=lowPrice; EP:=-1; GOTO ENDANDSHOW;//跳转到末尾直接显示 end 。。。 。。。 。。。 |
-- 作者:jinzhe -- 发布时间:2015/5/28 13:19:50 -- 根据上跟k线的结果来进行计算,这个有什么不对吗? |
-- 作者:sadrick -- 发布时间:2015/5/28 13:25:43 -- 如下如题如下 因为一般我们学的简单模型语句都是根据这根K已定义的变量来计算 ,要判断条件 也是使用这根K的值 , 很少用上一根K的变量的值 , 要用的话又要重新定义一次变量 ;而这里似乎就可以循环使用 按照老师的说法 我举个例子 我原本的想法是 ,5 10 均线金叉就将1的值赋予A和B ,之后每一根bar b的值加1 ,直到新的金叉产生 ,又重新将1赋值给AB 但写出来之后 B的值指挥不断增加 ,即新的金叉条件成立 也一样 请问哪里出问题了,,麻烦老师! VARIABLE:A=0; VARIABLE:B=0; ma5:=ma(c,5); ma10:=ma(C,10); IF CROSS(MA5,MA10) THEN BEGIN A:=1; B:=1: GOTO ENDANDSHOW;/ END IF A>0 THEN B:=1+B; ENDANDSHOW@; SA:A; SB:B; |
-- 作者:jinzhe -- 发布时间:2015/5/28 13:26:37 -- 这个不是循环的值,而是全局变量 用variable定义全局变量之后, 后面计算的值,都是根据上一根k线计算的 |