金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 26|回复: 2

通达信公式求翻译

[复制链接]

151

主题

424

帖子

424

积分

Rank: 4

等级: 专业版

注册:
2021-8-3
曾用名:
发表于 2024-12-18 09:05 | 显示全部楼层 |阅读模式
plaintextCopy Code






PARAMETERS: N(10), M(3);VARS: EP(0), AF(0.02), SAR(0);EP=IF(CLOSE>REF(HIGH,N),HIGH,IF(CLOSE<REF(LOW,N),LOW,REF(CLOSE,N)));AF=IF(HIGH>REF(HIGH,N) AND LOW<REF(LOW,N),0.02,IF(HIGH<REF(HIGH,N) AND LOW>REF(LOW,N),-0.02,AF));SAR=SAR+(EP-SAR)*AF;
各位老师好,上面是通达信公式SAR解法,求PEL计算SAR是否和其一致?能提供代码最好,需要对其稍改动


回复

使用道具 举报

2

主题

4429

帖子

4429

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-12-18 09:15 | 显示全部楼层
我们有PEL重新实现的SAR代码。但是我们的sar函数算法是否和其他平台的一致,这个我们无法对比。
这个不仅仅涉及到代码规范的差异,还有代码执行的一些底层机制差异,这种差异我们根本无法去确认的。

[PEL] 复制代码

//-------------------------------------------------------------------

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

 

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

 

variable:sarx=0;
variable:Trendx=0;
variable:EP=0;
variable:AF=0;

 

//计算高点低点的值放到IF前面,防止前面语句直接退出导致最前CYC个周期的数据无法统计到
highprice:=ref(hhv(high,cyc),1);
lowPrice:=ref(llv(low,cyc),1);

 


 

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

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

//显示变量
ENDANDSHOW@; //此为语句标号,GOGO语句可以用这个标号直接跳转到这里
ShowSar:sarx;//PEL复现的SAR
原始SAR:SAR(10,2,20);



回复

使用道具 举报

151

主题

424

帖子

424

积分

Rank: 4

等级: 专业版

注册:
2021-8-3
曾用名:
 楼主| 发表于 2024-12-18 15:29 | 显示全部楼层
太好了,谢谢老师,我学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-12-22 02:10 , Processed in 0.225768 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表