交易函数,两种写法,平/开信号出现位置居然不同,实在想不明白
写法1:
PD:=aa1 and aa2 and aa2;
PK:=bb1 and bb2 and bb3;
KD:=cc1 and cc2 and cc3;
KK:=dd1 and dd2 and dd3;
平多:=SELL(PD,0,market);
平空:=SELLSHORT(PK,0,market);
开多:=BUY(KD,10,market);
开空:=BUYSHORT(KK,10,market);
写法2:
if (aa1 and aa2 and aa2) then sell(1,0,market);
if (bb1 and bb2 and bb3) then sellshort(1,0,market);
if (cc1 and cc2 and cc3) then buy(1,10,market);
if (dd1 and dd2 and dd3) then buyshort(1,10,market);
按说两种写法执行情况应该一样,写法1只是定义了PD、PK等中间变量。但实际执行情况是,写法2的平多和开空可能在一根K线上,而写法1的平多和开空在两个K线上,即开空信号在下一根K线上。如图:
给出上面所有的条件,本地测试用了简单的条件,效果和写法2是一样的,同根k线反手
PD:=every(0.99*ZHULIMAVOL>MAVOL,NHOUR)||BB||(CLOSE<ZSSP and holding>0); //平多条件
PK:=every(0.99*ZHULIMAVOL>MAVOL,NHOUR)||DD||(CLOSE>ZSBP and holding<0); //平空条件
KD:=EVERY(ZHULIMAVOL<=MAVOL,NHOUR+ADDHOUR) and AA and holding=0;
KK:=EVERY(ZHULIMAVOL<=MAVOL,NHOUR+ADDHOUR) and CC and holding=0; //开空条件
平多:=SELL(PD,0,market);
平空:=SELLSHORT(PK,0,market);
开多:=BUY(KD,5,market);
开空:=BUYSHORT(KK,5,market);
//==========================
条件里ZHULIMAVOL、MAVOL、aa、bb、cc、dd都是跨周期引用的变量。
都写出来,本地都重现不了
[此贴子已经被作者于2013/9/5 10:34:45编辑过]