//TB公式代码如下 Params Numeric nMins(30); // N分钟的突破 Numeric nOffset(3); // 突破式的价格偏移 Vars NumericSeries HighestOf30Min; NumericSeries lowestOf30Min; Numeric myPrice; Numeric MinPoint; Numeric lots(1); Begin MinPoint = MinMove*PriceScale; If(Date <> Date[1]) { HighestOf30Min = High; lowestOf30Min = Low; }Else If(Time < 0.0900+nMins*0.0001) { HighestOf30Min = max(high,HighestOf30Min[1]); lowestOf30Min = min(Low,lowestOf30Min[1]); }Else { HighestOf30Min = HighestOf30Min[1]; lowestOf30Min = lowestOf30Min[1]; } If(High >= HighestOf30Min + nOffset*MinPoint && MarketPosition != 1) { myPrice = HighestOf30Min + nOffset*MinPoint; If(Open > myPrice) myPrice = Open; Buy(lots,myPrice); } If(Low <= lowestOf30Min - nOffset*MinPoint && MarketPosition != -1) { myPrice = lowestOf30Min - nOffset*MinPoint; If(Open < myPrice) myPrice = Open; SellShort(lots,myPrice); } If(Time >= 0.1459) { Sell(lots,Open); BuyToCover(lots,Open); } End ///////////////////////////////////////////////////////////////////////////////////// //下面为金字塔代码 (感谢轮回) INPUT:NMIN(30,10,60,10); INPUT:NOFFSET(3,1,20,1); INPUT:LOTS(1,1,1000,1); CYC:=BARSLAST(DATE>REF(DATE,1))+1; HIGHESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,HHV(H,CYC)); LOWESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,LLV(L,CYC)); IF HIGH >= HIGHESTOF30MIN + NOFFSET*MINDIFF AND HOLDING<=0 THEN BEGIN MYPRICE: = HIGHESTOF30MIN + NOFFSET*MINDIFF; IF OPEN > MYPRICE THEN BEGIN MYPRICE: = OPEN; SELLSHORT(HOLDING<0,0,LIMITR,MYPRICE); BUY(HOLDING=0,LOTS,LIMITR,MYPRICE); END END IF LOW <= LOWESTOF30MIN - NOFFSET*MINDIFF AND HOLDING>=0 THEN BEGIN MYPRICE: = LOWESTOF30MIN - NOFFSET*MINDIFF; IF OPEN < MYPRICE THEN BEGIN MYPRICE: = OPEN; SELL(HOLDING>0,0,LIMITR,MYPRICE); BUYSHORT(HOLDING=0,LOTS,LIMITR,MYPRICE); END END IF TIME >= 145900 THEN BEGIN SELL(HOLDING>0,0,LIMITR,OPEN); SELLSHORT(HOLDING<0,0,LIMITR,OPEN); END
我把它改为后台交易 后 为何不能测试 大家看看哪里出错了 如下 INPUT:NMIN(30,10,60,10); INPUT:NOFFSET(3,1,20,1); INPUT:LOTS(1,1,1000,1); CYC:=BARSLAST(DATE>REF(DATE,1))+1; HIGHESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,HHV(H,CYC)); LOWESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,LLV(L,CYC)); IF HIGH >= HIGHESTOF30MIN + NOFFSET*MINDIFF AND tHOLDING<=0 and THEN BEGIN MYPRICE: = HIGHESTOF30MIN + NOFFSET*MINDIFF; IF OPEN > MYPRICE THEN BEGIN MYPRICE: = OPEN; //SELLSHORT(HOLDING<0,0,LIMITR,MYPRICE); TSELLSHORT(THOLDING<0 ,lots ,lmt ,MYPRICE ); //BUY(HOLDING=0,LOTS,LIMITR,MYPRICE); TBUY(tHOLDING=0 ,LOTS ,LMT ,MYPRICE ); END END IF LOW <= LOWESTOF30MIN - NOFFSET*MINDIFF AND tHOLDING>=0 THEN BEGIN MYPRICE: = LOWESTOF30MIN - NOFFSET*MINDIFF; IF OPEN < MYPRICE THEN BEGIN MYPRICE: = OPEN; //SELL(HOLDING>0,0,LIMITR,MYPRICE); TSELL(tHOLDING>0 ,0 ,lmt , MYPRICE ) //BUYSHORT(HOLDING=0,LOTS,LIMITR,MYPRICE); TBUYSHORT(tHOLDING=0 ,LOTS ,LMT ,MYPRICE ) END END IF TIME >= 145900 THEN BEGIN tSELL(HOLDING>0,0,Lmt,OPEN); tSELLSHORT(HOLDING<0,0,Lmt,OPEN); END