26 12
发新话题
打印

请教代码表示方法:每月第N个交易日

请教代码表示方法:每月第N个交易日

比如:每月第1个交易日
用公式代码如何表示
蚂克狮

TOP

参考如下:
tj:=month<>ref(month,1);
ts:barslast(tj)+1;

TOP

这个是什么

TOP

引用:
南客 于 2005-1-6 10:58 AM 写道:
参考如下:
tj:=month<>ref(month,1);
ts:barslast(tj)+1;
谢谢南客老师!不知每一周的第几天如何编写?

TOP

引用:
joneslee 于 2005-1-6 18:56 写道:
谢谢南客老师!不知每一周的第几天如何编写?
复制内容到剪贴板
代码:
tj:=week<>ref(week,1);
ts:barslast(tj)+1;

TOP

引用:
hx817 于 2005-1-6 09:46 PM 写道:
复制内容到剪贴板
代码:
tj:=week<>ref(week,1);
ts:barslast(tj)+1;
老师week是什么?涵数表里没的呀?

TOP

呵呵,想当然,错啦
复制内容到剪贴板
代码:
tj:=WEEKDAY<ref(WEEKDAY,1);
ts:barslast(tj)+1;

TOP

引用:
hx817 于 2005-1-6 10:43 PM 写道:
呵呵,想当然,错啦
复制内容到剪贴板
代码:
tj:=WEEKDAY<ref(WEEKDAY,1);
ts:barslast(tj)+1;
你这个好象放长假会错的!
要不会错很麻烦的,我也不会的!

TOP

引用:
股市骑兵00 于 2005-1-6 23:20 写道:
你这个好象放长假会错的!
要不会错很麻烦的,我也不会的!
停牌时间久的话,的确有可能会出错,包括我上面的也可能会错。

TOP

我上面的代码要准确的话,修正如下:
tmp:=intpart(date/100);
tj:=tmp<>ref(tmp,1);
ts:barslast(tmp);

TOP

“每一周的第几天如何编写?”

参考如下:

tj:=weekday-ref(weekday,1)<>DATEDIFF(ref(date,1),date);
ts:barslast(tj)+1;

TOP

引用:
南客 于 2005-1-7 12:28 AM 写道:
我上面的代码要准确的话,修正如下:
tmp:=intpart(date/100);
tj:=tmp<>ref(tmp,1);
ts:barslast(tmp);
老师字打错了,日期很烦的,我还要再想想。

tmp:=intpart(date/100);
tj:=tmp<>ref(tmp,1);
ts:barslast(tj);

TOP

那我刚帮朋友写了个,真实月均线变化(不含未来数据)那也错啦!
我改到飞狐里改不好,请二位老师有空看看!
分析家我会源码:
复制内容到剪贴板
代码:
{FXJ日线图任意月均线真实变化}
INPUT:N(3);{均线月数调节}
xx:=MONTH<>ref(MONTH,1);a:=0;
yy:=sum(xx,0)-n+1;yy1:=sum(xx,0);
for i=1 to BARPOS-1 do
if ref(yy1,i)=yy then begin
a:=i;
break;
end;
if n-2<yy1 then
月均线:if(a=0,(sum(xx*ref(c,1),a)+c)/n,(sum(xx*ref(c,1),a+1)+c)/n);
飞狐改了不对源码:
复制内容到剪贴板
代码:
{日线图任意月均线真实变化}
INPUT:N(3);{均线月数调节}
xx:=MONTH<>ref(MONTH,1);a:=0*c;
yy:=sum(xx,0)-n+1;yy1:=sum(xx,0);
for j=2 to DATACOUNT do
for i=j-1 downto 1 do
if yy1[i]=yy[j] then begin
a[j]:j-i;
break;
end;

//if n-2<yy1 then//这里不算,上面越界!
//月均线:if(a=0,(sum(xx*ref(c,1),a)+c)/n,(sum(xx*ref(c,1),a+1)+c)/n);

TOP

MONTH<>ref(MONTH,1);
这行语句,在特殊情况下会判断出错,比如某股,去年6月2日开始停牌,今年6月2日(或今年6月的某天)开始复牌

TOP

引用:
南客 于 2005-1-7 01:09 AM 写道:
MONTH<>ref(MONTH,1);
这行语句,在特殊情况下会判断出错,比如某股,去年6月2日开始停牌,今年6月2日(或今年6月的某天)开始复牌
这个经老师一说我明白了,就是上面飞狐的循环不知那里错了,说越界?
我也不急,老师有空帮我看看就行了,谢谢!

TOP

引用:
股市骑兵00 于 2005-1-7 12:56 AM 写道:
那我刚帮朋友写了个,真实月均线变化(不含未来数据)那也错啦!
我改到飞狐里改不好,请二位老师有空看看!
分析家我会源码:
[code]
{FXJ日线图任意月均线真实变化}
INPUT:N(3);{均线月数调节}
xx:=MONTH& ...
没仔细看,不过这类问题,可以不用循环,参考sumbars()函数的用法。

TOP

引用:
南客 于 2005-1-7 01:20 AM 写道:
没仔细看,不过这类问题,可以不用循环,参考sumbars()函数的用法。
好的,我再想想,谢谢!

TOP

if yy1[i]=yy[j] then

这行语句,你推敲一下,循环的时候,最小 i 等于多少?假如 i 最小的时候是i=1,那么yy1[1]是否可以?为什么?

前面你实际上已经考虑到了 j 应该从2开始循环,但忘了还要考虑 j 的起始循环位置。

TOP

引用:
南客 于 2005-1-7 01:27 AM 写道:
if yy1=yy[j] then

这行语句,你推敲一下,循环的时候,最小 i 等于多少?假如 i 最小的时候是i=1,那么yy1[1]是否可以?为什么?

前面你实际上已经考虑到了 j 应该从2开始循环,但忘了还要考虑 j 的起始 ...
很迟了打扰老师了,还没想明白,再看看XX的变化,我再想过。

本贴由 股市骑兵00 于 2005-1-7 01:34 最后编辑

TOP

当 J=1 时,I=>J-1=>1,这时,yy1[I]就是yy1[1],而yy1这个序列变量(数组)的有效起始位置是从第2根K线开始的。

TOP

yy1[1]不可能出现的,最小是yy1[2],就是没想到怎么改,
睡觉了,明天再说,老师晚安!

TOP

你上面循环代码中的 a ,大概是这样的吧:
a:=sumbars(xx,n-1);

TOP

参考lbound()函数的用法

骑兵兄晚安

TOP

引用:
南客 于 2005-1-7 01:45 AM 写道:
你上面循环代码中的 a ,大概是这样的吧:
a:=sumbars(xx,n-1);
哇,老师真棒一下子就求对了,A是我要的。  
以前看过您sumbars涵数的贴子,时间长了也很少用忘了。
看来还要多温习一下的!

TOP

 26 12
发新话题