老师好,以下是个人编写的15分钟/30分钟周期,并且过滤掉盘整时不开新仓。
请帮助改成金字塔,谢谢
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
N:=BARSLAST(DATE<>REF(DATE,1))+1;
MA6:MA(C,6);
MA18:MA(C,18);
MA40:MA(C,40);
M1:=BARSLAST(CROSS(MA6,MA18)); //上一次条件满足金叉(后加)
M2:=BARSLAST(CROSS(MA18,MA6)); //上一次条件满足死叉(后加)
HH:=HHV(HIGH,6);
LL:=LLV(LOW,18);
HH1:=BARSLAST((HH > REF(HH,1)));
LL1:=BARSLAST((LL < REF(LL,1)));
(TIME>=0905&&TIME<1456||TIME>2105&&TIME<2255)&&CROSSUP(LL1,HH1),BPK;//多
(TIME>=0905&&TIME<1456||TIME>2105&&TIME<2255)&&CROSSUP(HH1,LL1),SPK;
//空
//CROSSUP(MA6,MA18),BP;
//CROSSDOWN(MA6,MA18),SP;
DRAWTEXT(FILTER(((HH1 < REF(HH1,1)) AND
(HH1 < LL1)),90),LOW,'加多',COLORRED);
DRAWTEXT(FILTER(((LL1 < REF(LL1,1)) AND
(HH1 > LL1)),90),HIGH,'加空',COLORGREEN);
//CHECKSIG(BK,'B',5,'C',0,0); //设置BK信号执行方式为:K线走完前1秒下单,不进行复核
//CHECKSIG(SK,'B',5,'C',0,0); //设置SK信号执行方式为:K线走完前1秒下单,不进行复核
//CHECKSIG(SP,'A',0,'C',0,0); //设置SP信号执行方式为:出信号立即下单,不进行复核
//CHECKSIG(BP,'A',0,'C',0,0); //设置BP信号执行方式为:出信号立即下单,不进行复核
MULTSIG(0,0,1,5);
CLOSEMINUTE1<= 5,CLOSEOUT;
CLOSEMINUTEEVERY1(1) <=
5||CLOSEMINUTEEVERY1(4) <= 5,CLOSEOUT;
AUTOFILTER; //启用一开一平信号过滤机制
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
N:=BARSLAST(DATE<>REF(DATE,1))+1;
MA6:MA(C,6);
MA18:MA(C,18);
MA40:MA(C,40);
M1:=BARSLAST(CROSS(MA6,MA18)); //上一次条件满足金叉(后加)
M2:=BARSLAST(CROSS(MA18,MA6)); //上一次条件满足死叉(后加)
HH:=HHV(HIGH,6);
LL:=LLV(LOW,18);
HH1:=BARSLAST((HH > REF(HH,1)));
LL1:=BARSLAST((LL < REF(LL,1)));
if (TIME>=130500 and TIME<185600 or TIME>10500 and TIME<25500)and CROSS(LL1,HH1) then
begin
sellshort(holding<0,holding,market);
buy(holding=0,1,market);
end
if (TIME>=130500 and TIME<185600 or TIME> 10500 and TIME<25500) and CROSS(HH1,LL1) then
begin
sellshort(holding<0,holding,market);
buy(holding=0,1,market);
end
DRAWTEXT(FILTER(((HH1 < REF(HH1,1)) AND (HH1 < LL1)),90),LOW,'加多',COLORRED);
DRAWTEXT(FILTER(((LL1 < REF(LL1,1)) AND (HH1 > LL1)),90),HIGH,'加空',COLORGREEN);
//MULTSIG(0,0,1,5); 设置软件交易时候固定轮询为5秒即可
//这部分是收盘前五分钟平仓
INPUT:X(3,1,200,1);//X表示分钟数
MARK:=0;//用于记录当前是否满足某个收盘K结束前N分钟的变量
FOR I=0 TO 1 DO //循环遍历每个收盘时间来进行判断,这里只判断最后一节和第一节 2个时间区间
BEGIN
abb:=timetot0(CLOSETIME(I))-time0,NODRAW;//当前K线时间距离收盘K线结束倒计时
abb3:=timetot0(CLOSETIME(I))-timetot0(dynainfo(207)),NODRAW;//当前时间距离收盘K时间
IF (abb<X*60 and abb>=0 and (not(ISLASTBAR))) or (ISLASTBAR and abb3>=0 and abb3<X*60) THEN MARK:=1;
END
if MARK then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);
end