计算10周期(H-L)均值
开多:C>前4周期最高值;
开空:C<前4周期最低值;
平多:C<前4周期最高值-1.5倍的10周期(H-L)均值;
平空:C>前4周期最低值+1.5倍的10周期(H-L)均值;
为何以下公式显示不正确?在0轴上有一直线?
input:hn(4,1,30),lown(4,1,20);
VARIABLE:N=0,BS=0;
BDZ:=H-L;
NZ:=MA(BDZ,20);
MA1:ma(c,5);
BUYHHV:=HHV(H,hn);
SELLLLV:=LLV(L,lown);
IF BARPOS>4 THEN
BEGIN
IF C>ref(BUYHHV,1) AND BS=0 THEN
BEGIN
DRAWICON(1,L*0.95,1);
BS=1;
END;
IF C<ref(SELLLLV,1) AND BS=0 THEN
BEGIN
DRAWICON(1,H*1.05,2);
BS=-1;
END;
IF C<ref(BUYHHV,1)-NZ*1.5 AND BS=1 THEN
BEGIN
DRAWICON(1,H*1.05,3);
BS=0;
END;
IF C>ref(SELLLLV,1)+NZ*1.5 AND BS=-1 THEN
BEGIN
DRAWICON(1,L*0.95,4);
BS=0;
END;
END;
根据以上思路,为何只开仓不平仓,我设定了“BS”这个参数,是想在开仓之前一定要空仓才可以,为何不平仓就开新仓了?
input:hn(4,1,30),lown(4,1,20);
VARIABLE:N=0,BS=0;
BDZ:=H-L;
NZ:=MA(BDZ,20);
BUYHHV:=HHV(H,hn);
SELLLLV:=LLV(L,lown);
IF BARPOS>4 THEN
BEGIN
IF C>ref(BUYHHV,1) AND BS=0 THEN
BEGIN
TBUY(1,1,mkt);
BS=1;
END;
IF C<ref(SELLLLV,1) AND BS=0 THEN
BEGIN
TBUYSHORT(1,1,mkt);
BS=-1;
END;
IF C<ref(BUYHHV,1)-NZ*1.5 AND BS=1 THEN
BEGIN
TSELL(1,0,mkt);
BS=0;
END;
IF C>ref(SELLLLV,1)+NZ*1.5 AND BS=-1 THEN
BEGIN
TSELLSHORT(1,0,mkt);
BS=0;
END;
END;
次序问题,先平后开,就将平仓指令
IF C<ref(BUYHHV,1)-NZ*1.5 AND BS=1 THEN
BEGIN
TSELL(1,0,mkt);
BS=0;
END;
IF C>ref(SELLLLV,1)+NZ*1.5 AND BS=-1 THEN
BEGIN
TSELLSHORT(1,0,mkt);
BS=0;
END;
放在前面
为何不用金字塔程式化交易设计指南里的例子唐奇安通道,修改一下就行
input:N(20,0,60,1) ,NS(30,0,100,1);
持仓:=tHOLDING,LINETHICK0;
KCS:= intpart(tasset*0.3/close);//也表示30%的开仓数
BUY1:=hhv(ref(h,1),N);
SELL1:=llv(ref(l,1),N);
BPK:=CROSS(H,BUY1);
SPK:=CROSS(SELL1,L);
Price:=tAVGENTERPRICE; //持仓价位
tSELLSHORT(BPK and 持仓<0,t持仓,mkt);
tSELLSHORT(持仓<0,持仓,Stp,Price+NS);//NS止损
tBUY(BPK and 持仓=0, KCS,mkt);
tSELL(SPK and 持仓>0,持仓,mkt);
tSELL(持仓>0,持仓,Stp,Price-NS);//NS止损
tBUYSHORT(SPK and 持仓=0, KCS,mkt);
BS=1;
BS的语法本身有问题,缺“:”