AUTOFILTER的使用 [贏順期貨]
- 咨詢內容:
請幫助看看,下面是同一個模型號,前面是不使用AUTOFILTER,但是自已對持倉是做了控制的。后面使作AUTOFILTER,兩者的收益差異是很大,檢查一下是第一個持倉控制寫法做有問題,還是其他原因導致的?謝謝
/**************** 不使用自動過濾 ****************/
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //當天開盤后的K線數量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高價
LL:=REF(LLV(LOW,NN),NN); //前一天最低價
CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盤價
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日開盤價
HHJ:HHV(H,NN); //今日到當前K線的最高價
LLJ:=LLV(L,NN); //今日到當前K線的最低價
RANGEMIN:=0.2*(OO/100); //設定區間 0.2 * (今日開盤價 / 100)
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //過濾條件
SSETUP:HH+0.35*(CC-LL); //中軌上頂部區間:ssetup:=昨日最高+0.35*(昨天收盤-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中軌下頂部區間:bsetup:=昨最低-0.35*(昨最高-昨收盤);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中軌上區間:senter:=((1+0.07)/2)*(昨最高+昨收盤)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中軌下區間:benter:=((1+0.07)/2*(昨最低+昨收盤)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高價格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低價格)/3
SG:=SSETUP+0.25*(SSETUP-BSETUP); //買開位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //賣開位
TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示從所選擇時間區域的第二根K線開始,如2010/4/16開始的話,從17日開始買賣
BB:=HHJ>SSETUP; //今最高價》SSETUPDD:=LLJ0,SPK(BUYVOL);
AA=1&&DD=1&&CROSS(H,ZGX)&&SELLVOL>0,BPK(SELLVOL);
AA=1&&CROSS(H,SG)&&BUYVOL<1&&SELLVOL<1,BK(1);
AA=1&&CROSS(XG,L)&&BUYVOL<1&&SELLVOL<1,SK(1);
((H-SKPRICE>=OO/100)||TIME>=1510)&&SELLVOL>0,BP(SELLVOL);
((BKPRICE-L>=OO/100)||TIME>=1510)&&BUYVOL>0,SP(BUYVOL);/**************** 使用自動過濾 AUTOFILTER; ****************/
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //當天開盤后的K線數量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高價
LL:=REF(LLV(LOW,NN),NN); //前一天最低價
CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盤價
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日開盤價
HHJ:HHV(H,NN); //今日到當前K線的最高價
LLJ:=LLV(L,NN); //今日到當前K線的最低價
RANGEMIN:=0.2*(OO/100); //設定區間 0.2 * (今日開盤價 / 100)
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //過濾條件
SSETUP:HH+0.35*(CC-LL); //中軌上頂部區間:ssetup:=昨日最高+0.35*(昨天收盤-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中軌下頂部區間:bsetup:=昨最低-0.35*(昨最高-昨收盤);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中軌上區間:senter:=((1+0.07)/2)*(昨最高+昨收盤)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中軌下區間:benter:=((1+0.07)/2*(昨最低+昨收盤)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高價格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低價格)/3
SG:=SSETUP+0.25*(SSETUP-BSETUP); //買開位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //賣開位
TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示從所選擇時間區域的第二根K線開始,如2010/4/16開始的話,從17日開始買賣
BB:=HHJ>SSETUP; //今最高價》SSETUP
DD:=LLJ=OO/100)||TIME>=1510,BP;
(BKPRICE-L>=OO/100)||TIME>=1510,SP;
AUTOFILTER; - 贏順技術人員:
在您的過濾模型中,找不到您的開倉條件,請您補齊
- 贏順客服:
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //當天開盤后的K線數量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高價
LL:=REF(LLV(LOW,NN),NN); //前一天最低價CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盤價
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日開盤價
HHJ:HHV(H,NN); //今日到當前K線的最高價
LLJ:=LLV(L,NN); //今日到當前K線的最低價
RANGEMIN:=0.2*(OO/100); //設定區間 0.2 * (今日開盤價 / 100)//STARTNOW:=BARPOS-1; //這個寫法欠妥,暫改為STARTNOW:=BARPOS;
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //過濾條件
SSETUP:HH+0.35*(CC-LL); //中軌上頂部區間:ssetup:=昨日最高+0.35*(昨天收盤-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中軌下頂部區間:bsetup:=昨最低-0.35*(昨最高-昨收盤);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中軌上區間:senter:=((1+0.07)/2)*(昨最高+昨收盤)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中軌下區間:benter:=((1+0.07)/2*(昨最低+昨收盤)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高價格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低價格)/3SG:=SSETUP+0.25*(SSETUP-BSETUP); //買開位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //賣開位TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示從所選擇時間區域的第二根K線開始,如2010/4/16開始的話,從17日開始買賣
BB:=HHJ>SSETUP; //今最高價》SSETUP
DD:=LLJ<BSETUP; //今最低價《BSETUP
AA=1&&BB=1&&CROSS(ZGS,L),SPK;
AA=1&&DD=1&&CROSS(H,ZGX),BPK;AA=1&&CROSS(H,SG),BK;
AA=1&&CROSS(XG,L),SK;(H-SKPRICE>=OO/100)||TIME>=1510,BP;
(BKPRICE-L>=OO/100)||TIME>=1510,SP;
AUTOFILTER;///////////////////////////////////////////
NN:=BARSLAST(DATE<>REF(DATE,1))+1; //當天開盤后的K線數量
HH:=REF(HHV(HIGH,NN),NN); //前一天最高價
LL:=REF(LLV(LOW,NN),NN); //前一天最低價CC:=VALUEWHEN(DATE<>REF(DATE,1),REF(CLOSE,1)); //前一天收盤價
OO:=VALUEWHEN(DATE<>REF(DATE,1),O); //今日開盤價
HHJ:HHV(H,NN); //今日到當前K線的最高價
LLJ:=LLV(L,NN); //今日到當前K線的最低價
RANGEMIN:=0.2*(OO/100); //設定區間 0.2 * (今日開盤價 / 100)//STARTNOW:=BARPOS-1; //這個寫法欠妥,暫改為STARTNOW:=BARPOS;
STARTNOW:=BARPOS;
RFILTER:=(HH-LL)>RANGEMIN; //過濾條件
SSETUP:HH+0.35*(CC-LL); //中軌上頂部區間:ssetup:=昨日最高+0.35*(昨天收盤-昨天最低);
BSETUP:LL-0.35*(HH-CC); //中軌下頂部區間:bsetup:=昨最低-0.35*(昨最高-昨收盤);
SENTER:(1+0.07)/2*(HH+CC)-0.07*LL; //中軌上區間:senter:=((1+0.07)/2)*(昨最高+昨收盤)-0.07*昨天最低;
BENTER:(1+0.07)/2*(CC+LL)-0.07*HH; //中軌下區間:benter:=((1+0.07)/2*(昨最低+昨收盤)-0.07*昨天最高;
ZGS:SENTER+(HHJ-SSETUP)/3; //senter + (今天最高價格-ssetup)/3
ZGX:BENTER-(BSETUP-LLJ)/3; //BENTER-(BSETUP-今天最低價格)/3SG:=SSETUP+0.25*(SSETUP-BSETUP); //買開位:
XG:BSETUP-0.25*(SSETUP-BSETUP); //賣開位TT:CROSS(ZGS,L);
AA:=TIME>0900&&TIME<1435&&BARPOS>=271&&RFILTER=1; //STARTNOW>=2 表示從所選擇時間區域的第二根K線開始,如2010/4/16開始的話,從17日開始買賣
BB:=HHJ>SSETUP; //今最高價》SSETUP
DD:=LLJ<BSETUP; //今最低價《BSETUP
AA=1&&BB=1&&CROSS(ZGS,L)&&BUYVOL>0,SPK(BUYVOL);
AA=1&&DD=1&&CROSS(H,ZGX)&&SELLVOL>0,BPK(SELLVOL);AA=1&&CROSS(H,SG)&&BUYVOL<1&&SELLVOL<1,BK(1);
AA=1&&CROSS(XG,L)&&BUYVOL<1&&SELLVOL<1,SK(1);((H-SKPRICE>=OO/100)||TIME>=1510)&&SELLVOL>0,BP(SELLVOL);
((BKPRICE-L>=OO/100)||TIME>=1510)&&BUYVOL>0,SP(BUYVOL); - 網友回復:
請問根據你的原理,哪一種是您想要的結果?
根據對您的模型的分析,這兩個模型之間的差異主要是由于SPK和BPK的信號開倉不同而導致的。
在您的非過濾模型中,SPK和BPK模型由于不滿足BUYVOL>0和SELLVOL>0,因此無法開倉
AA=1&&BB=1&&CROSS(ZGS,L)&&BUYVOL>0,SPK(BUYVOL);
AA=1&&DD=1&&CROSS(H,ZGX)&&SELLVOL>0,BPK(SELLVOL);
如果以上指標公式不適用于您常用的行情軟件
或者您想改編成選股公式,以便快速選出某種形態個股的話,
- 上一篇:DUALVOL如何編寫進指標
- 下一篇:均線模型編寫求助
相關文章
-
沒有相關內容