请帮忙编写开仓条件的程序,谢谢
开仓:条件1:这根K线涨幅大于6%,
条件2:均线5.8.13.21.34的当前价格都在条件1那根K线的最低价到最高价里面时显示买入信号, 如下图、圆圈里那根K线,和均线的状态,就是开多条件。
平仓条件:用最下面的条件公式平仓
VARIABLE:kd=0,kk=0;
m:=10;
MID:=(3*CLOSE+LOW+OPEN+HIGH)/6;
DDD:=(20*MID+19*REF(MID,1)+18*REF(MID,2)+17*REF(MID,3)+
16*REF(MID,4)+15*REF(MID,5)+14*REF(MID,6)+
13*REF(MID,7)+12*REF(MID,8)+11*REF(MID,9)+
10*REF(MID,10)+9*REF(MID,11)+8*REF(MID,12)+
7*REF(MID,13)+6*REF(MID,14)+5*REF(MID,15)+
4*REF(MID,16)+3*REF(MID,17)+2*REF(MID,18)+REF(MID,20))/210,COLORYELLOW{NODRAW}; //NODRAW 这个代码是不显示指标线
MADDD:=MA(DDD,M),{NODRAW}; //NODRAW 这个代码是不限是该划线;
jc:=cross(DDD,MADDD);
sc:=cross(MADDD,DDD);
if sc then
begin
sell(holding>0,holding,market),COLORYELLOW; //平多语句
end
//我加载公式以后,看到没有过滤涨幅(超过6%),就直接开多了, 如下图
zf:c-ref(c,1);//涨幅。
ma5:ma(c,5);
ma8:ma(c,8);
ma13:ma(c,13);
ma21:ma(c,21);
ma34:ma(c,34);
//其他均线可自行补齐下
cd1:zf>0.06;//涨幅大于6%
cd2:RANGE(ma5,l,h) and range(ma8,l,h) and range(ma13,l,h) and range(ma21,l,h) and range(ma34,l,h) ;//2条均线都在L到H之间。
m:=10;
MID:=(3*CLOSE+LOW+OPEN+HIGH)/6;
DDD:=(20*MID+19*REF(MID,1)+18*REF(MID,2)+17*REF(MID,3)+
16*REF(MID,4)+15*REF(MID,5)+14*REF(MID,6)+
13*REF(MID,7)+12*REF(MID,8)+11*REF(MID,9)+
10*REF(MID,10)+9*REF(MID,11)+8*REF(MID,12)+
7*REF(MID,13)+6*REF(MID,14)+5*REF(MID,15)+
4*REF(MID,16)+3*REF(MID,17)+2*REF(MID,18)+REF(MID,20))/210,COLORYELLOW{NODRAW}; //NODRAW 这个代码是不限是该划线
MADDD:=MA(DDD,M),{NODRAW}; //NODRAW 这个代码是不限是该划线;
jc:=cross(DDD,MADDD);
sc:=cross(MADDD,DDD);
if cd1 and cd2 then
begin
buy(holding=0,1,market) ,COLORYELLOW; //开多语句
end
if sc then
begin
sell(holding>0,holding,market) ,COLORYELLOW; //平多语句
end
我要的就是大于6% 但是你对照一下,下面图上的开多信号,开多那根K线 涨幅没有6%,股票代码是 600580 信号开多时间是 2018年11月27号, 公式在下面,您可以直接导入公式看下,谢谢
zf:c-ref(c,1);//涨幅。
ma5:ma(c,5);
ma8:ma(c,8);
ma13:ma(c,13);
ma21:ma(c,21);
ma34:ma(c,34);
//其他均线可自行补齐下
cd1:zf>0.06;//涨幅大于6%
cd2:RANGE(ma5,l,h) and range(ma8,l,h) and range(ma13,l,h) and range(ma21,l,h) and range(ma34,l,h) ;//2条均线都在L到H之间。
m:=10;
MID:=(3*CLOSE+LOW+OPEN+HIGH)/6;
DDD:=(20*MID+19*REF(MID,1)+18*REF(MID,2)+17*REF(MID,3)+
16*REF(MID,4)+15*REF(MID,5)+14*REF(MID,6)+
13*REF(MID,7)+12*REF(MID,8)+11*REF(MID,9)+
10*REF(MID,10)+9*REF(MID,11)+8*REF(MID,12)+
7*REF(MID,13)+6*REF(MID,14)+5*REF(MID,15)+
4*REF(MID,16)+3*REF(MID,17)+2*REF(MID,18)+REF(MID,20))/210,COLORYELLOW{NODRAW}; //NODRAW 这个代码是不限是该划线
MADDD:=MA(DDD,M),{NODRAW}; //NODRAW 这个代码是不限是该划线;
jc:=cross(DDD,MADDD);
sc:=cross(MADDD,DDD);
if cd1 and cd2 then
begin
buy(holding=0,1,market) ,COLORYELLOW; //开多语句
end
if sc then
begin
sell(holding>0,holding,market) ,COLORYELLOW; //平多语句
end
1、日期是2019.2.1 号
2、那就请您按照开盘价,收盘价的方式去计算,写下公式谢谢
2019.2.1 号这一天涨幅没有超过6
另外你的zf是不是改成zf:(c-ref(c,1))/ref(c,1);//涨幅。
这个了,如果改的对的话那么是不会有信号的