




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于連續(xù)信號(hào)的交易策略第一節(jié)開倉(cāng)規(guī)則條件:(1)多頭開倉(cāng)進(jìn)場(chǎng)(同時(shí)滿足以下條件):①:傳統(tǒng)多頭開倉(cāng)信號(hào)采用4周規(guī)則交易法{當(dāng)價(jià)格突破4個(gè)星期(相當(dāng)于22個(gè)交易日)內(nèi)的最高價(jià)時(shí),多頭買入開倉(cāng)進(jìn)場(chǎng)}。示例代碼:Inputs:price(close),lots(1);vars:mp(0),ma1(0),ma2(0),condition1(False),condition2(False);mp=marketposition;ma1=Highest(high,20);ma2=Lowest(low,20);condition1=price>ma1[1]andmp<>1;condition2=price<ma2[1]andmp<>-1;ifcondition1
thenbuy("LE")lotscontractnextbar
atmarket;ifprice<ma2thensell("LX")lotscontractnextbaratmarket;ifcondition2thensellshort("SE")lotscontractnextbaratmarket;ifprice>ma1thenbuytocover("SX")lotscontractnextbaratmarket;日線級(jí)別交易系統(tǒng)源碼:Input:InitialCapital(100000),riskpercent(0.1),Len(20);var:lots(0),totalequity(0),time1(False),time2(False),time3(False),up(0),down(0),mp(0);//set-begin//percent10%openorderstotalequity=round((initialcapital+netprofit+openpositionprofit),0);lots=IntPortion((totalequity*riskpercent)/(close*bigpointvalue*0.1));//tradesessiontime1=time>0900andtime<1500;time2=time>2100andtime<2300;time3=time1ortime2;mp=marketposition;//set-end//straetgy-(fourweekbreakoutSYS)up=Highest(high,len);down=Lowest(low,len);//buy-sell(trading)
ifmp<>1
then
begin
buy("B1")lotssharesnextbaratup[1]stop;
end;
ifmp<>-1
then
begin
sellshort("S1")lotssharesnextbaratdown[1]stop;
end;
ifmp>0thensell("SP1")allsharesnextbaratdown[1]stop;
ifmp<0thenbuytocover("BP1")allsharesnextbaratup[1]stop;input:length(20),stop_length(10);var:upline(0),downstop(0);{4周總共有20個(gè)交易日,這里使用length表示,2周總共有10個(gè)交易日,這里使用stop_length表示}upline=highest(close[1],length);downstop=lowest(close[1],stop_length);{upline用于存儲(chǔ)4周內(nèi)價(jià)格的最高價(jià),downstop用于存儲(chǔ)2周內(nèi)價(jià)格的最低價(jià)}ifmarketposition=0andclosecrossaboveuplinethenbuynextbaratmarket;{當(dāng)前無(wú)持倉(cāng)時(shí)并且收盤價(jià)突破4周內(nèi)價(jià)格的最高價(jià)時(shí),執(zhí)行市價(jià)買入}ifmarketposition=1andclosecrossunderdownstopthensellnextbaratmarket;{當(dāng)前多頭持倉(cāng)時(shí)并且收盤價(jià)突破2周內(nèi)價(jià)格的最低價(jià)時(shí),執(zhí)行市價(jià)平倉(cāng)}//MC_FourWeekRuleTradingSystem_Sinput:length(20),stop_length(10);var:downline(0),upstop(0);{參數(shù)length和stop_length和上面一樣}downline=lowest(close[1],length);upstop=highest(close[1],stop_length);{變量downline用于存儲(chǔ)4周內(nèi)價(jià)格的最低價(jià),upstop用于存儲(chǔ)2周內(nèi)價(jià)格的最高價(jià)}ifmarketposition=0andclosecrossunderdownlinethensellshortnextbaratmarket;{當(dāng)前無(wú)持倉(cāng)并且收盤價(jià)跌破4周內(nèi)價(jià)格的最低價(jià)時(shí),執(zhí)行市價(jià)賣出}ifmarketposition=-1andclosecrossaboveupstopthenbuytocovernextbaratmarket;{當(dāng)前空頭持倉(cāng)并且收盤價(jià)突破2周內(nèi)價(jià)格的最高價(jià)時(shí),執(zhí)行市價(jià)平倉(cāng)}策略簡(jiǎn)介:
1、適用于日線周期(若是要跑日線以下則要將20周期放大);
2、趨勢(shì)策略;
3、核心原理:當(dāng)價(jià)格突破20周期日線新高,則進(jìn)場(chǎng)做多,跌破20周期低點(diǎn)進(jìn)場(chǎng)做空。
4、出場(chǎng)有很多種,仍然以順勢(shì)為宜,可選包括但不限于:(1)、做多時(shí)跌破20周期或其它周期新低出場(chǎng),(2),做10或20周期均線,做多時(shí)跌破均線平多,做空時(shí)向上突破新線平空。
5、注意事項(xiàng):適合趨勢(shì)行情,振蕩行情會(huì)虧錢。適用于人工選品種與開始時(shí)機(jī),然后掛策略跑的量化類型。日線級(jí)別交易系統(tǒng)源碼:Input:InitialCapital(100000),riskpercent(0.1),Len(20);var:lots(0),totalequity(0),time1(False),time2(False),time3(False),up(0),down(0),mp(0);//set-begin//percent10%openorderstotalequity=round((initialcapital+netprofit+openpositionprofit),0);lots=IntPortion((totalequity*riskpercent)/(close*bigpointvalue*0.1));//tradesessiontime1=time>0900andtime<1500;time2=time>2100andtime<2300;time3=time1ortime2;mp=marketposition;//set-end//straetgy-(fourweekbreakoutSYS)up=Highest(high,len);down=Lowest(low,len);//buy-sell(trading)
ifmp<>1
then
begin
buy("B1")lotssharesnextbaratup[1]stop;
end;
ifmp<>-1
then
begin
sellshort("S1")lotssharesnextbaratdown[1]stop;
end;
ifmp>0thensell("SP1")allsharesnextbaratdown[1]stop;
ifmp<0thenbuytocover("BP1")allsharesnextbaratup[1]stop;復(fù)制代碼小于日線周期的突破法則,周期設(shè)定為80.Input:InitialCapital(100000),riskpercent(0.1),Len(80);var:lots(0),totalequity(0),time1(False),time2(False),time3(False),up(0),down(0),mp(0);//set-begin//percent10%openorderstotalequity=round((initialcapital+netprofit+openpositionprofit),0);lots=IntPortion((totalequity*riskpercent)/(close*bigpointvalue*0.1));//tradesessiontime1=time>0900andtime<1500;time2=time>2100andtime<2300;time3=time1ortime2;mp=marketposition;//set-end//straetgy-(fourweekbreakoutSYS)up=Highest(high,len);down=Lowest(low,len);//buy-sell(trading)iftime3thenbegin
ifmp<>1
then
begin
buy("B1")lotssharesnextbaratup[1]stop;
end;
ifmp<>-1
then
begin
sellshort("S1")lotssharesnextbaratdown[1]stop;
end;
ifmp>0thensell("SP1")allsharesnextbaratdown[1]stop;
ifmp<0thenbuytocover("BP1")allsharesnextbaratup[1]stop;
end;復(fù)制代碼20周期均線出場(chǎng)法:Input:InitialCapital(100000),riskpercent(0.1),Len(20);var:lots(0),totalequity(0),time1(False),time2(False),time3(False),ma(0),up(0),down(0),mp(0);//set-begin//percent10%openorderstotalequity=round((initialcapital+netprofit+openpositionprofit),0);lots=IntPortion((totalequity*riskpercent)/(close*bigpointvalue*0.1));//tradesessiontime1=time>0900andtime<1500;time2=time>2100andtime<2300;time3=time1ortime2;mp=marketposition;//set-end//straetgy-(fourweekbreakoutSYS)up=Highest(high,len);down=Lowest(low,len);ma0=average(close,len);//buy-sell(trading)//iftime3thenbegin
ifmp<>1
then
begin
buy("B1")lotssharesnextbaratup[1]stop;
end;
ifmp<>-1
then
begin
sellshort("S1")lotssharesnextbaratdown[1]stop;
end;
ifmp>0thensell("SP1")allsharesnextbaratdown[1]stop;
ifmp<0thenbuytocover("BP1")allsharesnextbaratup[1]stop;
//end;復(fù)制代碼臨終發(fā)一個(gè)超級(jí)簡(jiǎn)單的參數(shù)策略版本:
1、周期len取22個(gè)周期,也就一個(gè)月的實(shí)際交易天數(shù),以22個(gè)周期的最高和最低做為價(jià)格上下突破的兩軌;
2、交易時(shí)間跨度為日線級(jí)別;
3、不再加時(shí)間限制。
4、出場(chǎng)也是上下軌為邊界;
5、默認(rèn)本金為10萬(wàn),每一單固定金額為權(quán)益的10%,盈利則權(quán)益大于10萬(wàn),虧損則權(quán)益小于10萬(wàn)。
信號(hào)策略:Input:InitialCapital(100000),riskpercent(0.1),Len(22);var:lots(0),totalequity(0),up(0),down(0),mp(0);//set-begin//percent10%openorderstotalequity=round((initialcapital+netprofit+openpositionprofit),0);lots=IntPortion((totalequity*riskpercent)/(close*bigpointvalue*0.1));mp=marketposition;//set-end//straetgy-(fourweekbreakoutSYS)up=Highest(high,len);down=Lowest(low,len);//buy-sell(trading)
ifmp<>1then
begin
buy("B1")lotssharesnextbaratup[1]stop;
end;
ifmp<>-1then
begin
sellshort("S1")lotssharesnextbaratdown[1]stop;
end;
ifmp>0thensell("SP1")allsharesnextbaratdown[1]stop;
ifmp<0thenbuytocover("BP1")allsharesnextbaratup[1]stop;復(fù)制代碼
指標(biāo):
Input:Len(22),Dev(2);var:up(0),down(0);//straetgysetup-(fourweekbreakoutSYS)up=Highest(high,len);down=Lowest(low,len);ifBarNumber>1thenbeginPlot1(up[1],"up",yellow);plot2(down[1],"down",green);end;復(fù)制代碼
指標(biāo)可以觀察具體的每次進(jìn)場(chǎng)有沒(méi)有符合原理。
精髓為以最簡(jiǎn)單的原理進(jìn)出,并重復(fù)執(zhí)行就是盈利的交易?、冢篖ev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)大于1'Lev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)'的公式與說(shuō)明:開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱是指通過(guò)判斷觸發(fā)開倉(cāng)信號(hào)強(qiáng)度或置信度來(lái)決定是否開倉(cāng)。它用于衡量開倉(cāng)信號(hào)的可靠性和預(yù)測(cè)能力,幫助決策是否執(zhí)行開倉(cāng)操作。海龜資金管理法開倉(cāng)信號(hào)強(qiáng)度可以與資產(chǎn)的波動(dòng)率相關(guān)聯(lián),較高的波動(dòng)率可能表示信號(hào)的強(qiáng)度較高,而較低的波動(dòng)率可能表示信號(hào)的強(qiáng)度較低。海龜資金管理法是一種風(fēng)險(xiǎn)管理策略,該策略針對(duì)資產(chǎn)的波動(dòng)幅度來(lái)進(jìn)行風(fēng)險(xiǎn)控制。波動(dòng)幅度是指資產(chǎn)價(jià)格在一定時(shí)間內(nèi)的波動(dòng)程度。不同品種的波動(dòng)性可能存在差異,某些品種可能更具波動(dòng)性,而其他品種可能相對(duì)較穩(wěn)定。因此,為了使策略在各個(gè)品種上的風(fēng)險(xiǎn)保持一致,需要根據(jù)品種的振幅進(jìn)行交易量的調(diào)整。在實(shí)際市場(chǎng)中,每次觸發(fā)信號(hào)的情況都是不同的,信號(hào)有強(qiáng)弱之分,不同強(qiáng)弱的信號(hào)代表了趨勢(shì)的強(qiáng)弱以及可持續(xù)性。如果轉(zhuǎn)換成連續(xù)的交易信號(hào),來(lái)對(duì)每次信號(hào)的強(qiáng)弱加以區(qū)分,較強(qiáng)的開倉(cāng)信號(hào)對(duì)應(yīng)較高的倉(cāng)位,較弱的開倉(cāng)信號(hào)對(duì)應(yīng)較低的倉(cāng)位。具體公式如下:Position_i=Lev_i*Signal_i其中:Position_i為第i個(gè)標(biāo)的物的開倉(cāng)權(quán)重;Lev_i為第i個(gè)標(biāo)的物的杠桿率;即當(dāng)前開倉(cāng)手?jǐn)?shù)占整體資金規(guī)??砷_倉(cāng)手?jǐn)?shù)的比例。Signal_i為交易信號(hào)。此杠桿率水平由附錄1中的海龜資金管理法來(lái)確定。接下來(lái),我們將對(duì)如何刻畫交易信號(hào)的強(qiáng)弱進(jìn)行研究。附錄1:海龜資金管理法策略中的風(fēng)險(xiǎn)主要由兩部分組成,一部分是策略的潛在虧損,一部分是策略的波動(dòng)。接下來(lái),我們主要圍繞對(duì)策略波動(dòng)進(jìn)行風(fēng)控的方法進(jìn)行介紹。
為使得策略在所有不同品種上面的波動(dòng)幅度可控,我們需要根據(jù)不同品種的波動(dòng)幅度進(jìn)行交易量的調(diào)整。這里所說(shuō)的波動(dòng)幅度通常使用真實(shí)波動(dòng)幅度均值(AverageTrueRange,ATR)來(lái)度量。其中,ATR指標(biāo)的具體計(jì)算公式如下所示:其中:TR_i為TrueRange,用于衡量每日的波動(dòng)幅度,ATR則是TR_i的移動(dòng)平均值。通過(guò)ATR指標(biāo)來(lái)調(diào)整品種杠桿的基本原理是,將波動(dòng)較高的品種賦予相對(duì)較低的杠桿,將波動(dòng)較低的品種賦予相對(duì)較高的杠桿,因此杠桿率與品種的ATR呈反比關(guān)系。更進(jìn)一步地,對(duì)風(fēng)險(xiǎn)的控制要求我們知道1單位ATR的波動(dòng)對(duì)應(yīng)我們賬戶資金波動(dòng)的多少,這里假設(shè)我們要讓1單位ATR的波動(dòng)正好等于我們策略整體資金規(guī)模的0.5%。假設(shè)我們使用的是一個(gè)單位賬戶,即總資金規(guī)模為1。那么,我們將0.5%除以對(duì)應(yīng)的1單位ATR則為我們實(shí)際應(yīng)開出的合約數(shù)量。即此刻交易應(yīng)該開出的合約手?jǐn)?shù)。如果我們需要計(jì)算的是一個(gè)杠桿率即當(dāng)前開倉(cāng)手?jǐn)?shù)占整體資金規(guī)??砷_倉(cāng)手?jǐn)?shù)的比例,那么需要除以滿倉(cāng)狀態(tài)下可以開出的總合約數(shù)量。具體計(jì)算公式為:Pos_ATR=0.5%/ATRPos=1/CloseLev_ATR=Pos_ATR/Pos,即等于0.5%除以ATR再乘以Close。其中:Poe_ATR為1單位ATR對(duì)應(yīng)資金規(guī)模0.5%波動(dòng)的應(yīng)開手?jǐn)?shù);Pos為全部資金對(duì)應(yīng)滿倉(cāng)可開手?jǐn)?shù);Close為收盤價(jià);Lev_ATR為應(yīng)開手?jǐn)?shù)除以滿倉(cāng)可開手?jǐn)?shù)的開倉(cāng)杠桿率。由上面算法計(jì)算出來(lái)的開倉(cāng)杠桿率具有根據(jù)ATR波動(dòng)調(diào)整杠桿率大小的特性,當(dāng)一個(gè)品種的日均波動(dòng)較大時(shí),我們傾向于給予該品種較低的杠桿,而反之,如果一個(gè)品種的日均波動(dòng)較小,我們則可以給該品種較高的杠桿。從風(fēng)險(xiǎn)控制的角度如果一個(gè)品種的波動(dòng)較大,給予較小杠桿也是出于對(duì)資金安全的考慮,防止由于較大的波動(dòng)幅度而觸發(fā)穿倉(cāng)風(fēng)險(xiǎn)。海龜資金管理法確定杠桿率的具體計(jì)算公式為:Lev_ATR=Pos_ATR/Pos=0.5%/ATR*Close即ATR/Close=0.5%/Lev_ATR其中:Pos_ATR為1單位ATR對(duì)應(yīng)資金規(guī)模0.5%波動(dòng)的應(yīng)開手?jǐn)?shù);Pos為全部資金對(duì)應(yīng)滿倉(cāng)的可開手?jǐn)?shù);Close為收盤價(jià);Lev_ATR為應(yīng)開手?jǐn)?shù)除以滿倉(cāng)手?jǐn)?shù)的開倉(cāng)杠桿率;由上面算法計(jì)算出來(lái)的開倉(cāng)杠桿率具有根據(jù)ATR波動(dòng)調(diào)整杠桿率大小的特性。ATR與收盤價(jià)的比值衡量了價(jià)格振幅比率的大小;如果二者比值小于0.5%,則說(shuō)明此時(shí)開倉(cāng)杠桿率Lev_ATR大于1,此時(shí)波動(dòng)較小,開倉(cāng)信號(hào)較強(qiáng);如果二者比值大于0.5%,則說(shuō)明開倉(cāng)杠桿率Lev_ATR小于1,此時(shí)波動(dòng)較大,開倉(cāng)信號(hào)較弱。因此,當(dāng)開倉(cāng)杠桿率Lev_ATR小于1,即波動(dòng)較大時(shí),即使此時(shí)傳統(tǒng)信號(hào)為1,我們依然平倉(cāng)操作。//價(jià)格波動(dòng)相關(guān)變量ATRValue(0),LevATR(0),//計(jì)算ATRATRValue=AvgTrueRange(14);//使用14周期的ATR,可根據(jù)需要調(diào)整//計(jì)算杠桿率LevATRLevATR=(0.5/ATRValue)*Close;開倉(cāng)時(shí)信號(hào)強(qiáng)弱判斷(Lev-atr):FunctionCalculate_Lev_ATR(InputPriceAsNumericSeries,//輸入價(jià)格序列(例如收盤價(jià))HighPricesAsNumericSeries,//最高價(jià)序列LowPricesAsNumericSeries,//最低價(jià)序列ATRPeriodAsNumeric,//ATR的計(jì)算周期RiskPerUnitATRAsNumeric,//每單位ATR對(duì)應(yīng)的資金波動(dòng)比例TotalCapitalAsNumeric//總資金規(guī)模)ReturnsNumeric;Vars:TrueRange(0),//每日的真實(shí)波動(dòng)幅度(TrueRange)ATRValue(0),//ATR值Pos_ATR(0),//每單位ATR應(yīng)開出的手?jǐn)?shù)Pos_Full(0),//滿倉(cāng)狀態(tài)下可開的手?jǐn)?shù)Lev_ATR(0);//開倉(cāng)杠桿率//計(jì)算每日的真實(shí)波動(dòng)幅度(TrueRange)TrueRange=MaxList(HighPrices-LowPrices,AbsValue(HighPrices-InputPrice[1]),AbsValue(LowPrices-InputPrice[1]));//使用移動(dòng)平均方法計(jì)算ATRATRValue=Average(TrueRange,ATRPeriod);//計(jì)算每單位ATR應(yīng)開出的手?jǐn)?shù)Pos_ATR=RiskPerUnitATR/ATRValue;//計(jì)算滿倉(cāng)狀態(tài)下可開的手?jǐn)?shù)Pos_Full=TotalCapital/InputPrice;//計(jì)算開倉(cāng)杠桿率Lev_ATRIfATRValue>0ThenLev_ATR=Pos_ATR/Pos_Full;ElseLev_ATR=0;//防止除以零//返回計(jì)算結(jié)果ReturnLev_ATR;EndFunction;可以通過(guò)以下方式調(diào)用`Calculate_Lev_ATR`函數(shù):Inputs:ATRPeriod(14),//ATR的計(jì)算周期RiskPerUnitATR(0.005),//每單位ATR對(duì)應(yīng)的資金波動(dòng)比例TotalCapital(1);//總資金規(guī)模Vars:Lev_ATR_Value(0);//存儲(chǔ)計(jì)算結(jié)果//調(diào)用函數(shù)計(jì)算Lev_ATRLev_ATR_Value=Calculate_Lev_ATR(Close,High,Low,ATRPeriod,RiskPerUnitATR,TotalCapital);//輸出結(jié)果到圖表或日志Print("當(dāng)前Lev_ATR值為:",Lev_ATR_Value);杠桿設(shè)置:從波動(dòng)率的角度來(lái)看,商品交易策略有高波動(dòng)策略和低波動(dòng)率策略之分。不同的投資者對(duì)于策略波動(dòng)率水平的選擇和接受度也不盡相同。但是對(duì)于同一策略而言,一旦策略開始交易,投資者往往希望其波動(dòng)率處在一個(gè)較為穩(wěn)定的區(qū)間,而不是在高波動(dòng)率和低波動(dòng)率間不斷變化切換。因此,在策略被研發(fā)設(shè)計(jì)之后,我們希望可以通過(guò)實(shí)時(shí)監(jiān)控這個(gè)策略的表現(xiàn)以及風(fēng)險(xiǎn)屬性,使得策略每年的波動(dòng)率都近似為某一我們?cè)O(shè)定的目標(biāo)波動(dòng)率。具體做法是:我們?cè)诿總€(gè)月的月末,回頭看過(guò)去一年內(nèi)策略的運(yùn)行情況,計(jì)算過(guò)去一年策略收益表現(xiàn)的波動(dòng)率,并且將目標(biāo)波動(dòng)率設(shè)置為15%(取決于對(duì)于策略預(yù)期的杠桿率水平,通常維持在2倍杠桿左右)。那么波動(dòng)率調(diào)整系數(shù)的計(jì)算公式可以表示為:Mul_vol=15%/Vol其中,Mul_vol為已經(jīng)實(shí)現(xiàn)波動(dòng)率調(diào)整的系數(shù);Vol為策略在過(guò)去1年中已實(shí)現(xiàn)的波動(dòng)率。通過(guò)對(duì)策略表現(xiàn)波動(dòng)率的調(diào)整,可以使得策略在不同市場(chǎng)環(huán)境下進(jìn)行的整體風(fēng)險(xiǎn)趨于一致。出于實(shí)際使用情況考慮,我們?cè)O(shè)置最大杠桿率為4倍杠桿。因此當(dāng)Lev的絕對(duì)值大于4時(shí),我們截?cái)酁?。至此,我們通過(guò)對(duì)開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱(由ATR與收盤價(jià)的比值計(jì)算)進(jìn)行了介紹,完成了對(duì)開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱部分的說(shuō)明。//杠桿調(diào)整相關(guān)變量Volatility(0),MulVol(0),//其他變量ContractSize(1),//假設(shè)合約乘數(shù)為1,需根據(jù)實(shí)際情況修改MaxLeverage(4);//計(jì)算策略波動(dòng)率Volatility=StdDev(Close,252);//使用252周期計(jì)算年化波動(dòng)率,可根據(jù)需要調(diào)整//計(jì)算波動(dòng)率調(diào)整系數(shù)MulVolMulVol=0.15/Volatility;//最終杠桿率計(jì)算,截?cái)嘣?倍杠桿Leverage=Min(Abs(LevATR*MulVol),MaxLeverage);//定義函數(shù):計(jì)算杠桿調(diào)整系數(shù)和當(dāng)前杠桿率FunctionCalculateLeverage(TargetVolatility,//輸入目標(biāo)波動(dòng)率(例如0.15)MaxLeverage,//輸入最大杠桿率(例如4)HistoricalReturns[]//輸入過(guò)去一年的日收益率數(shù)組)ReturnsCurrentLeverage;Vars:HistoricalVolatility(0),//歷史波動(dòng)率LeverageAdjustment(0),//杠桿調(diào)整系數(shù)CurrentLeverage(1);//當(dāng)前杠桿率(初始值為1)//計(jì)算歷史波動(dòng)率(標(biāo)準(zhǔn)差)HistoricalVolatility=StdDev(HistoricalReturns,ArraySize(HistoricalReturns));//計(jì)算杠桿調(diào)整系數(shù)IfHistoricalVolatility>0ThenBeginLeverageAdjustment=TargetVolatility/HistoricalVolatility;IfAbs(LeverageAdjustment)>MaxLeverageThenBeginLeverageAdjustment=IIf(LeverageAdjustment>0,MaxLeverage,-MaxLeverage);End;EndElseBeginLeverageAdjustment=MaxLeverage;//防止除以零的情況End;//更新當(dāng)前杠桿率CurrentLeverage=LeverageAdjustment;ReturnCurrentLeverage;End;//主程序部分:調(diào)用函數(shù)并輸出結(jié)果Vars:DailyReturns[252],//存儲(chǔ)過(guò)去一年的日收益率TargetVolatility(0.15),//目標(biāo)波動(dòng)率(15%)MaxLeverage(4),//最大杠桿率(4倍)CurrentLeverage(1);//當(dāng)前杠桿率//每月末計(jì)算杠桿率IfDayOfMonth(Date)==DaysInMonth(Month(Date),Year(Date))ThenBegin//填充過(guò)去一年的日收益率數(shù)組ForValue1=0ToArraySize(DailyReturns)-1BeginDailyReturns[Value1]=(Close/Close[Value1+1]-1);End;//調(diào)用函數(shù)計(jì)算當(dāng)前杠桿率CurrentLeverage=CalculateLeverage(TargetVolatility,MaxLeverage,DailyReturns);//輸出結(jié)果Print(Date,"CurrentLeverage:",CurrentLeverage);End;以下代碼實(shí)現(xiàn)了基于市場(chǎng)波動(dòng)率和趨勢(shì)強(qiáng)度動(dòng)態(tài)調(diào)整衰減因子的功能:```easylanguage//定義變量Vars:DecayFactor(0.94),//初始衰減因子HistoricalVolatility(0),//歷史波動(dòng)率Variance(0),//波動(dòng)率方差A(yù)DXValue(0),//ADX值(趨勢(shì)強(qiáng)度)TrendStrengthThreshold(25);//趨勢(shì)強(qiáng)度閾值//計(jì)算每日收益率Vars:DailyReturn(0);DailyReturn=Close/Close[1]-1;//動(dòng)態(tài)調(diào)整衰減因子ADXValue=Average(DirectionalMovementIndex(14),3);//使用ADX衡量趨勢(shì)強(qiáng)度IfADXValue>TrendStrengthThresholdThenBeginDecayFactor=0.9;//強(qiáng)趨勢(shì)時(shí)降低衰減因子EndElseIfStdDev(DailyReturn,20)>0.02ThenBeginDecayFactor=0.94;//高波動(dòng)時(shí)降低衰減因子EndElseBeginDecayFactor=0.97;//低波動(dòng)或弱趨勢(shì)時(shí)提高衰減因子End;//使用指數(shù)加權(quán)移動(dòng)平均(EWMA)計(jì)算波動(dòng)率IfBarNumber()==1ThenBeginVariance=DailyReturn^2;//初始化方差EndElseBeginVariance=DecayFactor*Variance+(1-DecayFactor)*(DailyReturn^2);End;HistoricalVolatility=Sqrt(Variance);//輸出結(jié)果Print(Date,"DecayFactor:",DecayFactor,"Volatility:",HistoricalVolatility,"ADXValue:",ADXValue);```③、代碼說(shuō)明a.動(dòng)態(tài)調(diào)整衰減因子-使用`ADXValue`衡量趨勢(shì)強(qiáng)度:-如果ADX值大于`TrendStrengthThreshold`(如25),表示市場(chǎng)處于強(qiáng)趨勢(shì)狀態(tài),降低衰減因子至0.9。-使用短期波動(dòng)率(`StdDev(DailyReturn,20)`)衡量市場(chǎng)波動(dòng)性:-如果波動(dòng)率超過(guò)2%(即0.02),表示市場(chǎng)處于高波動(dòng)狀態(tài),降低衰減因子至0.94。-默認(rèn)情況下(低波動(dòng)或弱趨勢(shì)),使用較高的衰減因子(如0.97)。b.指數(shù)加權(quán)移動(dòng)平均(EWMA)-使用遞推公式更新波動(dòng)率方差:\[\text{Variance}_t=\lambda\cdot\text{Variance}_{t-1}+(1-\lambda)\cdotr_t^2\]-最終波動(dòng)率由方差的平方根計(jì)算得出:\[\text{HistoricalVolatility}=\sqrt{\text{Variance}}\]c.輸出結(jié)果-使用`Print`輸出每日的衰減因子、波動(dòng)率和ADX值,便于觀察動(dòng)態(tài)調(diào)整的效果。④、實(shí)際案例分析a.強(qiáng)趨勢(shì)市場(chǎng)-假設(shè)ADX值為30(高于閾值25),表明市場(chǎng)處于強(qiáng)趨勢(shì)狀態(tài)。-此時(shí)衰減因子被設(shè)置為0.9,使得波動(dòng)率計(jì)算對(duì)近期數(shù)據(jù)更加敏感,能夠更快捕捉趨勢(shì)變化。b.高波動(dòng)市場(chǎng)-假設(shè)過(guò)去20天的日收益率標(biāo)準(zhǔn)差為0.03(高于閾值0.02),表明市場(chǎng)波動(dòng)較大。-此時(shí)衰減因子被設(shè)置為0.94,使得波動(dòng)率計(jì)算更關(guān)注近期波動(dòng),避免滯后效應(yīng)。c.低波動(dòng)或弱趨勢(shì)市場(chǎng)-假設(shè)ADX值為15(低于閾值25),且過(guò)去20天的日收益率標(biāo)準(zhǔn)差為0.01(低于閾值0.02)。-此時(shí)衰減因子被設(shè)置為0.97,使得波動(dòng)率計(jì)算更加平滑,減少噪聲影響。⑤、優(yōu)化建議a.調(diào)整閾值參數(shù):-根據(jù)具體市場(chǎng)和策略需求,調(diào)整`TrendStrengthThreshold`和波動(dòng)率閾值(如0.02)。b.引入更多指標(biāo):-可以結(jié)合其他技術(shù)指標(biāo)(如RSI、MACD)進(jìn)一步優(yōu)化衰減因子的選擇邏輯。c.回測(cè)驗(yàn)證:-在歷史數(shù)據(jù)上測(cè)試不同動(dòng)態(tài)調(diào)整規(guī)則的表現(xiàn),選擇最優(yōu)方案。⑥、總結(jié)通過(guò)動(dòng)態(tài)調(diào)整衰減因子,EWMA模型能夠更好地適應(yīng)不同的市場(chǎng)狀態(tài),從而提高波動(dòng)率估計(jì)的準(zhǔn)確性和策略表現(xiàn)。上述代碼提供了一個(gè)完整的實(shí)現(xiàn)框架,用戶可以根據(jù)實(shí)際需求進(jìn)一步擴(kuò)展和優(yōu)化。③:?TNR(趨勢(shì)噪音指標(biāo))大于0'?TNR(趨勢(shì)噪音指標(biāo))'公式與說(shuō)明:由于CTA策略往往依賴于價(jià)格的動(dòng)量效應(yīng),因此我們認(rèn)為價(jià)格變化的平穩(wěn)程度可以作為CTA信號(hào)強(qiáng)弱的另一種衡量方式。具體而言,我們通過(guò)計(jì)算過(guò)去一段時(shí)間資產(chǎn)價(jià)格路徑的位移路程比來(lái)作為我們的趨勢(shì)噪音指標(biāo)(TNR,TrendtoNoiseRatio)。趨勢(shì)噪音指標(biāo)中趨勢(shì)的部分為一段時(shí)期內(nèi)價(jià)格變化的主要趨勢(shì),可以用價(jià)格區(qū)間變動(dòng)的“位移量”來(lái)衡量;而噪音部分則衡量了在大趨勢(shì)下每個(gè)具體時(shí)刻價(jià)格相對(duì)于趨勢(shì)的偏離程度。因此,趨勢(shì)噪音衡量了價(jià)格變化的平穩(wěn)程度。我們通過(guò)比較當(dāng)日趨勢(shì)噪音和3日前趨勢(shì)噪音的大小,可以判斷出當(dāng)前價(jià)格變化中的“噪音”是否在不斷減少。當(dāng)價(jià)格變化的“噪音”越來(lái)越小時(shí),我們認(rèn)為此時(shí)的信號(hào)較強(qiáng)。具體來(lái)說(shuō),我們對(duì)于價(jià)格在某一時(shí)刻的趨勢(shì)噪音比衡量如下:TNR_(t,N)=(|\text(Close)_t-\text(Close)_(t-N)|)/(∑_(i=t-N+1)^t|\text(Close)_i-\text(Close)_(i-1)|)其中:TNR_(t,N)代表在時(shí)刻t回看N期的價(jià)格趨勢(shì)噪音,Close代表價(jià)格,分子∣Cloge_t-Cloge_(t-N)|表示期初與期末價(jià)格變化的絕對(duì)值,即價(jià)格曲線發(fā)生的“位移”;分母∑_(i=t-N+1)^t|Close_i-Close_(i-1)|表示在回看期內(nèi)每次價(jià)格變動(dòng)的絕對(duì)值之和,即價(jià)格曲線走過(guò)的“路程”。下圖(圖10)通過(guò)一個(gè)例子展示了TNR的計(jì)算方式,藍(lán)色曲線表示了某一資產(chǎn)的價(jià)格在一段時(shí)期內(nèi)的變化曲線。在這段時(shí)期內(nèi),該價(jià)格曲線的“位移”為X,即為示意圖中紅色箭頭表示的部分;所經(jīng)的“路程”為S,為示意圖中灰色箭頭表示的部分,將所有灰色箭頭的長(zhǎng)度相加,即得到了價(jià)格曲線走過(guò)的“路程”。當(dāng)實(shí)現(xiàn)位移的路程增加,則意味著價(jià)格在從開始點(diǎn)到結(jié)束點(diǎn)的過(guò)程中徘徊的時(shí)間較長(zhǎng),因此,價(jià)格中所包含的噪音越強(qiáng)。反之,如果價(jià)格較為直接的由起始點(diǎn)走到了結(jié)束點(diǎn),則表明價(jià)格中的噪音較弱。此外,在一段時(shí)期內(nèi)位移量相同的價(jià)格曲線所對(duì)應(yīng)的路徑卻可能相差很多。下圖(圖11)中左側(cè)示意圖展示了在無(wú)噪音狀態(tài)下的價(jià)格變化曲線,此時(shí)價(jià)格變化的位移等于路程,TNR=1;中間示意圖展示了在一定噪音下的價(jià)格變化過(guò)程,此時(shí)TNR=0.1;而右側(cè)示意圖所代表的價(jià)格波動(dòng)程度要高于左側(cè)的兩圖,在價(jià)格的變化過(guò)程中蘊(yùn)含了更多的噪音,此時(shí)對(duì)應(yīng)的TNR=0.01。從中我們可以直觀地觀察到,當(dāng)價(jià)格變化的趨勢(shì)越明顯、蘊(yùn)含的噪音越小時(shí),價(jià)格變化越平穩(wěn),TNR值越大。接下來(lái),基于上述計(jì)算的TNR值的大小,我們對(duì)TNR的變化趨勢(shì)進(jìn)行了進(jìn)一步的判斷,計(jì)算方法為將當(dāng)前時(shí)刻的TNR值減去k時(shí)刻前的TNR值。具體公式如下:ΔTNR_(t,k)=TNR_t-(∑_(i=0)^(k-1)TNR_(t-i))/k其中:TNR_t為當(dāng)期時(shí)刻的趨勢(shì)噪音比,(∑_(i=0)^(k-1)TNR_(t-i))/k為過(guò)去k期的趨勢(shì)信噪比平均值,ΔTNR_(t,k)衡量了在過(guò)去k期趨勢(shì)噪音比的變化情況:如果ΔTNR_(t,k)為正,則說(shuō)明在過(guò)去這段對(duì)應(yīng)時(shí)期TNR在增大,即價(jià)格變化中的噪音在減?。环粗f(shuō)明價(jià)格變化中的噪音在增大。特別地,我們?cè)O(shè)定k=3。最后,我們同樣將趨勢(shì)噪音比TNR納入衡量開倉(cāng)信號(hào)強(qiáng)弱的指標(biāo),只有當(dāng)ΔTNR大于0,即價(jià)格變化中的噪聲在減小時(shí),我們才進(jìn)行開倉(cāng)操作。由此可見,在價(jià)格趨勢(shì)的噪音減小時(shí)開倉(cāng)效果較為有效。至此,我們通過(guò)對(duì)價(jià)格的噪音變化趨勢(shì)(通過(guò)趨勢(shì)噪音比計(jì)算)進(jìn)行了介紹,完成了對(duì)趁勢(shì)噪音指標(biāo)部分的說(shuō)明。//趨勢(shì)噪音比相關(guān)變量TNR(0),PrevTNR(0),DeltaTNR(0),//計(jì)算趨勢(shì)噪音比TNRifBarNumber>Len1thenbeginTNR=Abs(Close-Close[Len1])/Summation(Abs(Close-Close[1]),Len1);end;//計(jì)算DeltaTNRifBarNumber>Len1+3thenbeginPrevTNR=Average(TNR[1],3);DeltaTNR=TNR-PrevTNR;end;Inputs:LookBackPeriod(20);//定義用于計(jì)算TNR的時(shí)間窗口長(zhǎng)度(默認(rèn)為20天)Vars:PriceDisplacement(0),//價(jià)格位移量PricePathLength(0),//價(jià)格路徑總路程TNRValue(0),//趨勢(shì)噪音比(TNR)DeltaTNR(0);//當(dāng)前TNR與3日前TNR的變化//封裝成函數(shù)FunctionCalculateTNR(LookBackPeriodAsNumericSeries)ReturnsNumeric;Vars:Displacement(0),PathLength(0);//計(jì)算價(jià)格路徑的總路程(S)Fori=0ToLookBackPeriod-1BeginPathLength=PathLength+AbsValue(Close[i]-Close[i+1]);End;//計(jì)算價(jià)格位移量(X)Displacement=AbsValue(Close-Close[LookBackPeriod]);//避免除以零的情況IfPathLength>0ThenBeginCalculateTNR=Displacement/PathLength;//計(jì)算TNREndElseBeginCalculateTNR=0;//如果路徑長(zhǎng)度為零,則TNR為零End;EndFunction;//主程序調(diào)用函數(shù)BeginTNRValue=CalculateTNR(LookBackPeriod);//調(diào)用函數(shù)計(jì)算TNRDeltaTNR=TNRValue-TNRValue[3];//計(jì)算DeltaTNR//輸出TNR和DeltaTNR到圖表上Plot1(TNRValue,"TNR");Plot2(DeltaTNR,"DeltaTNR");End;④:UKP(開倉(cāng)后信號(hào)持續(xù)度)大于0.2'UKP'(開倉(cāng)后信號(hào)持續(xù)度)的公式與說(shuō)明:當(dāng)(Lev_ATR大于1和?TNR大于0)開倉(cāng)信號(hào)觸發(fā)后,我們進(jìn)行開倉(cāng)操作,隨后,我們將對(duì)開倉(cāng)后信號(hào)的持續(xù)度進(jìn)行跟蹤,并且根據(jù)信號(hào)的持續(xù)度來(lái)確定信號(hào)的強(qiáng)弱。首先,我們引入兩個(gè)變量:當(dāng)觸發(fā)多頭開倉(cāng)信號(hào)時(shí)Long=1,Short=0;反之,當(dāng)觸發(fā)空頭開倉(cāng)信號(hào)時(shí),則Long=0,Short=1。在確定了開倉(cāng)信號(hào)的方向之后,我們?cè)诿總€(gè)時(shí)刻對(duì)價(jià)格未來(lái)上漲或下跌的概率做預(yù)測(cè)。首先對(duì)于初始時(shí)刻,我們定義為如下:UpProb_t=t0=0.5DownProb_t=t0=0.5其中:t0表示笫一次觸發(fā)開倉(cāng)條件的時(shí)間點(diǎn);UpProb_t表示t時(shí)刻價(jià)格上漲的概率;DownProb_t表示t時(shí)刻價(jià)格下趺的概率;特別的,我們?cè)O(shè)定在初始t0時(shí)刻價(jià)格上漲和下跌的概率相等,均為0.5。對(duì)于t0之后的每個(gè)時(shí)刻,價(jià)格上漲和下跌的概率均與前一時(shí)刻價(jià)格上漲或下跌的概率以及是否觸發(fā)多頭和空頭信號(hào)有關(guān)(計(jì)算公式如下):UpProb(t)=UpProb(t-1)+0.5*[DownProb(t-1)*Long(t)-UpProb(t-1)*Short(t)];DownProb(t)=DownProb(t-1)+0.5*[Upprob(t-1)*Short(t)-DownProb(t-1)*Long(t)]。其中:Upprob(t-1)表示前一時(shí)刻價(jià)格上漲的概率;DownProb(t-1)表示前一時(shí)刻價(jià)格下跌的概率;Long(t)表示當(dāng)前是否觸發(fā)了多頭開倉(cāng)信號(hào),若觸發(fā)了多頭開倉(cāng)信號(hào),則Long(t)為1,否則為0;Short(t)表示當(dāng)前是否觸發(fā)了空頭開倉(cāng)信號(hào),若是觸發(fā)了空頭開倉(cāng)信號(hào),則Short(t)為1,否則為0;此外,值得注意的是,在任意時(shí)刻t,均滿足UpProb(t)+DownProb(t)=1。UKP_t=UpProb_t-DownProb_t其中:UKP_t表示t時(shí)刻價(jià)格漲跌的期望,即上漲概率事件取值為1;下跌概率事件取值為–1(負(fù)1)。各自事件乘以各自事件發(fā)生的概率后求和。為方便理解,我們通過(guò)如下案例進(jìn)行解釋。圖13所展示的是信號(hào)每次觸發(fā)之后價(jià)格上漲以及下跌概率的變化情況。我們假設(shè)當(dāng)前時(shí)刻T為t0的下一時(shí)刻,即T=t0+1;并且觸發(fā)了多頭開倉(cāng)信號(hào),即Long_T=1,Short_T=0;若在t0時(shí)刻為初始時(shí)刻,則在T時(shí)刻價(jià)格上漲和下跌的概率分別為:UpProb_T=UpProb_t0+0.5*(DownProb_t0*Long_t-UpProb_t0*Short_t),即UpProb_T=0.5+0.5*(0.5*1-0.5*0)=0.75;DownProb_T=DownProb_t0+0.5*(UpProb_t0*Short_t-DownProb_t0*Long_t),即DownProb_T=0.5+0.5*(0.5*0-0.5*1)=0.25。則UKP_T=UpProb_T-DownProb_T=0.75-0.25=0.5。如果在接下來(lái)的時(shí)刻,價(jià)格仍然上漲,那么UpProb值將持續(xù)增加;DownProb值將持續(xù)減小,最終將導(dǎo)致二者的差值UKP持續(xù)上升。當(dāng)UKP的絕對(duì)值大于0.2時(shí),進(jìn)行開倉(cāng)操作。并且根據(jù)價(jià)格上漲或下跌的概率來(lái)確定Signal的取值:Signal_t等于(有三種情況的計(jì)算方式):第①種(UpProb_t)的情況下為:UKP_t大于0.2;第②種(DownProb_t)的情況下為:UKP_t小于-0.2(負(fù)0.2);第③種(等于0時(shí))的情況下為:–0.2(負(fù)0.2)小于或等于UKP_t小于或等于0.2。其中:UKP_t表示t時(shí)刻的價(jià)格漲跌概率的期望;UpProb_t和DownProb_t分別表示價(jià)格上漲和下跌的概率;當(dāng)UKP小于–0.2(負(fù)0.2)時(shí),Signal等于下跌概率;當(dāng)UKP大于0.2時(shí),Signal等于上漲概率。至此,我們完成了對(duì)開倉(cāng)后信號(hào)持續(xù)度的介紹。概括來(lái)說(shuō),我們首先基于過(guò)去時(shí)刻價(jià)格的漲跌確定了當(dāng)前時(shí)刻價(jià)格上漲和下跌的概率,再將漲跌的概率作差,當(dāng)差的絕對(duì)值大于0.2時(shí),我們認(rèn)為此時(shí)價(jià)格趨勢(shì)較為清晰,進(jìn)行開倉(cāng)操作;并且將信號(hào)值確定為此時(shí)價(jià)格上漲或者下跌的概率,而并非傳統(tǒng)信號(hào)中簡(jiǎn)單的1和-1。//價(jià)格漲跌概率相關(guān)變量UpProb(0.5),DownProb(0.5),Long(0),Short(0),U2P(0),//更新價(jià)格漲跌概率ifBarStatus(1)=2thenbeginUpProb=0.5;DownProb=0.5;endelsebeginUpProb=UpProb[1]+0.5*(DownProb[1]*Long-UpProb[1]*Short);DownProb=DownProb[1]+0.5*(UpProb[1]*Short-DownProb[1]*Long);end;U2P=UpProb-DownProb;//確定策略信號(hào)SignalifU2P>0.2thenbeginSignal=UpProb;endelseifU2P<-0.2thenbeginSignal=DownProb;endelsebeginSignal=0;end;(2)空頭開倉(cāng)進(jìn)場(chǎng)(同時(shí)滿足以下條件):①:傳統(tǒng)空頭開倉(cāng)條件采用4周規(guī)則交易法{當(dāng)價(jià)格跌破4個(gè)星期(相當(dāng)于22個(gè)交易日)內(nèi)的最低價(jià)時(shí),空頭賣出開倉(cāng)進(jìn)場(chǎng)}。示例代碼:Inputs:price(close),lots(1);vars:mp(0),ma1(0),ma2(0),condition1(False),condition2(False);mp=marketposition;ma1=Highest(high,20);ma2=Lowest(low,20);condition1=price>ma1[1]andmp<>1;condition2=price<ma2[1]andmp<>-1;ifcondition1
thenbuy("LE")lotscontractnextbar
atmarket;ifprice<ma2thensell("LX")lotscontractnextbaratmarket;ifcondition2thensellshort("SE")lotscontractnextbaratmarket;ifprice>ma1thenbuytocover("SX")lotscontractnextbaratmarket;日線級(jí)別交易系統(tǒng)源碼:Input:InitialCapital(100000),riskpercent(0.1),Len(20);var:lots(0),totalequity(0),time1(False),time2(False),time3(False),up(0),down(0),mp(0);//set-begin//percent10%openorderstotalequity=round((initialcapital+netprofit+openpositionprofit),0);lots=IntPortion((totalequity*riskpercent)/(close*bigpointvalue*0.1));//tradesessiontime1=time>0900andtime<1500;time2=time>2100andtime<2300;time3=time1ortime2;mp=marketposition;//set-end//straetgy-(fourweekbreakoutSYS)up=Highest(high,len);down=Lowest(low,len);//buy-sell(trading)
ifmp<>1
then
begin
buy("B1")lotssharesnextbaratup[1]stop;
end;
ifmp<>-1
then
begin
sellshort("S1")lotssharesnextbaratdown[1]stop;
end;
ifmp>0thensell("SP1")allsharesnextbaratdown[1]stop;
ifmp<0thenbuytocover("BP1")allsharesnextbaratup[1]stop;②:Lev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)大于1請(qǐng)參照《Lev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)的公式與說(shuō)明》③:?TNR(趨勢(shì)噪音指標(biāo))大于0請(qǐng)參照《?TNR(趨勢(shì)噪音指標(biāo))的公式與說(shuō)明》④:UKP(開倉(cāng)后信號(hào)持續(xù)度)小于-0.2(負(fù)0.2)請(qǐng)參照《UKP(開倉(cāng)后信號(hào)持續(xù)度)的公式與說(shuō)明》中的相反條件。第二節(jié)平倉(cāng)規(guī)則條件:(1)多頭平倉(cāng)出場(chǎng)(同時(shí)滿足以下條件):①:傳統(tǒng)的多頭平倉(cāng)條件采用4周規(guī)則出場(chǎng)法{當(dāng)價(jià)格跌破2個(gè)星期(相當(dāng)于11個(gè)交易日)內(nèi)的最低價(jià)時(shí),多頭賣出平倉(cāng)出場(chǎng)}。②:Lev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)小于1請(qǐng)參照《Lev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)的公式與說(shuō)明》,跟多頭開倉(cāng)條件相反。③:?TNR(趨勢(shì)噪音指標(biāo))小于0請(qǐng)參照《?TNR(趨勢(shì)噪音指標(biāo))的公式與說(shuō)明》,跟多頭開倉(cāng)條件相反。④:UKP(開倉(cāng)后信號(hào)持續(xù)度)小于-0.2(負(fù)0.2)請(qǐng)參照《UKP(開倉(cāng)后信號(hào)持續(xù)度)中的公式與說(shuō)明》,跟多頭開倉(cāng)條件相反。(2)空頭平倉(cāng)出場(chǎng)(同時(shí)滿足以下條件):①:傳統(tǒng)的空頭平倉(cāng)條件采用4周規(guī)則交易法{當(dāng)價(jià)格突破2個(gè)星期(相當(dāng)于11個(gè)交易日)內(nèi)的最高價(jià)時(shí),空頭買入平倉(cāng)出場(chǎng)}。②:Lev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)小于1請(qǐng)參照《Lev_ATR(開倉(cāng)時(shí)點(diǎn)信號(hào)強(qiáng)弱)中的公式與說(shuō)明》,跟空頭開倉(cāng)條件相反。③:?TNR(趨勢(shì)噪音指標(biāo))小于0請(qǐng)參照《?TNR(趨勢(shì)噪音指標(biāo))公式與說(shuō)明》,跟空頭開倉(cāng)條件相反。④:UKP(開倉(cāng)后信號(hào)持續(xù)度)大于0.2請(qǐng)參照《UKP(開倉(cāng)后信號(hào)持續(xù)度)中的公式與說(shuō)明》,跟空頭開倉(cāng)條件相反。第三節(jié)加倉(cāng)和減倉(cāng)規(guī)則條件一加倉(cāng)條件:(1)多頭加倉(cāng)條件:恒溫器系統(tǒng)中多頭的進(jìn)場(chǎng)條件策略簡(jiǎn)述
當(dāng)CMI指標(biāo)小於20時(shí),策略處?kù)墩鸨U模式。
若處?kù)囤呝I市:
最新價(jià)>max(開盤價(jià)+0.5*10日ART,3日平均低價(jià)),做多。
最新價(jià)>max(開盤價(jià)-0.75*10日ART,3日平均高價(jià)),做空。
若處?kù)囤呝u市:
最新價(jià)>max(開盤價(jià)-0.75*10日ART,3日最低價(jià)),做多。
最新價(jià)>max(開盤價(jià)+0.5*10日ART,3日最高價(jià)),做空。
當(dāng)CMI指標(biāo)大於20時(shí),策略處?kù)囤厔?shì)模式。
趨勢(shì)策略使用布林帶策略
進(jìn)入趨勢(shì)模式後,有震盪模式下的持倉(cāng),以開倉(cāng)價(jià)+-3個(gè)10日ATR為出場(chǎng)條件。
策略詳述
恒溫器策略以其能夠在震盪和趨勢(shì)市場(chǎng)中自動(dòng)調(diào)節(jié)交易行為而得名??吹阶詣?dòng)調(diào)節(jié)的字眼,很多人會(huì)覺得這一定是個(gè)高級(jí)、神秘的策略。但事實(shí)恰恰相反,這是個(gè)簡(jiǎn)單的策略組合,這類策略的關(guān)鍵在於將不同市場(chǎng)狀態(tài)下能成功應(yīng)用的策略相結(jié)合。
市場(chǎng)狀態(tài)轉(zhuǎn)換,我們採(cǎi)用CMI指標(biāo)(市場(chǎng)波動(dòng)指標(biāo))作為評(píng)判標(biāo)準(zhǔn)。
當(dāng)CMI值小於20,短週期震盪模式下運(yùn)用的是區(qū)間突破結(jié)合模式識(shí)別策略。,我們將系統(tǒng)歸於震盪模式。模式識(shí)別依靠關(guān)鍵價(jià)指標(biāo)(關(guān)鍵價(jià)指的是(high+low+close)/3),如果當(dāng)收盤價(jià)高於昨天的關(guān)鍵價(jià),我們推測(cè)明天的市場(chǎng)是熊市(趨賣市),反之亦然。
當(dāng)CMI值大於20,該策略系統(tǒng)在趨勢(shì)模式下(長(zhǎng)週期)運(yùn)用的是個(gè)類似布林通道策略(常規(guī)布林策略此處不做介紹)。值得稱道的是,該模型考慮了趨勢(shì)模式下,原有震盪持倉(cāng)的處理問(wèn)題。因?yàn)檎鸨U模式的出場(chǎng)是以3日高低均價(jià)為準(zhǔn)。但是把這個(gè)標(biāo)準(zhǔn)放在趨勢(shì)模式下就不合時(shí)宜了,該策略的方法是以開倉(cāng)價(jià)+-3個(gè)10日ATR為出場(chǎng)條件(一個(gè)相對(duì)較長(zhǎng)期的條件)。
市場(chǎng)波動(dòng)指數(shù)(ChoppyMarketIndex,CMI)是一個(gè)用來(lái)判斷市場(chǎng)走勢(shì)類型的技術(shù)分析指標(biāo)。
它通過(guò)計(jì)算當(dāng)前收盤價(jià)與一定週期前的收盤價(jià)的差值與這段時(shí)間內(nèi)價(jià)格波動(dòng)的範(fàn)圍的比值,來(lái)判斷目前的股價(jià)走勢(shì)是趨勢(shì)還是盤整。
市場(chǎng)波動(dòng)指數(shù)CMI的計(jì)算公式:
CMI=(AbsValue(Close-Close[N-1])/(Highest(High,N)-Lowest(Low,N))*100);
N是週期數(shù),例如30。
市場(chǎng)波動(dòng)指數(shù)CMI的使用方法:
這個(gè)指標(biāo)的重要用途是來(lái)區(qū)分目前的股價(jià)走勢(shì)類型:盤整,趨勢(shì)。
當(dāng)CMI指標(biāo)小於20時(shí),市場(chǎng)走勢(shì)是盤整;
當(dāng)CMI指標(biāo)大於20時(shí),市場(chǎng)在趨勢(shì)期。
CMI指標(biāo)還可以用於預(yù)測(cè)股價(jià)走勢(shì)類型的轉(zhuǎn)變。因?yàn)槲飿O必反,
當(dāng)CMI長(zhǎng)期處?kù)?附近,此時(shí),股價(jià)走勢(shì)很可能從盤整轉(zhuǎn)為趨勢(shì);
當(dāng)CMI長(zhǎng)期處?kù)?00附近,此時(shí),股價(jià)趨勢(shì)很可能變?nèi)?,形成盤整。
在分析CMI指標(biāo)時(shí),為了更好的反映它在一段時(shí)間內(nèi)的變化趨勢(shì),還可以對(duì)這個(gè)指標(biāo)進(jìn)行平滑處理,這樣可以減少“噪音”的影響。
程式碼:{ThermostatbyGeorgePruittTwosystemsinone.}Inputs:bollingerLengths(50),trendLiqLength(50),numStdDevs(2),swingPrcnt1(0.50),swingPrcnt2(0.75),atrLength(10),swingTrendSwitch(20);Vars:cmiVal(0),buyEasierDay(0),sellEasierDay(0),trendLokBuy(0),trendLokSell(0),keyOfDay(0),swingBuyPt(0),swingSellPt(0),trendBuyPt(0),trendSellPt(0),swingProtStop(0);cmiVal=ChoppyMarketIndex(30);buyEasierDay=0;sellEasierDay=0;trendLokBuy=Average(Low,3);trendLokSell=Average(High,3);keyOfDay=(High+Low+Close)/3;if(Close>keyOfDay)thensellEasierDay=1;if(Close<=keyOfDay)thenbuyEasierDay=1;if(buyEasierDay=1)thenbeginswingBuyPt=Openoftomorrow+swingPrcnt1*AvgTrueRange(atrLength);swingSellPt=Openoftomorrow-swingPrcnt2*AvgTrueRange(atrLength);end;if(sellEasierDay=1)thenbeginswingBuyPt=Openoftomorrow+swingPrcnt2*AvgTrueRange(atrLength);swingSellPt=Openoftomorrow-swingPrcnt1*AvgTrueRange(atrLength);end;swingBuyPt=MaxList(swingBuyPt,trendLokBuy);swingSellPt=MinList(swingSellPt,trendLokSell);trendBuyPt=BollingerBand(Close,bollingerLengths,numStdDevs);trendSellPt=BollingerBand(Close,bollingerLengths,–numStdDevs);if(cmiVal<swingTrendSwitch)thenbeginif(MarketPosition<>1)thenBuy("SwingBuy")nextbaratswingBuyPtstop;if(MarketPosition<>–1)thenSell("SwingSell")nextbaratswingSellPtstop;endelsebeginswingProtStop=3*AvgTrueRange(atrLength);Buy("TrendBuy")nextbarattrendBuyPtstop;Sell("TrendSell")nextbarattrendSellPtstop;SellfromEntry("TrendBuy")nextbaratAverage(Close,trendLiqLength)stop;BuyToCoverfromEntry("TrendSell")nextbaratAverage(Close,trendLiqLength)stop;SellfromEntry("SwingBuy")nextbaratEntryPrice–swingProtStopstop;BuyToCoverfromEntry("SwingSell")nextbaratEntryPrice+swingProtStopstop;end;在MC平臺(tái)上面公式那里做一個(gè)函數(shù),名叫:“ChoppyMarketIndex”,引用這個(gè)振蕩指標(biāo)數(shù)據(jù)即可,公式如下:inputs:Len(numericsimple);ChoppyMarketIndex=(absvalue(Close-Close[LEN-1])/(Highest(High,LEN)-Lowest(Low,LEN))*100);策略邏輯
今天介紹兩個(gè)恒溫器系統(tǒng),第一個(gè)是最初也是最經(jīng)典的恒溫器系統(tǒng),第二個(gè)是我們做了改進(jìn)后的系統(tǒng),一起來(lái)看看吧!
1.MC_Thermostat_Classic
振蕩策略基于價(jià)格突破策略:
買入進(jìn)場(chǎng)突破價(jià)格是下一根bar的開盤價(jià)+10日ATR的一定比例;
賣出進(jìn)場(chǎng)突破價(jià)是下一根bar的開盤價(jià)-10日ATR的一定比例;
這里做了一點(diǎn)細(xì)節(jié)處理,將買入進(jìn)場(chǎng)突破價(jià)格與最近3根bar的最低價(jià)的平均價(jià)進(jìn)行比較,取較大值作為最終的買入進(jìn)場(chǎng)突破價(jià)格,
將賣出進(jìn)場(chǎng)突破價(jià)格與最近3根bar的最高價(jià)的平均價(jià)進(jìn)行比較,取較小值作為最終的賣出進(jìn)場(chǎng)突破價(jià)格。
趨勢(shì)策略基于布林帶策略:
當(dāng)cmi<20時(shí),使用振蕩策略;
當(dāng)cmi>=20時(shí),使用趨勢(shì)策略;
當(dāng)cmi>=20時(shí),也就是恒溫器判斷當(dāng)前的行情為趨勢(shì)行情,此時(shí)若當(dāng)前有一筆振蕩策略的多頭持倉(cāng),那么當(dāng)價(jià)格跌破進(jìn)場(chǎng)價(jià)格之下3倍ATR時(shí),執(zhí)行多頭出場(chǎng)。
2.MC_Thermostat
振蕩策略是基于KDJ的一個(gè)策略:
當(dāng)K大于D,并且D小于30時(shí),多頭進(jìn)場(chǎng);
當(dāng)K小于D,并且D大于70時(shí),空頭進(jìn)場(chǎng);
當(dāng)K小于D,并且收盤價(jià)大于進(jìn)場(chǎng)價(jià)一定比例之后多頭出場(chǎng);
當(dāng)K大于D,并且收盤價(jià)小于進(jìn)場(chǎng)價(jià)一定比例之后空頭出場(chǎng)。
趨勢(shì)策略是基于布林帶策略:
收盤價(jià)突破上軌時(shí),多頭進(jìn)場(chǎng);
收盤價(jià)突破下軌時(shí),空頭進(jìn)場(chǎng);
收盤價(jià)跌破布林中軌時(shí),多頭出場(chǎng);
收盤價(jià)突破布林中軌時(shí),空頭出場(chǎng)。
當(dāng)函數(shù)cmi小于20時(shí),使用振蕩策略;
當(dāng)函數(shù)cmi大于等于20時(shí),使用趨勢(shì)策略。
源碼:
函數(shù):Alex_KDJinput:length(numericsimple),smoothlength(numericsimple),var_K(numericref),var_D(numericref),var_J(numericref);var:high1(0),low1(0),rsv(0);high1=highest(high,length);low1=lowest(low,length);ifhigh1<>low1then
rsv=(close-low1)/(high1-low1)*100elsersv=0;var_k=xaverageorig(rsv,smoothlength);var_d=xaverageorig(var_k,smoothlength);var_j=3*var_k-2*var_d;復(fù)制代碼
信號(hào)1:MC_Thermostatinputs:profit(3),length(50);var:upline(0),downline(0),ma(0),var_k(0),var_d(0),var_j(0),cmi(0),lot(1);upline=BollingerBand(close,50,2);downline=BollingerBand(close,50,-2);ma=average(close,50);Alex_KDJ(9,3,var_k,var_d,var_j);value1=highest(high,30)-lowest(low,30);ifvalue1<>0thencmi=absvalue(close-close[29])/value1*100;ifcmi<20thenbegin
ifvar_k>var_dandvar_d<30then
buy("swing_b")lotsharesnextbaratmarket
elseifvar_k<var_dandvar_d>70then
sellshort("swing_s")lotsharesnextbaratmarket;endelseifcmi>=20thenbegin
ifclosecrossaboveuplinethen
buy("trend_b")lotsharesnextbaratmarket
elseifclosecrossunderdownlinethen
sellshort("trend_s")lotsharesnextbaratmarket;end;ifvar_k<var_dandclose>entryprice*(1+0.01*profit)then
sellfromentry("swing_b")nextbaratmarketelseifvar_k>var_dandclose<entryprice*(1-0.01*profit)t
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公共綠地管養(yǎng)維護(hù)服務(wù)合同范文
- 醫(yī)療機(jī)構(gòu)重大事件應(yīng)對(duì)措施
- 綠色能源項(xiàng)目立項(xiàng)完整流程
- 2025年藝術(shù)教育教師培訓(xùn)工作計(jì)劃
- 商業(yè)大廈消防安全管理職責(zé)解析
- 安徽省金鴻電線電纜有限公司介紹企業(yè)發(fā)展分析報(bào)告
- 2025年職業(yè)教育教師進(jìn)修研修計(jì)劃
- 電線桿項(xiàng)目經(jīng)營(yíng)分析報(bào)告(項(xiàng)目總結(jié)分析)
- 物理學(xué)博士生英文自我介紹范文
- 商鋪盲盒活動(dòng)策劃方案
- 新譯林版三年級(jí)上冊(cè)英語(yǔ)Unit1作業(yè)單
- 2024年浙江省中考英語(yǔ)試題卷(含答案解析)
- DB62T 4872-2024 養(yǎng)老護(hù)理員培訓(xùn)基地建設(shè)規(guī)范
- 勞務(wù)派遣公司與學(xué)校簽訂協(xié)議范本(2024版)
- 2024年河北省中考數(shù)學(xué)試題(含答案解析)
- 《第8課 圖表呈現(xiàn)》參考課件1
- 網(wǎng)上銷售食品安全管理制度
- 2024年四川省成都市中考數(shù)學(xué)試題含答案
- DL∕T 612-2017 電力行業(yè)鍋爐壓力容器安全監(jiān)督規(guī)程
- 自然資源價(jià)格評(píng)估通則 TD/T 1061-2021
- 貴州2024年貴州醫(yī)科大學(xué)招聘專職輔導(dǎo)員筆試歷年典型考題及考點(diǎn)附答案解析
評(píng)論
0/150
提交評(píng)論