以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 麻烦老师把这个技术指标公式改为交易公式,谢谢! (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=155473) |
-- 作者:maxuser2004 -- 发布时间:2017/6/27 16:03:47 -- 麻烦老师把这个技术指标公式改为交易公式,谢谢! //sar是个很有用的处理止损功能的函数,由于算法特殊,普通的软件的公式系统是无法进行描述的,这里我们将向大家展示金字塔PEL语言强大的算法描述功能,可以简单实现SAR算法功能。此外,用户可以通过该公式算法,加入自己的代码,进行特定的实盘操作。 INPUT:CYC(10,1,100,2); RUNMODE:0; //使用逐周期运行模式 //保证variable声明的变量都尽量在公式的最前面,防止带有IF语句的分支执行影响变量的初始化 variable:Step = 2 / 100; //步长 variable:fMax = 20 / 100; //最大值 variable:sarx=0; variable:T=0; variable:EP=0; variable:AF=0; //计算高点低点的值放到IF前面,防止前面语句直接退出导致最前CYC个周期的数据无法统计到 highprice:=ref(hhv(high,cyc),1); lowPrice:=ref(llv(low,cyc),1); 原始SAR:SAR(10,2,20); if barpos <= Cyc then exit;//不到CYC的统计周期,直接退出等待下个周期再做判断 if barpos = cyc+1 then begin af:=Step; ep:=-1; if (high[barpos]-high[barpos-1])+(low[barpos]-low[barpos-1]) > 0 then begin //看跌 T:= -1; sarx:=highprice; end else begin //看涨 T:= 1; sarx:=lowPrice; end GOTO ENDANDSHOW;//跳转到末尾直接显示 End //判断出这些日子数据的上涨,或者下跌 if T > 0 then begin //是否为跳转标志 if ep > 0 then begin sarx:=lowPrice; EP:=-1; GOTO ENDANDSHOW;//跳转到末尾直接显示 end //如果今日最高价大于前N的最高价,加速因子需要增加 if high > highprice then begin af := af+step; if af > fmax then af := fmax; end fsar := sarx + af * (highprice - sarx); //是否跳转 if fsar > low then begin T:=-1; ep:=1; af:=step; end sarx:=fsar; end else begin if ep > 0 then begin sarx:=highprice; ep:=-1; GOTO ENDANDSHOW; //跳转到末尾直接显示 end //看跌 if low < lowPrice then begin af := af + step; if af > fmax then af := fmax; end fsar := sarx + af * (lowprice-sarx); //是否跳转 if fSar < High then begin T := 1; EP := 1; AF := Step; end sarx := fSar; end //显示变量 ENDANDSHOW@; //此为语句标号,GOGO语句可以用这个标号直接跳转到这里 ShowSar:sarx; 谢谢老师!
|
-- 作者:wenarm -- 发布时间:2017/6/27 16:15:21 -- 请明确需求,以及需求和上述代码中关系。 |
-- 作者:maxuser2004 -- 发布时间:2017/7/4 11:42:54 -- 交易信号产生条件 若上升过程,s a r被价格下穿,则卖空平多。 |
-- 作者:maxuser2004 -- 发布时间:2017/7/4 11:44:15 -- 下降过程反之亦然 下降过程反之亦然 |
-- 作者:wenarm -- 发布时间:2017/7/4 12:17:12 -- 怎么定于上升和下降? |
-- 作者:maxuser2004 -- 发布时间:2017/7/5 9:21:06 -- sar随着C上升而上升即为上升;SAR随着C下降而下降为下降。主要是,我看不懂你们技术指标公式中定义的上升和下降过程,就是找不到这块,写不出来。麻烦老师指导一下,谢谢 |
-- 作者:pyd -- 发布时间:2017/7/5 9:37:04 -- c>ref(c,1) and sar>ref(sar,1) ;//c 和sar都上升 |
-- 作者:wenarm -- 发布时间:2017/7/5 10:05:56 -- 你一楼给的是通过编程实现sar函数。我们不建议用户在策略中使用goto 这类跳转语句。
你的需求如下 mysar:SAR(10,2,20);
end if mysar<ref(mysar,1) and CROSS(c,mysar) then begin end
|
-- 作者:maxuser2004 -- 发布时间:2017/7/5 11:15:43 -- 不用GOTO程序该如何实现SAR? 又如:SAR(10,2,20)表示计算10日抛物转向,步长为2%,极限值为20% 20%该如何理解?
|
-- 作者:wenarm -- 发布时间:2017/7/5 11:26:34 -- SAR函数不就是现成的吗。 你一楼的公式实现的功能等价于SAR函数。 至于极限值参数的作用意义,你可以询问下做交易的人。 |