代碼
//策略:恒溫器系統(tǒng)
//類型:中長(zhǎng)期通道突破
//版本:1.0
//修訂時(shí)間:2012.11.6
//Designed By Rogarz
//中間變量
input:m(50,5,300,30),N(1.25,0.1,10,0.1),ss(1,1,100,1),k1(0.5,0.1,1,0.1),k2(0.75,0.1,1,0.1);
variable:A:=0;//0表示倉(cāng)位是在趨勢(shì)模式下下單 1表示在震蕩模式下下單
MID : MA(CLOSE,M);//布林中軌
UPPER:MID + N*STD(CLOSE,M);//布林上軌
LOWER:MID - N*STD(CLOSE,M);//布林下軌
今開(kāi):=callstock(stklabel,vtopen,6,0);
CMI:=abs(close-ref(close,29))/(hhv(high,30)-LLV(L,30))*100;//0-100 取值越大,說(shuō)明趨勢(shì)越強(qiáng),CMI<20震蕩模式,反之為趨勢(shì)
關(guān)鍵價(jià):(high+low+close)/3;//關(guān)鍵價(jià)的計(jì)算,國(guó)外常稱作中樞價(jià)格(pivot point)
ATR10:=ma(tr,10);
3日均低價(jià):=ma(L,3);
3日均高價(jià):=ma(h,3);
手?jǐn)?shù):=ss;
//交易條件
if C<關(guān)鍵價(jià) then begin
趨買市開(kāi)多平空條件:=C>max(今開(kāi)+k1*ATR10,3日均低價(jià));
趨買市開(kāi)空平多條件:=C<min(今開(kāi)-k2*ATR10,3日均高價(jià));
end
if c>關(guān)鍵價(jià) then begin
趨賣市開(kāi)多平空條件:=C>max(今開(kāi)+k2*atr10,3日均低價(jià));
趨賣市開(kāi)空平多條件:=C<min(今開(kāi)-k1*atr10,3日均高價(jià));
end
趨勢(shì)開(kāi)多條件:=c>upper;
趨勢(shì)開(kāi)空條件:=c<lower;
趨勢(shì)平多條件:=c<mid;
趨勢(shì)平空條件:=c>mid;
震蕩多單平倉(cāng)條件:=c<=enterprice-3*atr10;
震蕩空單平倉(cāng)條件:=c>=enterprice+3*ATR10;
//交易系統(tǒng)
if cmi<20 then begin {震蕩模式}
if C<關(guān)鍵價(jià) then begin
趨買市平空:sellshort(趨買市開(kāi)多平空條件 and holding<=0,手?jǐn)?shù),market);
趨買市平多:sell(趨買市開(kāi)空平多條件 and holding>=0,手?jǐn)?shù),market);
趨買市開(kāi)多:buy(趨買市開(kāi)多平空條件 and holding<=0,手?jǐn)?shù),market);
趨買市開(kāi)空:buyshort(趨買市開(kāi)空平多條件 and holding>=0,手?jǐn)?shù),market);
A:=1;
end
if c>關(guān)鍵價(jià) then begin
趨賣市平空:sellshort(趨賣市開(kāi)多平空條件 and holding<=0,手?jǐn)?shù),market);
趨賣市平多:sell(趨賣市開(kāi)空平多條件 and holding>=0,手?jǐn)?shù),market);
趨賣市開(kāi)多:buy(趨賣市開(kāi)多平空條件 and holding<=0,手?jǐn)?shù),market);
趨賣市開(kāi)空:buyshort(趨賣市開(kāi)空平多條件 and holding>=0,手?jǐn)?shù),market);
a:=1;
end
ENd
if cmi>=20 then BEGIN {趨勢(shì)模式}
if a=1 then begin //趨勢(shì)模式下 原震蕩模式下 倉(cāng)位處理
震蕩多單平倉(cāng):sell(震蕩多單平倉(cāng)條件 and holding>0,手?jǐn)?shù),market);
震蕩空單平倉(cāng):sellshort(震蕩空單平倉(cāng)條件 and holding<0,手?jǐn)?shù),market);
a:=0;
end
if a=0 then begin
趨勢(shì)平空:sellshort(趨勢(shì)平空條件 and holding<0,手?jǐn)?shù),market);
趨勢(shì)平多:sell(趨勢(shì)平多條件 and holding>0,手?jǐn)?shù),market);
趨勢(shì)開(kāi)多:buy(趨勢(shì)開(kāi)多條件 and holding<=0,手?jǐn)?shù),market);
趨勢(shì)開(kāi)空:buyshort(趨勢(shì)開(kāi)空條件 and holding>=0,手?jǐn)?shù),market);
A:=0;
end
ENd
//注意先平后開(kāi)原則
3ZD:=HHV(L,3);
3ZG:=LLV(H,3);
3JD:=MA(L,3);
3JG:=MA(H,3);
GJJ:REF((HIGH+LOW+CLOSE)/3,1);
//
M:=50;
N:=1.25;
K1:=0.5;
K2:=0.75;
MID :MA(CLOSE,M);//布林中軌
TOP:MID + N*STD(CLOSE,M);//布林上軌
BOTTOM:MID - N*STD(CLOSE,M);//布林下軌
N1:=BARSLAST(DATE<>REF(DATE,1))+1;
KP:=REF(O,N1-1);
CMIA:=ABS(CLOSE-REF(CLOSE,29))/(HHV(HIGH,30)-LLV(L,30))*100;
CMI:=MA(CMIA,2);//
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,10);
#IMPORT[DAY,1,JZT] AS VAR
3D:=VAR.3JD;
3G:=VAR.3JG;
ZG:=VAR.3ZG;
ZD:=VAR.3ZD;
PIVOT:VAR.GJJ;
QS:MAX(KP+0.5*ATR,3D);
QX:MIN(KP-0.5*ATR,3G);
//引用日周期均線
//震蕩市1
CMI<=20&&C<PIVOT&&C>MAX(KP+0.5*ATR,3D)&&BKVOL=0,BPK('A');//
CMI<=20&&C<PIVOT&&C<MIN(KP-0.75*ATR,3G)&&SKVOL=0,SPK('A');
//震蕩市2
CMI<=20&&C>PIVOT&&C>MAX(KP+0.75*ATR,ZD)&&BKVOL=0,BPK('A');
CMI<=20&&C>PIVOT&&C<MIN(KP-0.5*ATR,ZG)&&SKVOL=0,SPK('A');//
C<BKPRICE-3*ATR,SP('A');
C>SKPRICE+3*ATR,BP('A');
//趨勢(shì)
C>TOP&&BKVOL=0,BK('B');
C<BOTTOM&&SKVOL=0,SK('B');
C<MID,SP('B');
C>MID,BP('B');
AUTOFILTER;
3ZD:=HHV(L,3);
3ZG:=LLV(H,3);
3JD:=MA(L,3);
3JG:=MA(H,3);
GJJ:REF((HIGH+LOW+CLOSE)/3,1);
//
這一段是需要新建一個(gè)名稱為JZT的指標(biāo)的。
下面的程序再加載在主圖上。
我們這里是測(cè)試成功的。