以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]这个问题很关键可能很有效  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=13552)

--  作者:xian_0_9
--  发布时间:2012/8/8 23:15:02
--  [求助]这个问题很关键可能很有效

INPUT:CYC(10,1,100,2);
RUNMODE:0; //使用逐周期运行模式

 

//保证variable声明的变量都尽量在公式的最前面,防止带有IF语句的分支执行影响变量的初始化
variable:Step = 2 / 100; //步长
variable:fMax = 20 / 100; //最大值

 

variable:sarx=0;
variable:Trend=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
  //看跌
  Trend:= -1;
  sarx:=highprice;
 end
 else
 begin
  //看涨
  Trend:= 1;
  sarx:=lowPrice;
 end
 GOTO ENDANDSHOW;//跳转到末尾直接显示
End

//判断出这些日子数据的上涨,或者下跌
if Trend > 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
  trend:=-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
  Trend := 1;
  EP := 1;
  AF := Step;
 end
 sarx := fSar;
end

//显示变量
ENDANDSHOW@; //此为语句标号,GOGO语句可以用这个标号直接跳转到这里
ShowSar:sarx;

 

 

 

把这个使用金字塔PEL语言实现的SAR,加工成每天单独计算的。使用的CYC参数原来是前期高点改成当天最高点或者最低点。谢谢老师!!


--  作者:RogarZ
--  发布时间:2012/8/9 8:38:55
--  
这个做不到哦。
当天最高点和最低点 只有等收盘以后才知道是多少
所以 一般都是用前期高点和低点为参考

--  作者:xian_0_9
--  发布时间:2012/8/9 8:55:30
--  

我的意思是当时当天的最高点和最低点。。。这还不行吗?


--  作者:xian_0_9
--  发布时间:2012/8/9 9:21:09
--  
我只会表达一下还不会写。如果之前的数据超过15根,CYC用前期最高价或者最低价。否则用当天最高价或者最低价。求帮写!
--  作者:jinzhe
--  发布时间:2012/8/9 9:24:05
--  

variable:hh:=0;

if time<>ref(time,1) and h>hh then hh:=h;


--  作者:xian_0_9
--  发布时间:2012/8/9 14:31:27
--  
?加入楼上的也不好使啊