如圖,兩線交叉成型做單,平空與開多條件同,平多與開空條件同。根據軟件例子編的止盈止損策略,加上了限制開倉手數。VARIABLE:kdss=0,kkss=0;發現貌似開多(平多),與開空(平空)各只開一次,然后沒交易了,跟設想的每個波段交易一次想法不同。錯誤在哪里?及如何改呢? A1:stkindi('','ND',0,22,45);A2:=stkindi('','XD',0,17,0); BUY1:=A1>A2;SELL1:=A1<A2; ZSDS:=3; {止損點數}//以下變量用于移動止盈,,移動止盈只能保證你盡可能穩健盈利,卻不能保證盈利最大化,如果不想使用,可是將總開關設置為0VARIABLE:YDZY=1; {移動止盈總開關,1為開,0為關}VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存開倉后的最高價、最低價}VARIABLE:DHCDS=3,KHCDS=3; {多、空單回撤點數}VARIABLE:DYLDS=7,KYLDS=7; {多、空單盈利點數,當盈利點數達到這個標準后,如果回撤達到上面的參數值就平倉}VARIABLE:Z3B1:=1; {賺3保1開關}VARIABLE:kdss=0,kkss=0;{開多開空次數} //持有空單IF HOLDING<0 THEN BEGIN IF BUY1 THEN BEGIN //平空單 空平:SELLSHORT(1,0,MARKET),ORDERQUEUE; END //止損 IF C-ENTERPRICE>=ZSDS THEN BEGIN 空損:SELLSHORT(1,0,MARKET),ORDERQUEUE; END //移動止盈 IF YDZY=1 THEN BEGIN //每周期判斷是否創新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //如果盈利超過10點之后回撤達到3點,就平倉,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超過3點 空贏:SELLSHORT(1,0,MARKET); END END END //賺3保1 IF Z3B1=1 THEN BEGIN IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN IF ENTERPRICE-L<=1.2 THEN BEGIN 空保:SELLSHORT(1,0,MARKET); END END ENDEND //開多單 IF HOLDING>=0 AND TIME<143000 AND kdss=0 THEN BEGIN IF BUY1 THEN BEGIN 多開:BUY(1,1,MARKET); HIGHPRICE:=ENTERPRICE; //將開倉價保存到最高價 kdss:=1; END END//持有多單IF HOLDING>0 THEN BEGIN IF SELL1 THEN BEGIN {平多單} 多平:SELL(1,0,MARKET),ORDERQUEUE; END //多單管理 //止損 IF ENTERPRICE-C>=ZSDS THEN BEGIN 多損:SELL(1,0,MARKET),ORDERQUEUE; END //移動止盈 IF YDZY=1 THEN BEGIN //每周期判斷是否創新高 IF H>HIGHPRICE THEN BEGIN HIGHPRICE:=H; END //如果盈利超過10點之后回撤達到3點,就平倉,保住盈利 IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超過3點 多贏:SELL(1,0,MARKET); END END END //賺3保1 IF Z3B1=1 THEN BEGIN IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN IF H-ENTERPRICE<=1.2 THEN BEGIN 多保:SELL(1,0,MARKET); END END ENDEND//開空單IF HOLDING>=0 AND TIME<143000 AND kkss=0 THEN BEGIN IF SELL1 THEN BEGIN 空開:BUYSHORT(1,1,MARKET); LOWPRICE:=ENTERPRICE; kkss:=1; END END
A1:stkindi('','ND',0,22,45);A2:=stkindi('','XD',0,17,0); BUY1:=ND>XD and kdss=0;SELL1:=ND<XD and kkss=0;
//空單管理 //持有空單IF HOLDING<0 AND kkss=0 THEN BEGIN IF BUY1 THEN BEGIN //平空單 空平:SELLSHORT(1,0,MARKET),ORDERQUEUE; kkss:=1; END //止損 IF C-ENTERPRICE>=ZSDS AND kkss=0 THEN BEGIN 空損:SELLSHORT(1,0,MARKET),ORDERQUEUE; kkss:=1; END //移動止盈 IF YDZY=1 THEN BEGIN //每周期判斷是否創新低 IF L<LOWPRICE THEN BEGIN LOWPRICE:=L; END //賺3保1 IF Z3B1=1 THEN BEGIN IF ENTERPRICE-LOWPRICE>=3 AND kkss=0 THEN BEGIN IF ENTERPRICE-L<=1.2 THEN BEGIN 空保:SELLSHORT(1,0,MARKET); kkss:=1; END END ENDEND //如果盈利超過10點之后回撤達到3點,就平倉,保住盈利 IF ENTERPRICE-LOWPRICE>=KYLDS AND kkss=0 THEN BEGIN IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超過3點 空贏1:SELLSHORT(1,0,MARKET); kkss:=1; END END END
[此貼子已經被作者于2014/3/18 11:11:27編輯過]