wuzlye 2007-11-11 20:44
飞狐等周期源码
求教各位老师,如何利用光标函数在相隔固定的周期处(比如15周期)画垂直线?虽然我用反复累加的方法也写了出来并在一定范围内也可向未来延伸,但方法太笨了~我想利用循环函数应能简捷地表达出来,就如下面我以前在网上收集的一位老师的动态黄金分割周期公式的表达方式一样(向原创者致敬)~烦请各位老师费心~~
tm1:=5;tm2:=8;
tj:=datacount-BARSSINCE(c);
for i=datacount downto 1 do begin
if tj[i]=tm1 then begin
tj[i]:=tm1;
tm1:=tm2;
tm2:=tm2+tj[i];
end;else tj[i]:=0;
end;
v2:=datacount-SYSPARAM(1);
tt:=refx(tj,v2);
VERTLINE(tt);
DRAWNUMBER(tt,SYSPARAM(4),tt,0);
DRAWNUMBER(tt,SYSPARAM(5),date,0);
tm1:=5;tm2:=8;
tj:=BARSLAST(BARPOS=SYSPARAM(1))+1;
for i=SYSPARAM(1) to datacount do begin
if tj[i]=tm1 then begin
tj[i]:=tm1;
tm1:=tm2;
tm2:=tm2+tj[i];
end;else tj[i]:=0;
end;
VERTLINE(tj),COLORYELLOW;
DRAWNUMBER(tj,SYSPARAM(4),tj,0);
DRAWNUMBER(tj,SYSPARAM(5),date,0);
bajatje 2007-11-11 21:16
画垂直线(mod(barpos-1,N)=0);
画垂直线(mod(datacount-barpos,N)=0);//倒计
wuzlye 2007-11-12 09:31
感谢bajatje老师,我将细细揣摩您的编写思路~周期线如能随光标移动且两线(含两线)相隔15周期(比如光标指示的k线序号是10,那么下一个垂线就画在k序24处)就更好了,再次感谢bajatje老师~
bajatje 2007-11-12 09:45
画垂直线(系统参数(1)=barpos+N or 系统参数(1)=barpos-N or 系统参数(1)=barpos);//画三条线
wuzlye 2007-11-12 10:02
感谢bajatje老师~
mssz103 2007-11-12 11:43
等周期画平行线源码 老师写个 我要 :d:
bajatje 2007-11-12 13:42
不太明白
发个图看看
不方 2007-11-12 19:00
[quote]原帖由 [i]bajatje[/i] 于 2007-11-12 13:42 发表 [url=http://bbs.fjfox.com/redirect.php?goto=findpost&pid=372548&ptid=42062][img]http://bbs.fjfox.com/images/common/back.gif[/img][/url]
不太明白
发个图看看 [/quote]
如何象下图那样,只在光标激活时出现画线,并标出时间窗数字.只要光标之前出现划线和不同的数值.
[[i] 本帖最后由 不方 于 2007-11-12 19:01 编辑 [/i]]
mssz103 2007-11-12 20:03
[quote]原帖由 [i]mssz103[/i] 于 2007-11-12 11:43 发表 [url=http://bbs.fjfox.com/redirect.php?goto=findpost&pid=372533&ptid=42062][img]http://bbs.fjfox.com/images/common/back.gif[/img][/url]
等周期画平行线源码 老师写个 我要 :d: [/quote]
简单说就是等价画平行线
bajatje 2007-11-12 20:31
越发糊涂了
水平线?斜线?
画在什么地方?
长短?
南客 2007-11-13 09:14
给一段示例代码:[code]{费波纳契周期}
ss:=sysparam(1);
sp:=ss-if(ss>254,255,ss);
a:=1;b:=2;
tj:=barpos=sp;
for i=1 to 30 do begin
k:=b;
b:=a+b;
tj:=tj or barpos=sp+b-1,shift;
a:=k;
end;
vertline(tj),shift255;
drawnumber(tj,sysparam(4),barssince(tj)+1,0),shift255;
drawnumber(tj,sysparam(5),count(tj,0),0),shift255;[/code]
南客 2007-11-13 09:22
[code]{等周期线}
input:k(5,1,999);//周期间隔
ss:=sysparam(1);
sp:=ss-if(ss>254,255,ss);
tj:=barpos=sp;
for i=1 to 30 do begin
b:=i*k;
tj:=tj or barpos=sp+b,shift;
end;
vertline(tj),shift255;
drawnumber(tj,sysparam(4),barssince(tj),0),shift255;[/code]
wuzlye 2007-11-13 10:21
刚上来又看到南客老师的回复,很感动~再次感谢bajatje老师和南客老师~(在我印象中,好像我一楼引用的公式也是南客老师写的吧?----忘了出处不敢确定,因为南客老师写的经典公式太多了,汗~);我将bajatje老师写的公式稍稍变通了一下,已大部分解决了问题,只是无法将周期往后偏移,恰又南客老师写了公式,我将仔细参研(因为我才学公式,基础太差了);另再烦劳bajatje老师和南客老师,我想只利用系统参数(6)的固定百分比(比如12.5%)画出间隔相同的多条上下百分比线(就像飞狐系统中的黄金分割A一样),我用反复相乘百分数的笨法虽然也写了出来,但感觉太繁琐,能不能也用循环的方式表达出来?再烦劳bajatje老师和南客老师费心~敬礼~
wuzlye 2007-11-13 11:28
另外还有我在网上收集的南客老师的下面这个公式,我引入后总是显示:语法错误。问题出在哪呢?
主图叠加公式:时间周期线示例代码
input:n(5,5,100);//参数定义
zig(1,n);//高点
ff:=PEAKBARS(1,n,1);
ff:=if(ff<6,PEAKBARS(1,n,2),ff);
barst:=sysparam(1);
variable:zq[序列数据量/2]:=1.236;
zq[2]:=1.309;zq[3]:=1.382;zq[4]:=1.5;
zq[5]:=1.618;zq[6]:=1.764;zq[7]:=2;zq[8]:=2.618;
zq[9]:=3;zq[10]:=3.236;zq[11]:=4.236;zq[12]:=5.236;//周期线间隔比例,可另行定义
tj:=ff[barst]=barst-barpos;
for i=1 to 12 do tj:=tj or barpos-barst=round((zq-1)*ff[barst]+0.5);
VERTLINE(tj),POINTDOT,COLORMAGENTA;
{必须打开十字光标才可以正常使用。自动寻找高点,可另加参数,改成高低点两用。公式含义:当K线与高点的时间间隔为十字光标与高点的时间间隔的等于指定比例时,显示竖线。即所谓的时间预测,如果您有好的测试方法,可以仿此代码编制。这段代码,进行适当的改造,可以向未来延伸,有兴趣的可以自行研究(提示:使用shift函数)。}
bajatje 2007-11-13 11:39
[quote]原帖由 [i]wuzlye[/i] 于 2007-11-13 11:28 发表 [url=http://bbs.fjfox.com/redirect.php?goto=findpost&pid=372634&ptid=42062][img]http://bbs.fjfox.com/images/common/back.gif[/img][/url]
另外还有我在网上收集的南客老师的下面这个公式,我引入后总是显示:语法错误。问题出在哪呢?
主图叠加公式:时间周期线示例代码
input:n(5,5,100);//参数定义
zig(1,n);//高点
ff:=PEAKBARS(1,n,1);
ff:= ... [/quote]
input:n(5,5,100);//参数定义
zig(1,n);//高点
ff:=PEAKBARS(1,n,1);
ff:=if(ff<6,PEAKBARS(1,n,2),ff);
barst:=sysparam(1);
variable:zq[序列数据量/2]:=1.236;
zq[2]:=1.309;zq[3]:=1.382;zq[4]:=1.5;
zq[5]:=1.618;zq[6]:=1.764;zq[7]:=2;zq[8]:=2.618;
zq[9]:=3;zq[10]:=3.236;zq[11]:=4.236;zq[12]:=5.236;//周期线间隔比例,可另行定义
tj:=ff[barst]=barst-barpos;
for i=1 to 12 do
tj:=tj or barpos-barst=round((zq[I]-1)*ff[barst]+0.5);
VERTLINE(tj),POINTDOT,COLORMAGENTA;
bajatje 2007-11-13 11:43
[quote]原帖由 [i]wuzlye[/i] 于 2007-11-13 10:21 发表 [url=http://bbs.fjfox.com/redirect.php?goto=findpost&pid=372630&ptid=42062][img]http://bbs.fjfox.com/images/common/back.gif[/img][/url]
刚上来又看到南客老师的回复,很感动~再次感谢bajatje老师和南客老师~(在我印象中,好像我一楼引用的公式也是南客老师写的吧?----忘了出处不敢确定,因为南客老师写的经典公式太多了,汗~);我将bajatje老师写的公 ... [/quote]
这个只能按你的方法
水平轴上可以一句输出多条垂直线
反过来垂直轴上就不行了
wuzlye 2007-11-13 11:47
感谢bajatje老师,使我在图上直观地看到了公式的原貌~:cool: :cool: :cool:
wuzlye 2007-11-13 11:53
[quote]原帖由 [i]bajatje[/i] 于 2007-11-13 11:43 发表 [url=http://bbs.fjfox.com/redirect.php?goto=findpost&pid=372636&ptid=42062][img]http://bbs.fjfox.com/images/common/back.gif[/img][/url]
这个只能按你的方法
水平轴上可以一句输出多条垂直线
反过来垂直轴上就不行了 [/quote]
是的,我也体会到了~真诚地感谢bajatje老师的无私相助~
页:
[1]