以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]比较难的问题。谢谢老师!  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=29495)

--  作者:xian_0_9
--  发布时间:2012/9/26 14:36:02
--  [求助]比较难的问题。谢谢老师!

input:n(8,1,100,1);
A1:=REF(H,N)=HHV(H,2*N+1); B1:=FILTER(A1,N);
C1:=BACKSET(B1,N+1); D1:=FILTER(C1,N);
A2:=REF(L,N)=LLV(L,2*N+1); B2:=FILTER(A2,N);
C2:=BACKSET(B2,N+1); D2:=FILTER(C2,N);
E1:=(REF(LLV(L,2*N),1)+REF(HHV(H,2*N),1))/2;
E2:=(H+L)/2;
H1:=(D1 AND NOT(D2 AND E1>=E2)) OR BARSTATUS=2 OR BARSCOUNT(C)=1;
L1:=(D2 AND NOT(D1 AND E1<E2)); H2:=D1 AND NOT(D2 AND E1>=E2);
X1:=REF(BARSLAST(H1),1)+1; F1:=BACKSET(H1 AND COUNT(L1,X1)>0,LLVBARS(IF(L1,L,10000),X1));
G1:=F1>REF(F1,1); I1:=BACKSET(G1,2); LD:=I1>REF(I1,1);
L2:=LD OR BARSTATUS=2 OR BARSCOUNT(C)=1;X2:=REF(BARSLAST(L2),1)+1;
F2:=BACKSET(L2 AND COUNT(H2,X2)>0,HHVBARS(IF(H2,H,0),X2));
G2:=F2>REF(F2,1); I2:=BACKSET(G2,2); HD:=I2>REF(I2,1);
R1:=BACKSET(BARSTATUS=2,BARSLAST(HD)+1); S1:=R1>REF(R1,1);
T1:=BACKSET(BARSTATUS=2,BARSLAST(LD)+1); U1:=T1>REF(T1,1);
R2:=BACKSET(S1,REF(BARSLAST(HD),1)+2); S2:=R2>REF(R2,1);
T2:=BACKSET(U1,REF(BARSLAST(LD),1)+2); U2:=T2>REF(T2,1);
T3:=BACKSET(U2,REF(BARSLAST(LD),1)+2); U3:=T3>REF(T3,1);
T4:=BACKSET(U3,REF(BARSLAST(LD),1)+2); U4:=T4>REF(T4,1);
R3:=BACKSET(S2,REF(BARSLAST(HD),1)+2); S3:=R3>REF(R3,1);
R4:=BACKSET(S3,REF(BARSLAST(HD),1)+2); S4:=R4>REF(R4,1);
DRAWLINE(S2,H,S1,H,1),COLORGREEN;
论坛里找的画趋势线的指标。

应该是连接S2点的H和S1点的H为压力线。但想用画线函数无法下单。

/////

想请老师帮忙改成当S2的H大于S1的H时,S2的H减去S1的H。得出的值再除以S2到S1的周期数。会得到一个数值(假定为W)。

S1后面的第一个K线收盘价突破了S1的H-W。开多(如果没突破就不开多)。收盘平仓。

如果是后面第2个K线需要突破S1的H-2*W才开多。第3个K线需要突破S1的H-3*W才开多。

例如

S2的H为2000.

S1的H为1950.

S2和S1之间差10个周期。

W=(2000-1950)/10=5

S1后面第4个K线收盘价突破了1950-4*5开多。问题比较难谢谢老师,也许不难可能是我水平太差。谢谢

[此贴子已经被作者于2012-9-26 14:37:04编辑过]

--  作者:jinzhe
--  发布时间:2012/9/26 15:28:05
--  

H1:VALUEWHEN(S1,H);

h2:VALUEWHEN(s2,H);

ZHOUQI:=;

W:=(H1-H2)/ZHOUQI;

N1:BARSLAST(S1);

IF N1=1 AND C>H1-W THEN BUY();

IF N1=2 AND C>H-W*2 THEN BUY();

IF N1=3 AND C>H-3*W THEN BUY();

IF TIME>145500 AND TIME<150000 THEN SELL();

 

 

这个周期概念太抽象,想了很久都没有好的方法来求出来,我再思索下


--  作者:xian_0_9
--  发布时间:2012/9/26 15:37:34
--  
图片点击可在新窗口打开查看
--  作者:xian_0_9
--  发布时间:2012/9/26 16:48:14
--  
S2到现在的周期数减去S1到现在的周期数就是吧?但这个怎么写呢?
--  作者:jinzhe
--  发布时间:2012/9/26 17:05:46
--  

zhouqi:=barslast(s2)-barslast(s1);

这样的我觉得不太严密


--  作者:xian_0_9
--  发布时间:2012/9/26 18:49:50
--  

这个指标只能在序列下运行。。。。。

那我先建立一个模型内容是

input:n(8,1,100,1);
A1:=REF(H,N)=HHV(H,2*N+1); B1:=FILTER(A1,N);
C1:=BACKSET(B1,N+1); D1:=FILTER(C1,N);
A2:=REF(L,N)=LLV(L,2*N+1); B2:=FILTER(A2,N);
C2:=BACKSET(B2,N+1); D2:=FILTER(C2,N);
E1:=(REF(LLV(L,2*N),1)+REF(HHV(H,2*N),1))/2;
E2:=(H+L)/2;
H1:=(D1 AND NOT(D2 AND E1>=E2)) OR BARSTATUS=2 OR BARSCOUNT(C)=1;
L1:=(D2 AND NOT(D1 AND E1<E2)); H2:=D1 AND NOT(D2 AND E1>=E2);
X1:=REF(BARSLAST(H1),1)+1; F1:=BACKSET(H1 AND COUNT(L1,X1)>0,LLVBARS(IF(L1,L,10000),X1));
G1:=F1>REF(F1,1); I1:=BACKSET(G1,2); LD:=I1>REF(I1,1);
L2:=LD OR BARSTATUS=2 OR BARSCOUNT(C)=1;X2:=REF(BARSLAST(L2),1)+1;
F2:=BACKSET(L2 AND COUNT(H2,X2)>0,HHVBARS(IF(H2,H,0),X2));
G2:=F2>REF(F2,1); I2:=BACKSET(G2,2); HD:=I2>REF(I2,1);
R1:=BACKSET(BARSTATUS=2,BARSLAST(HD)+1); S1:=R1>REF(R1,1);
T1:=BACKSET(BARSTATUS=2,BARSLAST(LD)+1); U1:=T1>REF(T1,1);
R2:=BACKSET(S1,REF(BARSLAST(HD),1)+2); S2:=R2>REF(R2,1);
T2:=BACKSET(U1,REF(BARSLAST(LD),1)+2); U2:=T2>REF(T2,1);
T3:=BACKSET(U2,REF(BARSLAST(LD),1)+2); U3:=T3>REF(T3,1);
T4:=BACKSET(U3,REF(BARSLAST(LD),1)+2); U4:=T4>REF(T4,1);
R3:=BACKSET(S2,REF(BARSLAST(HD),1)+2); S3:=R3>REF(R3,1);
R4:=BACKSET(S3,REF(BARSLAST(HD),1)+2); S4:=R4>REF(R4,1);
DRAWLINE(S2,h,S1,H,1),COLORGREEN;

再建立模型

 

s1:=STKINDI(\'IF00\',\'Formula335.s1\',0,1);

s2:=STKINDI(\'IF00\',\'Formula335.s2\',0,1);

 

if time=closetime(0) then
 begin
 sell(holding > 0, 0, limitr,o);
 sellshort(holding < 0, 0, limitr,o);
 end
jysd:=time>100000 and time<144500;
H11:=VALUEWHEN(S1,H);

h22:=VALUEWHEN(s2,H);

ZHOUQI:=BARSLAST(s2)-BARSLAST(s1);

W:=(H11-H22)/ZHOUQI;

N1:BARSLAST(S1);

IF N1=1 AND C>H11-W and jysd THEN BUY(1,1,limitr,c);
IF N1=2 AND C>H11-W*2  and jysd THEN BUY(1,1,limitr,c);
IF N1=3 AND C>H11-3*W  and jysd THEN BUY(1,1,limitr,c);
IF N1=4 AND C>H11-4*W  and jysd THEN BUY(1,1,limitr,c);
IF N1=5 AND C>H11-5*W  and jysd THEN BUY(1,1,limitr,c);

 

不好使呢?


--  作者:xian_0_9
--  发布时间:2012/9/27 9:22:12
--  
以下是引用jinzhe在2012-9-26 17:05:46的发言:

zhouqi:=barslast(s2)-barslast(s1);

这样的我觉得不太严密

这样计算不出来参数啊。。。


--  作者:jinzhe
--  发布时间:2012/9/27 9:26:20
--  

不好弄,这个