以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  程序描述  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=67059)

--  作者:dafenqiu
--  发布时间:2014/7/7 14:54:38
--  程序描述
我想记录上一次条件成立时macd的K线位置,

目的,上一次MACD红柱区域的最高点,和当前MACD红柱最高点作比较(中间隔了一片绿柱区域);
麻烦问一下怎么记录上次MACD红柱最高点的位置,目的是想知道上一次MACD红柱最高点对应的价格当做压力线


--  作者:jinzhe
--  发布时间:2014/7/7 15:08:48
--  

p:=26;
s:=12;
m:=9;
DIFF : EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  : EMA(DIFF,M);
MACD1 : 2*(DIFF-DEA);

UPCROSS:=macd1>0;
DWCROSS:=macd1<0;
NN1:=BARSLAST(UPCROSS);
NN2:=REF(BARSLAST(UPCROSS),NN1+1);
NN3:=REF(BARSLAST(UPCROSS),NN1+NN2+1+1);
NNN:=NN1+NN2+NN3,COLORRED;

HH1:REF(macd1,NN1);//  上一次的最高值

HH2:REF(macd1,NN2+NN1+1);//上二次

HH3:REF(macd1,NN3+NN2+1+NN1+1);//上三次


--  作者:dafenqiu
--  发布时间:2014/7/22 14:08:04
--  
这个写的有问题吧 
UPCROSS:=macd1>0;
DWCROSS:=macd1<0;
NN1:=BARSLAST(UPCROSS);
NN2:=REF(BARSLAST(UPCROSS),NN1+1);
NN3:=REF(BARSLAST(UPCROSS),NN1+NN2+1+1);
NNN:=NN1+NN2+NN3,COLORRED;

HH1:=REF(macd1,NN1);//  上一次的最高值?
 这里的HH1不是上次最高值啊,是第一次macd值大于0的价格 和我想要的不一样

是不是 HHV(MACD1,NN1)?


--  作者:jinzhe
--  发布时间:2014/7/22 15:43:36
--  

P:=26;
S:=12;
M:=9;
DIFF := EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA);

UPCROSS:=MACD1>0 AND REF(MACD1<0,1);
DWCROSS:=MACD1<0 AND REF(MACD1>0,1);
NN1:BARSLAST(UPCROSS);
NN2:REF(BARSLAST(UPCROSS),NN1+1);
NN3:REF(BARSLAST(UPCROSS),NN1+NN2+1+1);
MM1:BARSLAST(DWCROSS);
MM2:REF(BARSLAST(DWCROSS),NN1+1);
MM3:REF(BARSLAST(DWCROSS),NN1+NN2+1+1);
r1:=REF(HHV(macd1,nn1+1),mm1+1);
ht1:=hhv(macd1,nn1+1);
r2:=ref(hhv(macd1,nn1+1),mm1+1);
ht2:=ref(hhv(macd1,nn1+1),nn1+1+ref(mm1,nn1+1)+1);
r3:=ref(hhv(macd1,nn1+1),mm1+1+ref(mm1,mm1+1)+1);
ht3:=ref(hhv(macd1,nn1+1),nn1+1+ref(nn1,nn1+1)+1+ref(mm1,nn1+1+ref(nn1,nn1+1)+1));
if macd1>0 then hh1:=ht1;
if macd1<0 then HH1:=r1;
h1:hh1;
if macd1>0 then hh2:=r2;
if macd1<0 then hh2:=ht2;
h2:hh2;
if macd1>0 then hh3:=r3;
if macd1<0 then hh3:=ht3;
h3:hh3;

 

 

 

H1,H2,H3分别为最近3块红柱子的最大值


--  作者:dafenqiu
--  发布时间:2014/7/30 18:03:50
--  
你好,特别感谢您;我想在上面的基础上加15分钟的指标引用:
上面的操作周期为1分钟;

编写的指标如下:
C15:=CALLSTOCK(\'IF00\',VTHIGH,4,-1);
O15:=CALLSTOCK(\'IFOO\',VTLOW,4,-1);
RC15:=REF(CALLSTOCK(\'IF00\',VTHIGH,4,-1),1);
RO15:=REF(CALLSTOCK(\'IFOO\',VTLOW,4,-1),1);
R2C15:=REF(CALLSTOCK(\'IFOO\',VTHIGH,4,-1),2);
R2O15:=REF(CALLSTOCK(\'IFOO\',VTLOW,4,-1),2);


D1:=MIN(C15,RC15);
DING:=MIN(D1,R2C15);
L1:=MAX(O15,RO15);
DI:MAX(L1,R2O15);

IF DING>DI THEN BEGIN
U15:=DING;
L15:=DI;
END
 在主交易程序中这样调用:
u1:="UL.U15"; 
L1:="UL.L15";  
cond15:=u1>ref(u1,1);

IF ABS(MACD1)>0.1  AND HIGH>H1 and cond15 THEN BEGIN
BUYSHORT(HOLDING=0,1,MARKET);
END
IF HOLDING<0 THEN BEGIN
止空单:SELLSHORT(CLOSE>H2,0,MARKET);
END
测试过了,加上我写的指标就没有交易,不加就ok 指标调用出了什么问题呢?测试都是正常的


--  作者:jinzhe
--  发布时间:2014/7/31 8:59:38
--  

在前面的代码里面添加:

uu:u15;

ll:l15;

 

主程序修改

 

u1:="UL.uu"; 
L1:="UL.ll";  

--  作者:dafenqiu
--  发布时间:2014/7/31 10:58:10
--  
您好!,我在指标里面添加了
uu:u15;
ll:l15;

写了一个测试程序如下

u1:="UL.uu"; 
L1:="UL.ll";  

kd:=u1>ref(u1,1);
buy(kd,1,market);
sell(CLOSE-ENTERPRICE>5 or close-enterprice<-5,0,market);

1分钟周期测试一下,还是没有信号..

--  作者:jinzhe
--  发布时间:2014/7/31 11:05:18
--  
那么你U1和L1有数值没
--  作者:dafenqiu
--  发布时间:2014/7/31 11:34:33
--  
C15:=CALLSTOCK(\'IF00\',VTHIGH,2,-1);
O15:=CALLSTOCK(\'IFOO\',VTLOW,2,-1);
RC15:=CALLSTOCK(\'IF00\',VTHIGH,2,-2);
RO15:=CALLSTOCK(\'IFOO\',VTLOW,2,-2);
R2C15:=CALLSTOCK(\'IFOO\',VTHIGH,2,-3);
R2O15:=CALLSTOCK(\'IFOO\',VTLOW,2,-3);


D1:=MIN(C15,RC15);
DING:=MIN(D1,R2C15);
L1:=MAX(O15,RO15);
DI:MAX(L1,R2O15);

IF DING>DI THEN BEGIN
U15:=DING;
L15:=DI;
END

uu:U15;
ll:L15;我是想去最近5分钟周期上的 连续三根线最高点的低点 和最低点的高点,这样写指标没有问题的吧?五分钟数据我也补充好了,为什么图标上没有显示?

--  作者:jinzhe
--  发布时间:2014/7/31 13:19:14
--  

3根k线高点的低点:llv(h,3);

3根k线低点的高点:hhv(l,3);