CODE:[Copy to clipboard]887.问:
在电脑解盘中:
EXPLAIN(x1,提示平仓一半),有没有办法让"提示平仓一半"不重复出现啊!
因为在一段时间x1条件会反复出现.
count(x1,m)=1;
答(南客):
如何使买入信号、卖出信号一一对应
(1)
在设计公式时,我们经常遇到这样的问题,如何使买卖信号一一对应?
比如下面的代码:
input.:n(26,5,300),p(2,0.1,10);
close;
mid : ma(close,n);
upper: mid + p*std(close,n);
lower: mid - p*std(close,n);
tjb:=cross(close,lower);
tjs:=cross(upper,close);
drawicon(tjb,close,4);
drawicon(tjs,close,5);
可以看出,买入信号连续发出多次后,才出现卖出信号,卖出信号连续发出多次后,
才发出买入信号。
(2)
如何过滤连续的买入、卖出信号,使买入后只要没有发出卖出信号,就不再发出买入信号;同样,卖出后只要没有出现买入信号,就不再发出卖出信号。即买入、卖出信号一一对应。
容易想到的是使用过滤函数filter(),但这个函数是难以实现的,因为未来有多少个连续的买入(或卖出)信号是未知的。
另一种方法是,从前一次卖出(或买入)信号开始累加买入(或卖出)信号,如果累加次数等于1,则发出真正的买入(或卖出)信号。
但这里还有一个问题,如果首次信号是卖出信号的话,也应该过滤,因为没有买入哪来卖出?应让首次信号是买入信号才合理。方法是,在第1根K线的位置,虚拟一个卖出信号。
以下是实现上述想法的常规函数代码:
input.:n(26,5,300),p(2,0.1,10);
close;
mid : ma(close,n);
upper: mid + p*std(close,n);
lower: mid - p*std(close,n);
//以下为常规函数处理代码//
tjb:=cross(close,lower);//初始买入信号,可换成其它任意买入条件
tjs:=cross(upper,close);//初始卖出信号,可换成其它任意卖出条件
{以下代码,使买、卖信号一一对应}
tsb:=barssince(tjb);
tss:=barssince(tjs);
if tjs[datacount]<tjb[datacount] then begin
a:=setlbound(tjs,1);
tjs:=tjs or barpos=1;
end;
tjbuy:=count(tjb,barslast(tjs))=1 and tjb; //买入信号
tjsell:=count(tjs,barslast(tjb))=1 and tjs; //卖出信号
drawicon(tjbuy,low,4);
drawicon(tjsell,high,5);
答(cwy):
如下也可解决
input.:n(26,5,300),p(2,0.1,10);
close;
mid:ma(close,n);
upper:mid + p*std(close,n);
lower:mid - p*std(close,n);
tjb:=cross(close,lower);
tjs:=cross(upper,close);
tsb:=barslast(tjb);
tss:=barslast(tjs);
tj1:=tjb and count(tjb,tss+1)<2;
tj2:=tjs and count(tjs,tsb+1)<2;
drawicon(tj1,close,4);
drawicon(tj2,close,5);
允许连续出现2次买入信号或卖出信号
input.:n(26,5,300),p(2,0.1,10);
close;
mid:ma(close,n);
upper:mid + p*std(close,n);
lower:mid - p*std(close,n);
tjb:=cross(close,lower);
tjs:=cross(upper,close);
tsb:=barslast(tjb);
tss:=barslast(tjs);
tj1:=tjb and count(tjb,tss+1)<3;
tj2:=tjs and count(tjs,tsb+1)<3;
drawicon(tj1,close,4);
drawicon(tj2,close,5);
答(股市骑兵00):
1.用循环我试着答一下。
input.:n(26,5,300),p(2,0.1,10),s(1,1,5);//S为允许连续出现信号调节参数!
close;
mid := ma(close,n);
upper: mid + p*std(close,n);
lower: mid - p*std(close,n);
//以下为常规函数处理代码//
tjb:=cross(close,lower);//初始买入信号,可换成其它任意买入条件
tjs:=cross(upper,close);//初始卖出信号,可换成其它任意卖出条件
///////////////////////////////////////////////////////////
m:=0*c;w:=0*c;mm:=0*c;
for i=LBOUND(upper) to datacount do begin
mm:=mm[i-1]+tjb;
m:=m[i-1]+tjb;
w:=w[i-1]+tjs;
if tjs then m:=0;
if tjb then w:=0;
if m<=s and tjb then z:=1;
if w<=s and tjs and mm>0 then t:=1;//首次要发卖出信号去掉and mm>0
end;
drawicon(z,low,4);
drawicon(t,high,5);
2.稍微改下思路试试。
///////////////////////////////////////////////////////////
m:=0*c;w:=0*c;mm:=0*c;
for i=LBOUND(upper) to datacount do begin
mm:=mm[i-1]+tjb;
m:=m[i-1]+tjb;
w:=w[i-1]+tjs;
if w>w[i-1] then m:=0;
if m>m[i-1] or mm=0 then w:=0;
if m-w>s then m:=m[i-1];
if w-m>s then w:=w[i-1];
end;
drawicon(m>ref(m,1),low,4);
drawicon(w>ref(w,1),high,5);
问:
刚刚发现问题。如果将买入、卖出条件改为以下方式,就无法实现信号的对应了。请问老师在买入条件仍然保持“C>MID”,而不是“CROSS(C,MID)”的情况下如何实现?
MID:MA(C,30);
tjb:=C>MID AND L>MID;//初始买入信号,可换成其它任意买入条件
U1:=L<REF(L,BARSLAST(CROSS(TJB,0.5)));
U2:=L<MID;
tjs:=U1 OR U2;//初始卖出信号,可换成其它任意卖出条件
{以下代码,使买、卖信号一一对应}
tsb:=barssince(tjb);
tss:=barssince(tjs);
if tjs[datacount]<tjb[datacount] then begin
a:=setlbound(tjs,1);
tjs:=tjs or barpos=1;
end;
tjbuy:=count(tjb,barslast(tjs))=1 and tjb; //买入信号
tjsell:=count(tjs,barslast(tjb))=1 and tjs; //卖出信号
drawicon(tjbuy,low,4);
drawicon(tjsell,high,5);
答(股市骑兵00):
你的买卖条件不对呀!
tjs//初始卖出信号
tjb//初始买入信号
2个条件自相矛盾了,同时买卖信号都会发的,那你听买的呢,还是卖的呢?
你硬要这个条件,下面的你参考
MID:=MA(C,30);
tjb:=C>MID AND L>MID;
U1:=L<REF(L,BARSLAST(CROSS(TJB,0.5)));
U2:=L<MID;
tjs:=U1 OR U2;//初始卖出信号,可换成其它任意卖出条件
tjb:=tjb and not(tjs);//初始买入信号,可换成其它任意买入条件
{以下代码,使买、卖信号一一对应}
tsb:=barssince(tjb);
tss:=barssince(tjs);
if tjs[datacount]<tjb[datacount] then begin
a:=setlbound(tjs,1);
tjs:=tjs or barpos=1;
end;
tjbuy:=count(tjb,barslast(tjs))=1 and tjb; //买入信号
tjsell:=count(tjs,barslast(tjb))=1 and tjs; //卖出信号
drawicon(tjbuy,low,4);
drawicon(tjsell,high,5);
问:
公式中的“U2”又改了一下:
U2:=C>REF(C,BARSLAST(CROSS(TJB,0.5)));
请教怎样才能在“tjsell”条件成立后,当“C>MID AND L>MID”条件满足时即可产生新的“tjbuy”信号?谢谢!
答(股市骑兵00):
你的买卖条件本身有重叠的问题。肯定有信号损失的,如果以买入信号为基准。
损失卖出信号改为如下表达。
MID:=MA(C,30);
tjb:=C>MID AND L>MID;//初始买入信号,可换成其它任意买入条件
U1:=L<REF(L,BARSLAST(CROSS(TJB,0.5)));
//U2:=L<MID;
U2:=C>REF(C,BARSLAST(CROSS(TJB,0.5)));
tjs:=(U1 OR U2) and not(tjb);//初始卖出信号,可换成其它任意卖出条件
答(cwy):
这个作业不能说是真正的用循环语句来实现,对常规函数使用的考虑还是较多,
如处理第一个卖出信号,实际上我不是做出来而是试出来的,
input.:n(26,5,300),p(2,0.1,10);
close;
mid:ma(close,n);
upper:mid + p*std(close,n);
lower:mid - p*std(close,n);
//以下为常规函数处理代码//
tjb:=cross(c,lower);//初始买入信号,可换成其它任意买入条件
tjs:=cross(upper,c);//初始卖出信号,可换成其它任意卖出条件
tss1:=BARSSINCE(tjb);//第一个卖出信号
///////////////////////////////////////////////////////
fb:=0*c;
fs:=0*c;
for i =n to datacount do begin
fb:=fb[i-1]+tjb;
fs:=fs[i-1]+tjs;
if tjs then fb:=0;
if tjb then fs:=0;
if fb=1 and tjb then fb1:=1;
if fs=1 and tjs then fs1:=1;
end;
drawicon(fb1 ,l,4);
drawicon(fs1 and tss1>2 ,h,5);
QUOTE:
888.问:
在100日内,从股价最低点到最高点,标出0。618。0。382的位置上画出线。
相反从最高到最低,也同样标出2条线
答(股市骑兵00):
hh:hhv(h,100);
ll:llv(l,100);
f1:(hh-ll)*0.618+ll;
f2:(hh-ll)*0.382+ll;
QUOTE:
889.问:
我想只输出指标线,而不输出数值,如何写?
如:ma5:ma9c,5);只输出指标线,而不输出数值
答(bajatje):
别名: 画分段线
所属类别: 绘图函数 参数数量: 2
分段绘制指标线。
用法:
PARTLINE(COND,PRICE),满足COND条件绘制PRICE连线。
例如:PARTLINE(C>REF(C,1),C),colorred表示收盘大于前收以红色绘制收盘价连线。
PARTLINE(1,ma5);
QUOTE:
890.问:
求今日向前有多少根k线的最高价大于且最低价小于今日收盘价?
答(股市骑兵00):
最后周期和光标位统计大致这样。
fc:=c;pg:=datacount;//可改为SYSPARAM(1)光标统计
x:=h>fc[pg] and l<fc[pg];
y:=sum(x,0)-x[pg];
y[pg];
QUOTE:
891.问:
只计算今天与前几日连续符合条件的数量,不是累计相加的数量。
答(股市骑兵00):
n:=5;//天数调节
fc:=c;pg:=SYSPARAM(1);//可改为SYSPARAM(1)光标统计
x:=h>fc[pg] and l<fc[pg];
y:=sum(x,n)-x[pg];
y[pg];
QUOTE:
892.问:
如何取图表内第一根K线到最后一根K线之间的时间差?
要求几天几小时几分钟。
答(hx817):
rj:=date;fz:=time;
d1:=rj[SYSPARAM(3)];d2:=rj[SYSPARAM(2)];
t1:=fz[SYSPARAM(3)];t2:=fz[SYSPARAM(2)];
fh1:=intpart(t1/10000);fh2:=intpart(t2/10000);
fm1:=intpart((t1-fh1*10000)/100);fm2:=intpart((t2-fh2*10000)/100);
fd:=DATEDIFF(d2,d1);
hh:=fh1-fh2;
mm:=fm1-fm2;
if mm<0 then begin
hh:=hh-1;
mm:=mm+60;
end;
if hh<0 then begin
fd:=fd-1;
hh:=hh+24;
end;
天:fd;
时:hh;
分:mm;
QUOTE:
893.问:
如何引用05年4月中旬--6月初,这段时间周期内的最低价。
答(bajatje):
w1:=barslast(date<=m1);
w2:=barslast(date<=m2);
ref(LLv(L,w1),w2);
macd 预计交叉价
d:ema(c,12)LINETHICK;
a:ema(c,26)LINETHICK;
e:=ema(d-a,9);
今日交叉价:(351*ref(e,1)+325*ref(a,1)-297*ref(d,1))/28LINETHICK;
明日交叉价:(351*e+325*a-297*d)/28LINETHICK;
www.g158.com
QUOTE:
894.问:
个数学公式,如何写
{[(1+2+3+4+5)*5-2]*2*3*4+20}*2/64
其中(1+2+3+4+5)这里面是最近5天的收盘价格,其它的数字是常数
是不是用datacount引用前5天的价格?
答(清扬):
((MA(C,5)*5*5-2)*2*3*4+20)*2/64
// MA(C,5)*5 为最近五天收盘价之和
答(hx817):
m1:ma(c,5);
m2:(c+ref(c,1)+ref(c,2)+ref(c,3)+ref(c,4))/5;
QUOTE:
895.问:
帮忙编一个5分钟与60分钟K线同图显示公式.
答(股市骑兵00):
以前做的公式改了下,5分钟K线使用
if DATATYPE<>2 then exit;
bc:=12;sj:=MOD(BARPOS-1,bc)=0 OR BARPOS=1;
zsj:=sum(sj,0);dzsj:=zsj[DATACOUNT]-zsj;
x:=DATACOUNT-BARPOS+1;zq:=SUMBARS(sj,1);
y:=SUMBARS(sj,x-dzsj);y1:=SUMBARS(sj,x-1-dzsj);
开60:ref(o,y-1),LINETHICK0;
高60:if(ISLASTBAR,hhv(h,zq),ref(hhv(h,bc),y1)),LINETHICK0;
低60:if(ISLASTBAR,llv(l,zq),ref(llv(l,bc),y1)),LINETHICK0;
收60:if(ISLASTBAR,ref(c,y1-1),ref(c,y1)),LINETHICK0;
STICKLINE(收60>=开60,收60,开60,7,1),colorred;
STICKLINE(收60>=开60,收60,高60,0.1,1),colorred;
STICKLINE(收60>=开60,开60,低60,0.1,1),colorred;
STICKLINE(收60<开60,收60,开60,7,0),colorcyan;
STICKLINE(收60<开60,开60,高60,0.1,0),colorcyan;
STICKLINE(收60<开60,收60,低60,0.1,0),colorcyan;
涨幅60:收60/ref(收60,1)*100-100,LINETHICK0;
答(股市骑兵00)
要同图
1.建个引用公式名:X5
cc:c;
oo:o;
hh:h;
ll:l;
2.再用下面的公式
if DATATYPE<>2 then exit;
n:=12;pn:=mod(barpos-1,n);
ik:=pn=0 or ISLASTBAR or refx(pn=0,1);
收:"x5.cc#min60",LINETHICK0;
开:"x5.oo#min60",LINETHICK0;
高:"x5.hh#min60",LINETHICK0;
低:"x5.ll#min60",LINETHICK0;
m:=收>=开;w:=收<开;f:=ISLASTBAR*(pn<6);
PARTLINE(pn>0 and m,收),COLORRED;
PARTLINE(pn>0 and m,开),COLORRED;
PARTLINE(pn>0 and w,收),COLORBLUE;
PARTLINE(pn>0 and w,开),COLORBLUE;
STICKLINE(ik and m,开,收,0.1,1),COLORRED;
STICKLINE(ik and w,开,收,0.1,1),COLORBLUE;
STICKLINE((pn=6 or f) and m,收,高,0.1,1),COLORRED;
STICKLINE((pn=6 or f) and m,开,低,0.1,1),COLORRED;
STICKLINE((pn=6 or f) and w,开,高,0.1,1),COLORBLUE;
STICKLINE((pn=6 or f) and w,收,低,0.1,1),COLORBLUE;
QUOTE:
896.问:
求某天(可以设定)到今天的换手率总和。
答(cwy):
RQ:=IF(DATE=1050104,1,0);//在1050104处换入你的日期
N天的换手率总和:SUM(IF(BARSLAST(RQ)>0,V,0),0)/FINANCE(7);
QUOTE:
897.问:
5日ma、10日ma、30日ma相交在一点时,当日股价上穿该点涨停,(包括st),成功率很高
答(hx817):
st:=if(INBLOCK('ST板块') or INBLOCK('*ST板块'),1.05,1.1);
zt:=ROUND(100*st*ref(c,1))/100<=c;
m1:=ma(c,5);
m2:=ma(c,10);
m3:=ma(c,30);
tj:BETWEEN(m1,o,c) and BETWEEN(m2,o,c) and BETWEEN(m3,o,c) and zt
CODE:[Copy to clipboard]898.问:
我想请你帮做一下,就是我用光标在一个点位拉到另一个点位时,就出现一个长方形,在这个长方形里出现三条横线,它们分别在三分之一,三分之二和二分之一的点位上,最好能显示出数据.
摘自158牛股论坛www.g158.com
答(股市骑兵00):
INPUT.:m(48);//周期调节
x:=3;p:=SYSPARAM(1);
ws:=BARPOS;ws1:=if(ws<m,ws,m);
wsp:=p-ws1+1;wsp1:=ws1-1;
h1:=hhv(h,ws1);l1:=llv(l,ws1);
hp:=h1[p];lp:=l1[p];hlpx:=(hp-lp)/x;
if p=1 then exit;
DRAWSL(ws=wsp[p],hp,0,wsp1[p],3);
DRAWSL(ws=wsp[p],lp,0,wsp1[p],3);
DRAWSL(ws=wsp[p],lp+hlpx,0,wsp1[p],3);
DRAWSL(ws=wsp[p],lp+hlpx*2,0,wsp1[p],3);
STICKLINE(ws=wsp[p],hp,lp,0.5,1);
STICKLINE(ws=p,hp,lp,0.5,1);
DRAWNUMBER(ws=wsp[p],hp,hp,2),SHIFT2;
DRAWNUMBER(ws=wsp[p],lp,lp,2),SHIFT2;
DRAWNUMBER(ws=wsp[p],lp+hlpx,lp+hlpx,2),SHIFT2;
DRAWNUMBER(ws=wsp[p],lp+hlpx*2,lp+hlpx*2,2),SHIFT2;
DRAWSL(ws=wsp[p],lp+(hp-lp)/2,0,wsp1[p],3);
QUOTE:
899.问:
前一天的K线振幅为5%以上,跌幅为—3%以上。今天的振幅孕育在昨天的
振幅之内,同时KDJ值均小于20。
答(欣儿):
a1:=ref((h/l-1)*100,1)>5 and (ref(c,1)/ref(c,2)-1)*100<-3 and h<ref(h,1)
and l<ref(l,1);
a2:="kdj.k"<20 and "kdj.d"<20 "kdj.j"<20;
a1 and a2;
QUOTE:
900.问:
节气不在交易日内,如何在离它最近的这一天近似表示出来?
比如:
VAR7:=DRAWTEXT(date=LSOLARTERMDATE(9),0,'*立夏');
VAR8:=DRAWTEXT(date=LSOLARTERMDATE(10),0,'*小满');
VAR9:=DRAWTEXT(date=LSOLARTERMDATE(11),0,'*芒种');
今年内这三个节气都不在交易日内,如何在离它最近的这一天近似表示出来?并与正常能表示的节气区别开来?
答(bajatje):
VAR7:DRAWTEXT(barslast(date<=LSOLARTERMDATE(9))=1,0,'*立夏');
VAR8:DRAWTEXT(barslast(date<=LSOLARTERMDATE(10))=1,0,'*小满');
VAR9:DRAWTEXT(barslast(date<=LSOLARTERMDATE(11))=1,0,'*芒种');
QUOTE:
888.问:
在100日内,从股价最低点到最高点,标出0。618。0。382的位置上画出线。
相反从最高到最低,也同样标出2条线
答(股市骑兵00):
hh:hhv(h,100);
ll:llv(l,100);
f1:(hh-ll)*0.618+ll;
f2:(hh-ll)*0.382+ll;
QUOTE:
889.问:
我想只输出指标线,而不输出数值,如何写?
如:ma5:ma9c,5);只输出指标线,而不输出数值
答(bajatje):
别名: 画分段线
所属类别: 绘图函数 参数数量: 2
分段绘制指标线。
用法:
PARTLINE(COND,PRICE),满足COND条件绘制PRICE连线。
例如:PARTLINE(C>REF(C,1),C),colorred表示收盘大于前收以红色绘制收盘价连线。
PARTLINE(1,ma5);
QUOTE:
890.问:
求今日向前有多少根k线的最高价大于且最低价小于今日收盘价?
答(股市骑兵00):
最后周期和光标位统计大致这样。
fc:=c;pg:=datacount;//可改为SYSPARAM(1)光标统计
x:=h>fc[pg] and l<fc[pg];
y:=sum(x,0)-x[pg];
y[pg];
QUOTE:
891.问:
只计算今天与前几日连续符合条件的数量,不是累计相加的数量。
答(股市骑兵00):
n:=5;//天数调节
fc:=c;pg:=SYSPARAM(1);//可改为SYSPARAM(1)光标统计
x:=h>fc[pg] and l<fc[pg];
y:=sum(x,n)-x[pg];
y[pg];
QUOTE:
892.问:
如何取图表内第一根K线到最后一根K线之间的时间差?
要求几天几小时几分钟。
答(hx817):
rj:=date;fz:=time;
d1:=rj[SYSPARAM(3)];d2:=rj[SYSPARAM(2)];
t1:=fz[SYSPARAM(3)];t2:=fz[SYSPARAM(2)];
fh1:=intpart(t1/10000);fh2:=intpart(t2/10000);
fm1:=intpart((t1-fh1*10000)/100);fm2:=intpart((t2-fh2*10000)/100);
fd:=DATEDIFF(d2,d1);
hh:=fh1-fh2;
mm:=fm1-fm2;
if mm<0 then begin
hh:=hh-1;
mm:=mm+60;
end;
if hh<0 then begin
fd:=fd-1;
hh:=hh+24;
end;
天:fd;
时:hh;
分:mm;
QUOTE:
893.问:
如何引用05年4月中旬--6月初,这段时间周期内的最低价。
答(bajatje):
w1:=barslast(date<=m1);
w2:=barslast(date<=m2);
ref(LLv(L,w1),w2);
macd 预计交叉价
d:ema(c,12)LINETHICK;
a:ema(c,26)LINETHICK;
e:=ema(d-a,9);
今日交叉价:(351*ref(e,1)+325*ref(a,1)-297*ref(d,1))/28LINETHICK;
明日交叉价:(351*e+325*a-297*d)/28LINETHICK;
www.g158.com
QUOTE:
894.问:
个数学公式,如何写
{[(1+2+3+4+5)*5-2]*2*3*4+20}*2/64
其中(1+2+3+4+5)这里面是最近5天的收盘价格,其它的数字是常数
是不是用datacount引用前5天的价格?
答(清扬):
((MA(C,5)*5*5-2)*2*3*4+20)*2/64
// MA(C,5)*5 为最近五天收盘价之和
答(hx817):
m1:ma(c,5);
m2:(c+ref(c,1)+ref(c,2)+ref(c,3)+ref(c,4))/5;
QUOTE:
895.问:
帮忙编一个5分钟与60分钟K线同图显示公式.
答(股市骑兵00):
以前做的公式改了下,5分钟K线使用
if DATATYPE<>2 then exit;
bc:=12;sj:=MOD(BARPOS-1,bc)=0 OR BARPOS=1;
zsj:=sum(sj,0);dzsj:=zsj[DATACOUNT]-zsj;
x:=DATACOUNT-BARPOS+1;zq:=SUMBARS(sj,1);
y:=SUMBARS(sj,x-dzsj);y1:=SUMBARS(sj,x-1-dzsj);
开60:ref(o,y-1),LINETHICK0;
高60:if(ISLASTBAR,hhv(h,zq),ref(hhv(h,bc),y1)),LINETHICK0;
低60:if(ISLASTBAR,llv(l,zq),ref(llv(l,bc),y1)),LINETHICK0;
收60:if(ISLASTBAR,ref(c,y1-1),ref(c,y1)),LINETHICK0;
STICKLINE(收60>=开60,收60,开60,7,1),colorred;
STICKLINE(收60>=开60,收60,高60,0.1,1),colorred;
STICKLINE(收60>=开60,开60,低60,0.1,1),colorred;
STICKLINE(收60<开60,收60,开60,7,0),colorcyan;
STICKLINE(收60<开60,开60,高60,0.1,0),colorcyan;
STICKLINE(收60<开60,收60,低60,0.1,0),colorcyan;
涨幅60:收60/ref(收60,1)*100-100,LINETHICK0;
答(股市骑兵00)
要同图
1.建个引用公式名:X5
cc:c;
oo:o;
hh:h;
ll:l;
2.再用下面的公式
if DATATYPE<>2 then exit;
n:=12;pn:=mod(barpos-1,n);
ik:=pn=0 or ISLASTBAR or refx(pn=0,1);
收:"x5.cc#min60",LINETHICK0;
开:"x5.oo#min60",LINETHICK0;
高:"x5.hh#min60",LINETHICK0;
低:"x5.ll#min60",LINETHICK0;
m:=收>=开;w:=收<开;f:=ISLASTBAR*(pn<6);
PARTLINE(pn>0 and m,收),COLORRED;
PARTLINE(pn>0 and m,开),COLORRED;
PARTLINE(pn>0 and w,收),COLORBLUE;
PARTLINE(pn>0 and w,开),COLORBLUE;
STICKLINE(ik and m,开,收,0.1,1),COLORRED;
STICKLINE(ik and w,开,收,0.1,1),COLORBLUE;
STICKLINE((pn=6 or f) and m,收,高,0.1,1),COLORRED;
STICKLINE((pn=6 or f) and m,开,低,0.1,1),COLORRED;
STICKLINE((pn=6 or f) and w,开,高,0.1,1),COLORBLUE;
STICKLINE((pn=6 or f) and w,收,低,0.1,1),COLORBLUE;
QUOTE:
896.问:
求某天(可以设定)到今天的换手率总和。
答(cwy):
RQ:=IF(DATE=1050104,1,0);//在1050104处换入你的日期
N天的换手率总和:SUM(IF(BARSLAST(RQ)>0,V,0),0)/FINANCE(7);
QUOTE:
897.问:
5日ma、10日ma、30日ma相交在一点时,当日股价上穿该点涨停,(包括st),成功率很高
答(hx817):
st:=if(INBLOCK('ST板块') or INBLOCK('*ST板块'),1.05,1.1);
zt:=ROUND(100*st*ref(c,1))/100<=c;
m1:=ma(c,5);
m2:=ma(c,10);
m3:=ma(c,30);
tj:BETWEEN(m1,o,c) and BETWEEN(m2,o,c) and BETWEEN(m3,o,c) and zt
CODE:[Copy to clipboard]898.问:
我想请你帮做一下,就是我用光标在一个点位拉到另一个点位时,就出现一个长方形,在这个长方形里出现三条横线,它们分别在三分之一,三分之二和二分之一的点位上,最好能显示出数据.
摘自158牛股论坛www.g158.com
答(股市骑兵00):
INPUT.:m(48);//周期调节
x:=3;p:=SYSPARAM(1);
ws:=BARPOS;ws1:=if(ws<m,ws,m);
wsp:=p-ws1+1;wsp1:=ws1-1;
h1:=hhv(h,ws1);l1:=llv(l,ws1);
hp:=h1[p];lp:=l1[p];hlpx:=(hp-lp)/x;
if p=1 then exit;
DRAWSL(ws=wsp[p],hp,0,wsp1[p],3);
DRAWSL(ws=wsp[p],lp,0,wsp1[p],3);
DRAWSL(ws=wsp[p],lp+hlpx,0,wsp1[p],3);
DRAWSL(ws=wsp[p],lp+hlpx*2,0,wsp1[p],3);
STICKLINE(ws=wsp[p],hp,lp,0.5,1);
STICKLINE(ws=p,hp,lp,0.5,1);
DRAWNUMBER(ws=wsp[p],hp,hp,2),SHIFT2;
DRAWNUMBER(ws=wsp[p],lp,lp,2),SHIFT2;
DRAWNUMBER(ws=wsp[p],lp+hlpx,lp+hlpx,2),SHIFT2;
DRAWNUMBER(ws=wsp[p],lp+hlpx*2,lp+hlpx*2,2),SHIFT2;
DRAWSL(ws=wsp[p],lp+(hp-lp)/2,0,wsp1[p],3);
QUOTE:
899.问:
前一天的K线振幅为5%以上,跌幅为—3%以上。今天的振幅孕育在昨天的
振幅之内,同时KDJ值均小于20。
答(欣儿):
a1:=ref((h/l-1)*100,1)>5 and (ref(c,1)/ref(c,2)-1)*100<-3 and h<ref(h,1)
and l<ref(l,1);
a2:="kdj.k"<20 and "kdj.d"<20 "kdj.j"<20;
a1 and a2;
QUOTE:
900.问:
节气不在交易日内,如何在离它最近的这一天近似表示出来?
比如:
VAR7:=DRAWTEXT(date=LSOLARTERMDATE(9),0,'*立夏');
VAR8:=DRAWTEXT(date=LSOLARTERMDATE(10),0,'*小满');
VAR9:=DRAWTEXT(date=LSOLARTERMDATE(11),0,'*芒种');
今年内这三个节气都不在交易日内,如何在离它最近的这一天近似表示出来?并与正常能表示的节气区别开来?
答(bajatje):
VAR7:DRAWTEXT(barslast(date<=LSOLARTERMDATE(9))=1,0,'*立夏');
VAR8:DRAWTEXT(barslast(date<=LSOLARTERMDATE(10))=1,0,'*小满');
VAR9:DRAWTEXT(barslast(date<=LSOLARTERMDATE(11))=1,0,'*芒种');
问:
刚刚发现问题。如果将买入、卖出条件改为以下方式,就无法实现信号的对应了。请问老师在买入条件仍然保持“C>MID”,而不是“CROSS(C,MID)”的情况下如何实现?
MID:MA(C,30);
tjb:=C>MID AND L>MID;//初始买入信号,可换成其它任意买入条件
U1:=L<REF(L,BARSLAST(CROSS(TJB,0.5)));
U2:=L<MID;
tjs:=U1 OR U2;//初始卖出信号,可换成其它任意卖出条件
{以下代码,使买、卖信号一一对应}
tsb:=barssince(tjb);
tss:=barssince(tjs);
if tjs[datacount]<tjb[datacount] then begin
a:=setlbound(tjs,1);
tjs:=tjs or barpos=1;
end;
tjbuy:=count(tjb,barslast(tjs))=1 and tjb; //买入信号
tjsell:=count(tjs,barslast(tjb))=1 and tjs; //卖出信号
drawicon(tjbuy,low,4);
drawicon(tjsell,high,5);
答(股市骑兵00):
你的买卖条件不对呀!
tjs//初始卖出信号
tjb//初始买入信号
2个条件自相矛盾了,同时买卖信号都会发的,那你听买的呢,还是卖的呢?
你硬要这个条件,下面的你参考
MID:=MA(C,30);
tjb:=C>MID AND L>MID;
U1:=L<REF(L,BARSLAST(CROSS(TJB,0.5)));
U2:=L<MID;
tjs:=U1 OR U2;//初始卖出信号,可换成其它任意卖出条件
tjb:=tjb and not(tjs);//初始买入信号,可换成其它任意买入条件
{以下代码,使买、卖信号一一对应}
tsb:=barssince(tjb);
tss:=barssince(tjs);
if tjs[datacount]<tjb[datacount] then begin
a:=setlbound(tjs,1);
tjs:=tjs or barpos=1;
end;
tjbuy:=count(tjb,barslast(tjs))=1 and tjb; //买入信号
tjsell:=count(tjs,barslast(tjb))=1 and tjs; //卖出信号
drawicon(tjbuy,low,4);
drawicon(tjsell,high,5);
问:
公式中的“U2”又改了一下:
U2:=C>REF(C,BARSLAST(CROSS(TJB,0.5)));
请教怎样才能在“tjsell”条件成立后,当“C>MID AND L>MID”条件满足时即可产生新的“tjbuy”信号?谢谢!
答(股市骑兵00):
你的买卖条件本身有重叠的问题。肯定有信号损失的,如果以买入信号为基准。
损失卖出信号改为如下表达。
MID:=MA(C,30);
tjb:=C>MID AND L>MID;//初始买入信号,可换成其它任意买入条件
U1:=L<REF(L,BARSLAST(CROSS(TJB,0.5)));
//U2:=L<MID;
U2:=C>REF(C,BARSLAST(CROSS(TJB,0.5)));
tjs:=(U1 OR U2) and not(tjb);//初始卖出信号,可换成其它任意卖出条件
答(cwy):
这个作业不能说是真正的用循环语句来实现,对常规函数使用的考虑还是较多,
如处理第一个卖出信号,实际上我不是做出来而是试出来的,
input.:n(26,5,300),p(2,0.1,10);
close;
mid:ma(close,n);
upper:mid + p*std(close,n);
lower:mid - p*std(close,n);
//以下为常规函数处理代码//
tjb:=cross(c,lower);//初始买入信号,可换成其它任意买入条件
tjs:=cross(upper,c);//初始卖出信号,可换成其它任意卖出条件
tss1:=BARSSINCE(tjb);//第一个卖出信号
///////////////////////////////////////////////////////
fb:=0*c;
fs:=0*c;
for i =n to datacount do begin
fb:=fb[i-1]+tjb;
fs:=fs[i-1]+tjs;
if tjs then fb:=0;
if tjb then fs:=0;
if fb=1 and tjb then fb1:=1;
if fs=1 and tjs then fs1:=1;
end;
drawicon(fb1 ,l,4);
drawicon(fs1 and tss1>2 ,h,5);
QUOTE:
888.问:
在100日内,从股价最低点到最高点,标出0。618。0。382的位置上画出线。
相反从最高到最低,也同样标出2条线
答(股市骑兵00):
hh:hhv(h,100);
ll:llv(l,100);
f1:(hh-ll)*0.618+ll;
f2:(hh-ll)*0.382+ll;
QUOTE:
889.问:
我想只输出指标线,而不输出数值,如何写?
如:ma5:ma9c,5);只输出指标线,而不输出数值
答(bajatje):
别名: 画分段线
所属类别: 绘图函数 参数数量: 2
分段绘制指标线。
用法:
PARTLINE(COND,PRICE),满足COND条件绘制PRICE连线。
例如:PARTLINE(C>REF(C,1),C),colorred表示收盘大于前收以红色绘制收盘价连线。
PARTLINE(1,ma5);
QUOTE:
890.问:
求今日向前有多少根k线的最高价大于且最低价小于今日收盘价?
答(股市骑兵00):
最后周期和光标位统计大致这样。
fc:=c;pg:=datacount;//可改为SYSPARAM(1)光标统计
x:=h>fc[pg] and l<fc[pg];
y:=sum(x,0)-x[pg];
y[pg];
QUOTE:
891.问:
只计算今天与前几日连续符合条件的数量,不是累计相加的数量。
答(股市骑兵00):
n:=5;//天数调节
fc:=c;pg:=SYSPARAM(1);//可改为SYSPARAM(1)光标统计
x:=h>fc[pg] and l<fc[pg];
y:=sum(x,n)-x[pg];
y[pg];
QUOTE:
892.问:
如何取图表内第一根K线到最后一根K线之间的时间差?
要求几天几小时几分钟。
答(hx817):
rj:=date;fz:=time;
d1:=rj[SYSPARAM(3)];d2:=rj[SYSPARAM(2)];
t1:=fz[SYSPARAM(3)];t2:=fz[SYSPARAM(2)];
fh1:=intpart(t1/10000);fh2:=intpart(t2/10000);
fm1:=intpart((t1-fh1*10000)/100);fm2:=intpart((t2-fh2*10000)/100);
fd:=DATEDIFF(d2,d1);
hh:=fh1-fh2;
mm:=fm1-fm2;
if mm<0 then begin
hh:=hh-1;
mm:=mm+60;
end;
if hh<0 then begin
fd:=fd-1;
hh:=hh+24;
end;
天:fd;
时:hh;
分:mm;
QUOTE:
893.问:
如何引用05年4月中旬--6月初,这段时间周期内的最低价。
答(bajatje):
w1:=barslast(date<=m1);
w2:=barslast(date<=m2);
ref(LLv(L,w1),w2);
macd 预计交叉价
d:ema(c,12)LINETHICK;
a:ema(c,26)LINETHICK;
e:=ema(d-a,9);
今日交叉价:(351*ref(e,1)+325*ref(a,1)-297*ref(d,1))/28LINETHICK;
明日交叉价:(351*e+325*a-297*d)/28LINETHICK;
www.g158.com
QUOTE:
894.问:
个数学公式,如何写
{[(1+2+3+4+5)*5-2]*2*3*4+20}*2/64
其中(1+2+3+4+5)这里面是最近5天的收盘价格,其它的数字是常数
是不是用datacount引用前5天的价格?
答(清扬):
((MA(C,5)*5*5-2)*2*3*4+20)*2/64
// MA(C,5)*5 为最近五天收盘价之和
答(hx817):
m1:ma(c,5);
m2:(c+ref(c,1)+ref(c,2)+ref(c,3)+ref(c,4))/5;
QUOTE:
895.问:
帮忙编一个5分钟与60分钟K线同图显示公式.
答(股市骑兵00):
以前做的公式改了下,5分钟K线使用
if DATATYPE<>2 then exit;
bc:=12;sj:=MOD(BARPOS-1,bc)=0 OR BARPOS=1;
zsj:=sum(sj,0);dzsj:=zsj[DATACOUNT]-zsj;
x:=DATACOUNT-BARPOS+1;zq:=SUMBARS(sj,1);
y:=SUMBARS(sj,x-dzsj);y1:=SUMBARS(sj,x-1-dzsj);
开60:ref(o,y-1),LINETHICK0;
高60:if(ISLASTBAR,hhv(h,zq),ref(hhv(h,bc),y1)),LINETHICK0;
低60:if(ISLASTBAR,llv(l,zq),ref(llv(l,bc),y1)),LINETHICK0;
收60:if(ISLASTBAR,ref(c,y1-1),ref(c,y1)),LINETHICK0;
STICKLINE(收60>=开60,收60,开60,7,1),colorred;
STICKLINE(收60>=开60,收60,高60,0.1,1),colorred;
STICKLINE(收60>=开60,开60,低60,0.1,1),colorred;
STICKLINE(收60<开60,收60,开60,7,0),colorcyan;
STICKLINE(收60<开60,开60,高60,0.1,0),colorcyan;
STICKLINE(收60<开60,收60,低60,0.1,0),colorcyan;
涨幅60:收60/ref(收60,1)*100-100,LINETHICK0;
答(股市骑兵00)
要同图
1.建个引用公式名:X5
cc:c;
oo:o;
hh:h;
ll:l;
2.再用下面的公式
if DATATYPE<>2 then exit;
n:=12;pn:=mod(barpos-1,n);
ik:=pn=0 or ISLASTBAR or refx(pn=0,1);
收:"x5.cc#min60",LINETHICK0;
开:"x5.oo#min60",LINETHICK0;
高:"x5.hh#min60",LINETHICK0;
低:"x5.ll#min60",LINETHICK0;
m:=收>=开;w:=收<开;f:=ISLASTBAR*(pn<6);
PARTLINE(pn>0 and m,收),COLORRED;
PARTLINE(pn>0 and m,开),COLORRED;
PARTLINE(pn>0 and w,收),COLORBLUE;
PARTLINE(pn>0 and w,开),COLORBLUE;
STICKLINE(ik and m,开,收,0.1,1),COLORRED;
STICKLINE(ik and w,开,收,0.1,1),COLORBLUE;
STICKLINE((pn=6 or f) and m,收,高,0.1,1),COLORRED;
STICKLINE((pn=6 or f) and m,开,低,0.1,1),COLORRED;
STICKLINE((pn=6 or f) and w,开,高,0.1,1),COLORBLUE;
STICKLINE((pn=6 or f) and w,收,低,0.1,1),COLORBLUE;
QUOTE:
896.问:
求某天(可以设定)到今天的换手率总和。
答(cwy):
RQ:=IF(DATE=1050104,1,0);//在1050104处换入你的日期
N天的换手率总和:SUM(IF(BARSLAST(RQ)>0,V,0),0)/FINANCE(7);
QUOTE:
897.问:
5日ma、10日ma、30日ma相交在一点时,当日股价上穿该点涨停,(包括st),成功率很高
答(hx817):
st:=if(INBLOCK('ST板块') or INBLOCK('*ST板块'),1.05,1.1);
zt:=ROUND(100*st*ref(c,1))/100<=c;
m1:=ma(c,5);
m2:=ma(c,10);
m3:=ma(c,30);
tj:BETWEEN(m1,o,c) and BETWEEN(m2,o,c) and BETWEEN(m3,o,c) and zt


意见与建议
沪ICP证:沪B2-20070217 版权所有:东方财富网



