MAA:MA(CLOSE,10),COLORMAGENTA,LINETHICK2;
N1:=BARSLAST(TIME=1030);
N2:=BARSLAST(TIME=0930);
HH:=REF(HHV(H,N2+1),N1);
LL:=REF(LLV(L,N2+1),N1);
DRAWSL(1,HH,0,1,0,COLORMAGENTA);
DRAWSL(1,LL,0,1,0,RGB(0,128,192));
KKXJ:=(MAA-LL)<5;
KDXJ:=(HH-MAA)<5;
XZ:=COUNTSIG(BP,N2)+COUNTSIG(SP,N2)+COUNTSIG(CLOSEOUT,N2);
C>HH&&COUNTSIG(CLOSEOUT,N1)=0&&(TIME>1030||TIME<1430)&&KDXJ&&XZ=0&&(ISLASTBP||COUNTSIG(BK,N1)+COUNTSIG(SK,N1)=0),BK(手数);//
CROSSDOWN(C,MAA),SP(BKVOL);
CROSS(C,MAA),BP(SKVOL);
L<LL,SP(BKVOL);
C<LL&&COUNTSIG(CLOSEOUT,N1)=0&&(TIME>1030||TIME<1430)&&KKXJ&&XZ=0&&(ISLASTSP||COUNTSIG(SK,N1)+COUNTSIG(BK,N1)=0),SK(手数);//
H>HH,BP(SKVOL);
TIME=1500,CLOSEOUT;
CHECKSIG_MIN(BK,'A',0,'D',0);//出信号立即下单,K线走完复核
CHECKSIG_MIN(SK,'A',0,'D',0);//出信号立即下单,K线走完复核
CHECKSIG_MIN(SP,'A',0,'C',0);//出信号立即下单,不复核
CHECKSIG_MIN(BP,'A',0,'C',0);//出信号立即下单,不复核
CHECKSIG_MIN(CLOSEOUT,'B',0,'D',0);//K线走完确认信号下单
COUNTSIG(X,N); 统计N周期内,X信号的数量;
用法:
X可以为BK、SK、SP、BP、SPK、BPK、CLOSEOUT、STOP
注:
1、统计周期时,
(1)包含当前k线;
(2)若N为0则从第一个有效值算起;
(3)当N为有效值,但当前的k线数不足N根,从第一根统计到当前周期。
(4)N 为空值时返回值为空值 。
(5)N可以为变量
2、统计信号时:
(1)信号执行方式选择为K线走完确认信号或者K线走完复核(例如:在模型中写入CHECKSIG(SIG,'A',0,'D',0,0);),不包含当根K线上未固定的信号,即返回已经固定的信号个数
(2)信号执行方式选择为不进行信号复核(例如:在模型中写入MULTSIG或MULTSIG_MIN;),包含当根K线上信号发出并且固定后的信号
例:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
BKN:=COUNTSIG(BK,N);
MA5:=MA(C,5);
BKN=0&&C>MA5,BK;//当日内日未出现过BK信号并且最新价大于5周期均线,则买开仓
看不懂文华的思路
你把这句解释一下,解释一下要实现什么目的,不要直接翻译:
C>HH&&COUNTSIG(CLOSEOUT,N1)=0&&(TIME>1030||TIME<1430)&&KDXJ&&XZ=0&&(ISLASTBP||COUNTSIG(BK,N1)+COUNTSIG(SK,N1)=0),BK(手数);//
开仓条件:价格大于HH线;
当日开仓时间:在10:30 与14:30 之间,
当开仓条件满足时,之前没有任何开平仓发生,(一天就开一次仓)
variable:n=0;
手数:=1;
MAA:=MA(CLOSE,10),COLORMAGENTA,LINETHICK2;
N1:=BARSLAST(TIME=103000);
N2:=BARSLAST(TIME=093500);
HH:REF(HHV(H,N2+1),N1);
LL:REF(LLV(L,N2+1),N1);
KKXJ:=(MAA-LL)<5;
KDXJ:=(HH-MAA)<5;
if C>HH and holding=0 and n=0 and (TIME>103000 and TIME<143000) then begin
buy(holding=0,手数,marketr);//
n:=1;
end
if CROSS(MAA,c) then sell(1,0,marketr);
if CROSS(C,MAA) then sellshort(1,0,marketr);
if L<LL then sell(1,0,marketr);
if H>HH then sellshort(1,0,marketr);
if C<LL and holding=0 and n=0 and (TIME>103000 and TIME<143000) then begin
buyshort(holding=0,手数,marketr);//
n:=1;
end
if TIME=150000 then begin
sell(1,0,marketr);
sellshort(1,0,marketr);
n:=0;
end
CHECKSIG_MIN(BK,'A',0,'D',0);//出信号立即下单,K线走完复核
CHECKSIG_MIN(SK,'A',0,'D',0);//出信号立即下单,K线走完复核
老师:开仓部分,实现不了吗?
比如:上穿触发成交了,1k棒走完,价格回到HH线下方了,开多条件不成立了。。这时候应该平掉刚才开的多单