恒溫器策略(TB版)_第1頁
恒溫器策略(TB版)_第2頁
恒溫器策略(TB版)_第3頁
恒溫器策略(TB版)_第4頁
恒溫器策略(TB版)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

恒溫器策略(TB版)策略概述多空信號交易策略通過識別市場的震蕩和趨勢階段,采用不同的入場和出場邏輯,以實現(xiàn)穩(wěn)定盈利。市場判斷潮汐指數(shù)(cmiVal):用以區(qū)分市場是處于震蕩市還是趨勢市。計算公式:cmiVal=Abs(Close-Close[29])/(Highest(High,30)-Lowest(Low,30))*100閾值:swingTrendSwitch(20),小于此值為震蕩市,否則為趨勢市。入場條件震蕩市入場:買入點(swingBuyPt):開盤價加上swingPrcnt1*myATR[1]。賣出點(swingSellPt):開盤價減去swingPrcnt2*myATR[1](宜賣日)或開盤價減去swingPrcnt1*myATR[1](宜買日)。買入條件:無持倉且當前最高價大于等于買入點。賣出條件:已持倉且當前最低價小于等于賣出點。趨勢市入場:買入點(trendBuyPt):布林帶上軌(MidLine+numStdDevs*Band)。賣出點(trendSellPt):布林帶下軌(MidLine-numStdDevs*Band)。買入條件:無持倉且當前最高價大于等于買入點。賣出條件:已持倉且當前最低價小于等于賣出點與趨勢保護止損(trendProtStop)中的較大者。出場條件震蕩市出場:反手信號:當市場從震蕩轉(zhuǎn)為趨勢時,若已持倉,則按趨勢市的邏輯出場。保護性止損:使用ATR的三倍作為止損值(swingProtStop=3*myATR)。趨勢市出場:反手信號:同震蕩市。均線出場:使用長期均線(trendLiqLength周期)作為出場依據(jù)。系統(tǒng)要素潮汐指數(shù)(cmiVal):衡量市場波動強度。關(guān)鍵價格(keyOfDay):當日最高價、最低價和收盤價的平均值。布林通道:由中軌(MidLine)、上軌(upBand)和下軌(dnBand)組成,用于趨勢判斷。真實波幅(ATR):用于計算波動范圍和止損點。出場均線(trendLiqLength):用于趨勢市中的出場判斷。參數(shù)設(shè)置swingTrendSwitch(20):震蕩市與趨勢市的閾值。swingPrcnt1(0.50)和swingPrcnt2(0.75):震蕩市的開倉參數(shù)。atrLength(10):ATR計算的周期長度。bollingerLengths(50):布林通道計算的周期長度。numStdDevs(2):布林通道的標準差倍數(shù)。trendLiqLength(50):趨勢流動性周期長度,用于出場判斷。Lots(0):交易手數(shù),0表示使用默認值。變量定義數(shù)值序列變量和布爾序列變量用于存儲計算過程中的中間值和交易狀態(tài)。策略邏輯過濾條件:集合競價時段不交易。市場判斷:計算潮汐指數(shù),區(qū)分震蕩市和趨勢市。入場與出場:根據(jù)市場狀態(tài)執(zhí)行相應(yīng)的入場和出場邏輯。恒溫器策略通過綜合運用潮汐指數(shù)、布林通道、真實波幅和均線系統(tǒng),實現(xiàn)了對市場的精細劃分和靈活應(yīng)對,旨在提高交易的成功率和盈利能力。做多信號代碼:ParamsNumericswingTrendSwitch(20);NumericswingPrcnt1(0.50);NumericswingPrcnt2(0.75);NumericatrLength(10);NumericbollingerLengths(50);NumericnumStdDevs(2);NumerictrendLiqLength(50);NumericLots(0);VarsNumericSeriescmiVal(0);BoolSeriesbuyEasierDay(False);BoolSeriessellEasierDay(False);NumericSeriesmyATR(0);NumericSeriesMidLine(0);NumericBand(0);NumericSeriesupBand(0);NumericSeriesdnBand(0);NumericSeriestrendLokBuy(0);NumericSeriestrendLokSell(0);NumericSerieskeyOfDay(0);NumericSeriesswingBuyPt(0);NumericSeriesswingSellPt(0);NumericSeriestrendBuyPt(0);NumericSeriestrendSellPt(0);NumericSeriesswingProtStop(0);NumericSeriestrendProtStop(0);BoolSeriesswingEntry(False);BeginIf(!CallAuctionFilter())Return;cmiVal=Abs(Close-Close[29])/(Highest(High,30)-Lowest(Low,30))*100;trendLokBuy=Average(Low,3);trendLokSell=Average(High,3);keyOfDay=(High+Low+Close)/3;buyEasierDay=False;sellEasierDay=False;If(Close[1]>keyOfDay[1])sellEasierDay=True;If(Close[1]<=keyOfDay[1])buyEasierDay=True;myATR=AvgTrueRange(atrLength);If(buyEasierDay==True){swingBuyPt=Open+swingPrcnt1*myATR[1];swingSellPt=Open-swingPrcnt2*myATR[1];}If(sellEasierDay==True){swingBuyPt=Open+swingPrcnt2*myATR[1];swingSellPt=Open-swingPrcnt1*myATR[1];}swingBuyPt=Max(swingBuyPt,trendLokBuy[1]);swingSellPt=Min(swingSellPt,trendLokSell[1]);MidLine=AverageFC(Close,bollingerLengths);Band=StandardDev(Close,bollingerLengths,2);upBand=MidLine+numStdDevs*Band;dnBand=MidLine-numStdDevs*Band;trendBuyPt=upBand;trendSellPt=dnBand;If(cmiVal[1]<swingTrendSwitch){If(MarketPosition!=1AndHigh>=swingBuyPt)Buy(Lots,Max(Open,swingBuyPt));If(MarketPosition==1AndBarsSinceEntry>=1AndLow<=swingSellPt){Sell(0,Min(Open,swingSellPt));swingEntry=False;}}swingProtStop=3*myATR;trendProtStop=Average(Close,trendLiqLength);If(cmiVal[1]>=swingTrendSwitch){If(swingEntry==True){If(MarketPosition==1AndBarsSinceEntry>=1AndLow<=(EntryPrice-swingProtStop[1]))Sell(0,Min(Open,EntryPrice-swingProtStop[1]));}If(swingEntry==False){If(MarketPosition!=1AndBarsSinceExit>=1AndHigh>=trendBuyPt[1])Buy(Lots,Max(Open,trendBuyPt[1]));If(MarketPosition==1AndBarsSinceEntry>=1AndLow<=Max(trendSellPt[1],trendProtStop[1]))Sell(0,Min(Open,Max(trendSellPt[1],trendProtStop[1])));}}End策略說明:通過計算市場的潮汐指數(shù),把市場劃分為震蕩和趨勢兩種走勢;震蕩市中采用開盤區(qū)間突破進場;趨勢市中采用布林通道突破進場。系統(tǒng)要素:1、潮汐指數(shù)2、關(guān)鍵價格3、布林通道4、真實波幅5、出場均線入場條件:1、震蕩市中采用開盤區(qū)間突破進場2、趨勢市中采用布林通道突破進場出場條件:1、震蕩市時進場單的出場為反手信號和ATR保護性止損2、趨勢市時進場單的出場為反手信號和均線出場做多代碼解釋:ParamsNumericswingTrendSwitch(20);//聲明數(shù)值參數(shù)swingTrendSwitch,初值20,即潮汐指數(shù)小于此值為震蕩市,否則為趨勢市。//NumericswingPrcnt1(0.50);//聲明數(shù)值參數(shù)swingPrcnt1,初值0.5,即震蕩市開倉參數(shù)。//NumericswingPrcnt2(0.75);//聲明數(shù)值參數(shù)swingPrcnt2,初值0.75,即震蕩市開倉參數(shù)。//NumericatrLength(10);//聲明數(shù)值參數(shù)atrLength,初值10,即真實波幅參數(shù)。//NumericbollingerLengths(50);//聲明數(shù)值參數(shù)bollingerLengths,初值50,即布林通道參數(shù)。//NumericnumStdDevs(2);//聲明數(shù)值參數(shù)numStdDevs,即布林通道參數(shù)。//NumerictrendLiqLength(50);//聲明數(shù)值參數(shù)trendLiqLength,初值50,趨勢市時進場單的出場均線參數(shù)。//NumericLots(0);//聲明數(shù)值參數(shù)Lots,初值0,即交易手數(shù)。//VarsNumericSeriescmiVal(0);//聲明數(shù)值序列變量cmiVal,初值0,即潮汐指數(shù)。//BoolSeriesbuyEasierDay(False);//聲明布爾型序列變量buyEasierDay,初值為假,宜買市。//BoolSeriessellEasierDay(False);//聲明布爾型序列變量sellEasierDay,初值為假,宜賣市。//NumericSeriesmyATR(0);//聲明數(shù)值序列變量myATR,初值為0,即真實波幅。//NumericSeriesMidLine(0);//聲明數(shù)值序列變量MidLine,初值0,即布林通道中軌。//NumericBand(0);//聲明數(shù)值變量Band,初值0.//NumericSeriesupBand(0);//聲明數(shù)值序列變量upBand,初值0,即布林通道上軌。//NumericSeriesdnBand(0);//聲明數(shù)值序列變量dnBand,初值0,布林通道下軌。//NumericSeriestrendLokBuy(0);//聲明數(shù)值序列變量trendLokBuy,初值0.//NumericSeriestrendLokSell(0);//聲明數(shù)值序列變量trendLokSell,初值0.//NumericSerieskeyOfDay(0);//聲明數(shù)值序列變量keyOfDay,初值0,即關(guān)鍵價格。//NumericSeriesswingBuyPt(0);//聲明數(shù)值序列變量swingBuypt,初值0,即震蕩市的買觸發(fā)價格。//NumericSeriesswingSellPt(0);//聲明數(shù)值序列變量swingSellpt,初值0,震蕩市的賣觸發(fā)價格//NumericSeriestrendBuyPt(0);//聲明數(shù)值序列變量trendBuypt,初值0,即趨勢市的買觸發(fā)價格。//NumericSeriestrendSellPt(0);//聲明數(shù)值序列變量trendSellpt,初值0,即趨勢市的賣觸發(fā)價格。//NumericSeriesswingProtStop(0);//聲明數(shù)值序列變量swingProtStop,初值0,震蕩市時進場單的出場觸發(fā)價格//NumericSeriestrendProtStop(0);//聲明數(shù)值序列變量trendProtStop,初值0,即趨勢市時進場單的出場觸發(fā)價格。//BoolSeriesswingEntry(False);//聲明布爾型序列變量swingEntry,初值為假,即震蕩市時進場標識。//BeginIf(!CallAuctionFilter())Return;//集合競價和小節(jié)休息過濾。////計算潮汐指數(shù)用以區(qū)分震蕩市與趨勢市。//cmiVal=Abs(Close-Close[29])/(Highest(High,30)-Lowest(Low,30))*100;//照順序來看吧,第一個絕對值函數(shù)Abs,即當前收盤價減去前第29個收盤價,取絕對值;再看求最高價函數(shù)Highest,即求30周期的最高價;同理,最低函數(shù)Lowest,求30周期的最低價。最后代入公式求解,即得cmiVal值。//trendLokBuy=Average(Low,3);//求3周期內(nèi)最低價均值。//trendLokSell=Average(High,3);//求3周期內(nèi)最高價均值。////關(guān)鍵價格。//keyOfDay=(High+Low+Close)/3;//其實就是3個價格的平均值。////震蕩市中收盤價大于關(guān)鍵價格為宜賣市,否則為宜買市。//buyEasierDay=False;//賦值為假。//sellEasierDay=False;//賦值為假。//If(Close[1]>keyOfDay[1])sellEasierDay=True;//假如前一個收盤價大于前一個關(guān)鍵價,則變量sellEasierDay賦值為真。//If(Close[1]<=keyOfDay[1])buyEasierDay=True;//假如前一個收盤價小于等于前一個關(guān)鍵價,則變量buyEasierDay賦值為真。////計算震蕩市的進場價格//myATR=AvgTrueRange(atrLength);//求10周期的真實波動值。//If(buyEasierDay==True)//假如變量buyEasierDay等于真的。//{swingBuyPt=Open+swingPrcnt1*myATR[1];//代入相應(yīng)數(shù)值即可。//swingSellPt=Open-swingPrcnt2*myATR[1];//同理,代入相應(yīng)數(shù)值。//}If(sellEasierDay==True)//假如變量sellEasierDay等于真。//{swingBuyPt=Open+swingPrcnt2*myATR[1];//代入相應(yīng)數(shù)值了。//swingSellPt=Open-swingPrcnt1*myATR[1];//同理的,其實主要看的就是系數(shù)。//}swingBuyPt=Max(swingBuyPt,trendLokBuy[1]);//比較變量swingBuyPt與前一個變量trendLokBuy值,取較大值。//swingSellPt=Min(swingSellPt,trendLokSell[1]);//比較swingSellPt值與前一個trendLokSell值,取較小值。////計算趨勢市的進場價格,即布林帶系統(tǒng)。//MidLine=AverageFC(Close,bollingerLengths);//50周期的收盤價均值。//Band=StandardDev(Close,bollingerLengths,2);//標準差求值,可返回之前解讀的布林線看具體函數(shù)代碼。//upBand=MidLine+numStdDevs*Band;//上軌道計算公式。//dnBand=MidLine-numStdDevs*Band;//下軌道計算公式。//trendBuyPt=upBand;//把上軌道賦值給變量trendBuyPt值。//trendSellPt=dnBand;//把下軌道賦值給變量trendSellPt值。////震蕩市。//If(cmiVal[1]<swingTrendSwitch)//假如前一個變量cmiVal值小于變量swingTrendSwitch值。//{If(MarketPosition!=1AndHigh>=swingBuyPt)//假如當前沒有持多單,且最高價大于等于變量swingBuyPt值。//{Buy(Lots,Max(Open,swingBuyPt));//開倉買入。//swingEntry=True;//變量swingEntry賦值為真。//}If(MarketPosition==1AndBarsSinceEntry>=1AndLow<=swingSellPt)//假如當前持有多單,且建倉數(shù)位大于等于1,且最低價小于等于變量swingSellPt值。//{Sell(0,Min(Open,swingSellPt));//平倉。//swingEntry=False;//變量sweingEntry賦值為假。//}}swingProtStop=3*myATR;//止損價swingProtStop=3*變量myATR值。//trendProtStop=Average(Close,trendLiqLength);//50周期收盤價均值。////趨勢市判斷。//If(cmiVal[1]>=swingTrendSwitch)//假如前一cmiVal值大于等于變量swingTrendSwitch值。//{//震蕩市時進場單在趨勢市的出場。//If(swingEntry==True)//假如變量swingEntry等于真。//{If(MarketPosition==1AndBarsSinceEntry>=1AndLow<=(EntryPrice-swingProtStop[1]))//假如當前持有多單,且建倉數(shù)位大于等于1,且最低價小于等于進場價減去前一止損價。//{Sell(0,Min(Open,EntryPrice-swingProtStop[1]));//平倉。//swingEntry=False;//變量swingEntry賦值為假。//}}//趨勢市時進出場。//If(swingEntry==False)//假如變量swingEntry等于假。//{If(MarketPosition!=1AndBarsSinceExit>=1AndHigh>=trendBuyPt[1])//假如當前沒有持倉,且出場數(shù)位大于等于1,且最高價大于等于前一變量trendBuyPt值。//{Buy(Lots,Max(Open,trendBuyPt[1]));//開倉買入。//}If(MarketPosition==1AndBarsSinceEntry>=1AndLow<=Max(trendSellPt[1],trendProtStop[1]))//假如持有多單,且建倉數(shù)位大于等于1,且最低價小于等于兩出場價中的較大值。//{Sell(0,Min(Open,Max(trendSellPt[1],trendProtStop[1])));//平倉,這里先看比較max值,再比較min值,最后以較小價為平倉價。//}}}End做空信號代碼ParamsNumericswingTrendSwitch(20);NumericswingPrcnt1(0.50);NumericswingPrcnt2(0.75);NumericatrLength(10);NumericbollingerLengths(50);NumericnumStdDevs(2);NumerictrendLiqLength(50);NumericLots(0);VarsNumericSeriescmiVal(0);BoolSeriesbuyEasierDay(False);BoolSeriessellEasierDay(False);NumericSeriesmyATR(0);NumericSeriesMidLine(0);NumericBand(0);NumericSeriesupBand(0);NumericSeriesdnBand(0);NumericSeriestrendLokBuy(0);NumericSeriestrendLokSell(0);NumericSerieskeyOfDay(0);NumericSeriesswingBuyPt(0);NumericSeriesswingSellPt(0);NumericSeriestrendBuyPt(0);NumericSeriestrendSellPt(0);NumericSeriesswingProtStop(0);NumericSeriestrendProtStop(0);BoolSeriesswingEntry(False);BeginIf(!CallAuctionFilter())Return;cmiVal=Abs(Close-Close[29])/(Highest(High,30)-Lowest(Low,30))*100;trendLokBuy=Average(Low,3);trendLokSell=Average(High,3);keyOfDay=(High+Low+Close)/3;buyEasierDay=False;sellEasierDay=False;If(Close[1]>keyOfDay[1])sellEasierDay=True;If(Close[1]<=keyOfDay[1])buyEasierDay=True;myATR=AvgTrueRange(atrLength);If(buyEasierDay==True){swingBuyPt=Open+swingPrcnt1*myATR[1];swingSellPt=Open-swingPrcnt2*myATR[1];}If(sellEasierDay==True){swingBuyPt=Open+swingPrcnt2*myATR[1];swingSellPt=Open-swingPrcnt1*myATR[1];}swingBuyPt=Max(swingBuyPt,trendLokBuy[1]);swingSellPt=Min(swingSellPt,trendLokSell[1]);MidLine=AverageFC(Close,bollingerLengths);Band=StandardDev(Close,bollingerLengths,2);upBand=MidLine+numStdDevs*Band;dnBand=MidLine-numStdDevs*Band;trendBuyPt=upBand;trendSellPt=dnBand;If(cmiVal[1]<swingTrendSwitch){If(MarketPosition!=-1AndLow<=swingSellPt){SellShort(Lots,Min(Open,swingSellPt));swingEntry=True;}If(MarketPosition==-1AndBarsSinceEntry>=1AndHigh>=swingBuyPt){BuyToCover(0,Max(Open,swingBuyPt));swingEntry=False;}}swingProtStop=3*myATR;trendProtStop=Average(Close,trendLiqLength);If(cmiVal[1]>=swingTrendSwitch){If(swingEntry==True){If(MarketPosition==-1AndBarsSinceEntry>=1AndHigh>=(EntryPrice+swingProtStop[1])){BuyToCover(0,Max(Open,EntryPrice+swingProtStop[1]));swingEntry=False;}}If(swingEntry==False){If(MarketPosition!=-1AndBarsSinceExit>=1AndLow<=trendSellPt[1]){SellShort(Lots,Min(Open,trendSellPt[1]));}If(MarketPosition==-1AndBarsSinceEntry>=1AndHigh>=Min(trendBuyPt[1],trendProtStop[1])){BuyToCover(0,Max(Open,Min(trendBuyPt[1],trendProtStop[1])));}}}End做空代碼解釋//定義參數(shù),這些參數(shù)可以由用戶根據(jù)需要進行調(diào)整NumericswingTrendSwitch(20);//擺動趨勢開關(guān),用于決定趨勢強度的閾值NumericswingPrcnt1(0.50);//第一個擺動百分比,用于計算買入和賣出點位NumericswingPrcnt2(0.75);//第二個擺動百分比,同樣用于計算點位NumericatrLength(10);//ATR(平均真實范圍)的周

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論