咨詢內(nèi)容:
請(qǐng)教:如果我用 if then begin 語句定義了一系列的開倉(cāng)條件 以及開倉(cāng)價(jià)格 ,那么在接下來的寫開倉(cāng)命令
還是要按照BUY(COND,V,Type,P);的格式寫嗎? 這是cond已經(jīng)在前面定義一大堆了,后面如何處理?
金字塔客服:
這個(gè)有什么疑問嗎?cond寫好后,后面就是下單數(shù)量,下單類型,下單價(jià)格
用戶回復(fù):我是初學(xué)者,在自己練習(xí)學(xué)寫海龜模型,其中遇到了些問題,寫出來的代碼在K線圖上沒有交易顯示,而且測(cè)試只有一次開倉(cāng),到最后測(cè)試日強(qiáng)制平倉(cāng)。還有這個(gè)問題,一直困擾我,估計(jì)很多初學(xué)者也會(huì)遇到:如果我用 if then begin 語句定義了一系列的開倉(cāng)條件 以及開倉(cāng)價(jià)格 ,那么在接下來的寫開倉(cāng)命令 還是要按照BUY(COND,V,Type,P);的格式寫嗎? 這是cond已經(jīng)在前面定義一大堆了,后面如何處理 這是我的代碼,大神給指導(dǎo)下唄,也有利于其他初學(xué)者學(xué)習(xí)。謝謝//聲明參數(shù)input:D20(20,10,60,1);;input:D10(10,5,30,1);input:ATRL(13,5,30,1);input: risk(1,0.5,5,0.1) //聲明變量VARIABLE:H20:=close;VARIABLE:L20:=CLOSE;VARIABLE:H10:=Close;VARIABLE:L10:=CLOSE; //VARIABLE :_DEBUG: = 1 ;//是否輸出前臺(tái)交易指令 (借鑒) VARIABLE:myenterprice:=0; //初始開倉(cāng)價(jià)格;VARIABLE:myexitprice:=0;//初始平倉(cāng)價(jià)格VARIABLE:units:=0;//交易單位VARIABLE:position:=0;//初始倉(cāng)位VARIABLE:sendorderthisbar:=0;Variable:units:=0;Variable:tunits:=0;VARIABLE:jdcond:=0;VARIABLE:pdcond:=0;VARIABLE:dzcond:=0;VARIABLE:jkcond:=0;VARIABLE:pkcond:=0;VARIABLE:kzcond:=0; H20:=ref(HHV(h,20),1);L20:=ref(LLV(l,20),1);H10:=ref(HHV(h,10),1);L10:=ref(LLV(l,10),1); KD:=c>H20; //開多條件PD:=c<L10; //平多條件KK:=c<L20; //開空條件PK:=c>H10; //平空條件N:=ma(TR,ATRL);units:=ASSET*risk*0.01/N; //建立倉(cāng)位if BARPOS=1 then begin end; //初始化; if position=0 and BARPOS>D20 and h>l then begin //建立多頭倉(cāng)位 if KD then BEGIN myentryprice:=if(open>H20+MINDIFF, open ,H20+MINdiff); buy(KD,units,LIMITR,myentryprice); position:=1; tuntis:=1; sendoederthisbar:=1; end; //建立空頭倉(cāng)位 if KK then begin myentryprice:=if(open<L20-MINDIFF ,open ,L20-MINDIFF); BUYSHORT( KK,units,LIMITR,myentryprice); position:=-1; tunits:=1; sendorderthisbar:=1; end end // jdcond:=( position=1 and BARPOS>D20 and H>l ) ; if jdcond then begin //多頭加倉(cāng) WHILE (h>myentryprice+0.5*N) and tunits<4 do begin myentryprice:=if(open>myentryprice+0.5*N,open,myentryprice+0.5*N); myentryprice:=CEILING(myentryprice/MINDIFF)*Mindiff; buy( (h>myentryprice+0.5*N) and tunits<4 ,units,LIMITR,myentryprice); position:=1; tunits:=tunits+1; sendoederthisbar:=1; end //多頭離場(chǎng) pdcond:= pd and sendorderthisbar=0 ; if pdcond then begin myexitprice:=if(open<L10-MINDIFF,open,L10-MINDIFF); sell( pdcond, 0,limitr,myexitprice); position:=0; tunits:=0; end //多頭止損 dzcond:=( low<myentryprice-2*N and position=1 and sendorderthisbar=0) if dzcond then begin myexitprice:=if(open<myentryprice-2*N,open,myentryprice-2*N); myexitprice:=floor(myexitprice/MINDIFF)*mindiff; sell( dzcond,0,limitr,myexitprice); position:=0; tunits:=0; ENd; end //加倉(cāng) jkcond:= (position=-1 and BARPOS>d20 and H>l) ; if jkcond then begin //空頭加倉(cāng) WHILE (L<myentryprice-0.5*N) and tunits<4 do begin myentryprice:=if(open<myentryprice-0.5*N,open,myentryprice-0.5*N); myentryprice:=floor(myentryprice/MINDIFF)*Mindiff; buyshort( (L<myentryprice-0.5*N) and tunits<4,units,LIMITR,myentryprice); position:=-1; tunits:=tunits+1; sendoederthisbar:=1; end //空頭離場(chǎng) pkcond:= pk and sendorderthisbar=0 ; if pkcond then begin myexitrice:=if(open>H10+MINDIFF,open,h10+MINDIFF); sellshort( pkcond,0,limitr,myexitprice); position:=0; tunits:=0; end //空頭止損 kzcond:=( h>myentryprice+2*N and position=-1 and sendorderthisbar=0) if kzcond then begin myexitprice:=if(open>myentryprice+2*N,open,myentryprice+2*N); myexitprice:=CEILING(myexitprice/MINDIFF)*mindiff; sellshort( kzcond,0,limitr,myexitprice); position:=0; tunits:=0; ENd; end