欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 对数坐标下的黄金分割线计算公式

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2931人关注过本帖树形打印复制链接

主题:对数坐标下的黄金分割线计算公式

帅哥哟,离线,有人找我吗?
popypopy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
对数坐标下的黄金分割线计算公式  发帖心情 Post By:2021/1/19 15:24:30    Post IP:123.118.72.235[只看该作者]

我用常规的0.618,0.382等规则计算得出的黄金分割点和金字塔软件里用黄金分割线画线工具画出的对不上,我猜测是因为k仙途默认用的对数坐标导致的。
请问在对数坐标下,各个黄金分割点的计算公式应该怎么写?

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/19 16:32:28    Post IP:58.246.57.26[只看该作者]

这个我们想办法核实下吧。试了下,研究半天没搞清楚和正常坐标为什么会有数值差异。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
popypopy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:82 积分:0 威望:0 精华:0 注册:2020/9/21 10:56:16
  发帖心情 Post By:2021/1/21 1:01:43    Post IP:123.118.72.235[只看该作者]

我先在忽略默认的对数坐标做了一个黄金分割线公式,基本符合我的使用需求,但是有个细节问题我搞不定,当画线数值命中规则发生变化情况时,之前默认按照90长度画线就会和新的画线产生重叠,导致画面太乱影响数据的查看,如下图红圈所示,符合新的条件的黄金分割线和之前画的线重叠了:


图片点击可在新窗口打开查看此主题相关图片如下:wx20210121-005745@2x11.png
图片点击可在新窗口打开查看
怎样写才能避免这种情况,当命中规则的黄金分割线发生变化时,之前的画线就中止在新黄金分割线之前的位置

以下是我的代码:

//黄金分割
90高点:=hhv(high,90);90高点位:=hhvbars(high,90);90低点:=llv(low,90);90低点位:=llvbars(low,90);
90前高:=if(90高点/ref(high,90高点位-10)>1.1 and 90高点/ref(high,90高点位+10)>1.1,90高点,0);
90前低:=if(90低点/ref(low,90低点位-10)<0.9 and 90低点/ref(low,90低点位+10)<0.9,90低点,0);
90高差:=90高点-90低点;
90波段:=90前高>0 and abs(前高价_2-90高点)/90高点>0.03 and 前高位置_2>90高点位;
90触底回升:=90低点位<90高点位 and 90波段;
90-382:=90低点+90高差*0.382;90-618:=90低点+90高差*0.618;90-中位:=90低点+90高差*0.5;
90触顶下跌:=90低点位>90高点位 and 90波段;
线长:=if(前高位置_1<ref(90高点位,1),90高点位-前高位置_1,90);
drawsl(90波段 and not(ref(90波段,1)),90高点+90高差*1,0,线长,3,colorgray,1,vtDashDot);
drawsl(90波段 and not(ref(90波段,1)),90高点+90高差*0.618,0,线长,3,colorgray,1,vtDot);
drawsl(90波段 and not(ref(90波段,1)),90高点+90高差*0.5,0,线长,3,colorgray,1,vtDot);
drawsl(90波段 and not(ref(90波段,1)),90高点+90高差*0.382,0,线长,3,colorgray,1,vtDot);
drawsl(90波段 and not(ref(90波段,1)),90高点,0,线长,3,colorgray,1,vtDASH);
drawsl(90波段 and not(ref(90波段,1)),90低点,0,线长,3,colorgray,1,vtDASH);
drawsl(90波段 and not(ref(90波段,1)),90低点+90高差*0.382,0,线长,3,colorgray,1,vtDot);
drawsl(90波段 and not(ref(90波段,1)),90低点+90高差*0.5,0,线长,3,colorgray,1,vtDot);
drawsl(90波段 and not(ref(90波段,1)),90低点+90高差*0.618,0,线长,3,colorgray,1,vtDot);
DRAWTEXT(90波段 and not(ref(90波段,1)),90高点+90高差*1,'2',COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90高点+90高差*0.618,'1.618',COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90高点+90高差*0.5,'1.5',COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90高点+90高差*0.382,'1.382',COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90低点+90高差*0.382,'0.382',COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90低点+90高差*0.5,'0.5',COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90低点+90高差*0.618,'0.618',COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90高点,'90高点 '&NUMTOSTR(90高点,3),COLORwhite);
DRAWTEXT(90波段 and not(ref(90波段,1)),90低点,'90低点'&NUMTOSTR(90低点,3),COLORwhite);

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/21 9:47:58    Post IP:58.246.57.26[只看该作者]

这个相当于使得之前的画线条件失效。目前没有好的办法,除非用未来函数操作。指标需要在序列模式下执行才行。
参考我这里的一个操作思路。
ma4:ma(c,4);
ma6:ma(c,6);
majc:cross(ma4,ma6);

cd:majc;
ctx:refx(count(cd,0),DATACOUNT-BARPOS);//获取最新K上cd发生的次数
ctc:count(cd,0);//当前K位置发生的次数

drawsl(cd and ctc=ctx ,h,0,10,3,colorgray,1,vtDashDot);//仅在最后一次cd满足位置画线 前面的自动失效


命数如织,当如磐石。
 回到顶部