正交分量交易系統(tǒng)(TS版)_第1頁
正交分量交易系統(tǒng)(TS版)_第2頁
正交分量交易系統(tǒng)(TS版)_第3頁
正交分量交易系統(tǒng)(TS版)_第4頁
正交分量交易系統(tǒng)(TS版)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

正交分量交易系統(tǒng)(TS版)本策略的核心在于利用Hilbert變換來識別價格序列中的周期波動,并據(jù)此構(gòu)建買賣信號。具體來說,策略首先通過HilbertPeriod函數(shù)計(jì)算價格的周期值,然后根據(jù)這個周期值來確定買入和賣出的通道邊界。當(dāng)市場價格突破這些通道邊界時,策略會生成相應(yīng)的交易信號。1.周期計(jì)算:使用HilbertPeriod函數(shù)對價格序列進(jìn)行處理,以識別其潛在的周期波動。這個函數(shù)通過一系列復(fù)雜的數(shù)學(xué)運(yùn)算(包括平滑、去趨勢、同相和正交分量的計(jì)算等)來提取價格的周期性特征,并最終得到一個周期值。2.通道構(gòu)建:基于計(jì)算得到的周期值,策略動態(tài)地構(gòu)建買入和賣出的通道。這些通道的寬度取決于周期值以及用戶定義的參數(shù)(如EntryVal、EntryK、ExitVal和ExitK)。通道的構(gòu)建旨在捕捉價格波動的關(guān)鍵區(qū)域,從而為交易決策提供依據(jù)。3.買賣信號生成:當(dāng)市場價格突破買入通道的上邊界時,策略認(rèn)為市場處于超買狀態(tài),此時應(yīng)考慮賣出;相反,當(dāng)市場價格跌破賣出通道的下邊界時,策略認(rèn)為市場處于超賣狀態(tài),此時應(yīng)考慮買入。這種基于價格波動邊界的交易邏輯有助于捕捉市場的短期趨勢和反轉(zhuǎn)點(diǎn)。特點(diǎn)概述1.動態(tài)適應(yīng)性:本策略能夠根據(jù)市場價格的波動情況動態(tài)調(diào)整通道的寬度和位置,從而適應(yīng)不同市場環(huán)境下的交易需求。這種動態(tài)適應(yīng)性使得策略在面對市場變化時具有較高的靈活性和魯棒性。2.趨勢捕捉與反轉(zhuǎn)點(diǎn)識別:通過結(jié)合Hilbert變換的周期識別能力和通道突破的交易邏輯,本策略不僅能夠捕捉市場的短期趨勢,還能在一定程度上識別價格的反轉(zhuǎn)點(diǎn)。這有助于投資者在復(fù)雜多變的市場環(huán)境中把握更多的交易機(jī)會。3.參數(shù)化設(shè)置:策略提供了多個可配置的參數(shù)(如EntryVal、EntryK、ExitVal和ExitK等),允許用戶根據(jù)自身的交易經(jīng)驗(yàn)和風(fēng)險偏好進(jìn)行個性化設(shè)置。這種參數(shù)化設(shè)計(jì)使得策略具有更廣泛的適用性和可定制性。4.直觀易懂的交易信號:策略通過簡單的通道突破邏輯生成買賣信號,使得交易決策過程直觀易懂。這有助于投資者更好地理解和執(zhí)行交易策略,降低因復(fù)雜計(jì)算或模糊邏輯而導(dǎo)致的誤判風(fēng)險。5.注釋與可視化支持:提供了詳細(xì)的注釋和可視化支持(如圖表上的通道和標(biāo)記)。這不僅有助于開發(fā)者理解和維護(hù)代碼,還能幫助投資者更好地理解策略的運(yùn)行邏輯和交易信號的產(chǎn)生過程。綜上所述,本策略以其動態(tài)適應(yīng)性、趨勢捕捉與反轉(zhuǎn)點(diǎn)識別能力、參數(shù)化設(shè)置、直觀易懂的交易信號以及注釋與可視化支持等特點(diǎn),為投資者提供了一個靈活且高效的交易工具。以下是對函數(shù)HilbertPeriod代碼的注解:一、輸入?yún)?shù)和局部變量定義-

Inputs:Price(numeric)

:定義輸入為價格數(shù)值序列。-

Vars:Smoother(0),Detrender(0),I1(0),Q1(0),jI(0),jQ(0),I2(0),Q2(0),X1(0),X2(0),Y1(0),Y2(0),Re(0),Im(0),Period(0)

:定義多個局部變量,用于存儲中間計(jì)算結(jié)果和最終的周期值。二、條件判斷和核心計(jì)算1.

IfCurrentBar>5thenbegin

:當(dāng)當(dāng)前柱狀線大于5時執(zhí)行以下代碼塊。-

Smoother=(4*Price+3*Price[1]+2*Price[2]+Price[3])/10

:計(jì)算平滑后的價格值,通過對當(dāng)前價格和之前幾個周期的價格進(jìn)行加權(quán)平均。-

Detrender=(.25*Smoother+.75*Smoother[2]-.75*Smoother[4]-.25*Smoother[6])*(.046*Period[1]+.332)

:計(jì)算去趨勢值,基于平滑后的價格進(jìn)行一系列運(yùn)算,并考慮上一個周期的周期值。-接下來計(jì)算同相(InPhase)和正交(Quadrature)分量:-

Q1=(.25*Detrender+.75*Detrender[2]-.75*Detrender[4]-.25*Detrender[6])*(.046*Period[1]+.332)

:計(jì)算正交分量的中間值。-

I1=Detrender[3]

:將去趨勢值延遲三個周期作為同相分量的初始值。-

jI=.25*I1+.75*I1[2]-.75*I1[4]-.25*I1[6]

jQ=.25*Q1+.75*Q1[2]-.75*Q1[4]-.25*Q1[6]

:對同相和正交分量進(jìn)行相位調(diào)整。-

I2=I1-jQ

Q2=Q1+jI

:通過相位調(diào)整后的分量進(jìn)行計(jì)算,得到新的同相和正交分量。-

I2=.15*I2+.85*I2[1]

Q2=.15*Q2+.85*Q2[1]

:對新的同相和正交分量進(jìn)行平滑處理。-

X1=I2*I2[1]

、

X2=I2*Q2[1]

Y1=Q2*Q2[1]

、

Y2=Q2*I2[1]

:進(jìn)行復(fù)數(shù)共軛乘法運(yùn)算,得到中間結(jié)果。-

Re=X1+Y1

Im=X2-Y2

:計(jì)算實(shí)部和虛部。-

Re=.2*Re+.8*Re[1]

Im=.2*Im+.8*Im[1]

:對實(shí)部和虛部進(jìn)行平滑處理。-

IfIm<>0andRe<>0thenPeriod=360/ArcTangent(Im/Re)

:如果虛部和實(shí)部都不為0,則通過反正切函數(shù)計(jì)算周期值。-對計(jì)算得到的周期值進(jìn)行一系列限制和平滑處理:-

IfPeriod>1.5*Period[1]thenPeriod=1.5*Period[1]

:如果當(dāng)前周期值大于上一個周期值的1.5倍,則進(jìn)行限制。-

IfPeriod<.67*Period[1]thenPeriod=.67*Period[1]

:如果當(dāng)前周期值小于上一個周期值的0.67倍,則進(jìn)行限制。-

IfPeriod<6thenPeriod=6

:如果周期值小于6,則設(shè)為6。-

IfPeriod>50thenPeriod=50

:如果周期值大于50,則設(shè)為50。-

Period=.2*Period+.8*Period[1]

:對周期值進(jìn)行平滑處理。2.

HilbertPeriod=Period

:將計(jì)算得到的周期值賦給

HilbertPeriod

。以下是指標(biāo)代碼的注釋:inputs:Price((H+L)/2),EntryVal(0),EntryK(0),ExitVal(0),ExitK(0);//定義輸入?yún)?shù),包括Price(使用開盤價和收盤價的中間值作為價格數(shù)據(jù))、EntryVal和ExitVal(用于設(shè)置通道的Entry和Exit值)、EntryK和ExitK(用于設(shè)置通道的寬度,以周期為單位)。vars:Period(0),count(0),EntryLookBack(0),ExitLookBack(0),EntryChannel(0),ExitChannel(0);//定義變量,包括Period(Hilbert周期數(shù))、count(循環(huán)計(jì)數(shù)器)、EntryLookBack和ExitLookBack(Entry和Exit通道的回看周期)、EntryChannel和ExitChannel(Entry和Exit通道的值)。Period=HilbertPeriod(Price);//計(jì)算Hilbert周期數(shù),用于確定通道的寬度。IfEntryVal<>0thenEntryLookBack=EntryValelseEntryLookBack=EntryK*Period;//如果EntryVal不為0,則使用EntryVal作為Entry通道的回看周期;否則,使用EntryK乘以Period。ifEntryLookBack<1thenEntryLookBack=1;//確保EntryLookBack至少為1。IfExitVal<>0thenExitLookBack=ExitValelseExitLookBack=ExitK*Period;//如果ExitVal不為0,則使用ExitVal作為Exit通道的回看周期;否則,使用ExitK乘以Period。ifExitLookBack<1thenExitLookBack=1;//確保ExitLookBack至少為1。EntryChannel=0;//初始化Entry通道值為0。forcount=1toEntryLookBackbeginifEntryChannel<High[count]thenEntryChannel=High[count];end;//遍歷EntryLookBack周期,找到最高價,作為Entry通道的值。ExitChannel=100000;//初始化Exit通道值為一個非常高的值,用于確保不會被突破。forcount=1toExitLookBackbeginifExitChannel>Low[count]thenExitChannel=Low[count];end;//遍歷ExitLookBack周期,找到最低價,作為Exit通道的值。plot1(EntryChannel,“EntryChannel”);//在圖表上繪制Entry通道。plot2(ExitChannel,“ExitChannel”);//在圖表上繪制Exit通道。IfHigh>EntryChannelthenplot3(EntryChannel,“Enter”);//如果當(dāng)前周期的高價大于Entry通道的值,則在圖表上繪制一個“Enter”標(biāo)記。IfLow<ExitChannelthenplot4(ExitChannel,“Exit”);//如果當(dāng)前周期的低價小于Exit通道的值,則在圖表上繪制一個“Exit”標(biāo)記。指標(biāo)使用Hilbert周期數(shù)來確定通道的寬度,并通過Entry和Exit通道的值來判斷是否發(fā)出買入或賣出信號。Entry和Exit通道的值是通過回看周期內(nèi)的最高價和最低價計(jì)算得出的。如果當(dāng)前周期的高價大于Entry通道的值,則發(fā)出買入信號;如果當(dāng)前周期的低價小于Exit通道的值,則發(fā)出賣出信號。以下是對策略代碼的注釋:inputs:Price((H+L)/2),EntryVal(15),EntryK(0),ExitVal(15),ExitK(0);注釋:定義輸入?yún)?shù),價格為最高價和最低價的平均值,

EntryVal

ExitVal

可能是用于入場和出場的特定值,

EntryK

ExitK

可能是用于計(jì)算入場和出場時的系數(shù)。vars:Period(0),count(0),EntryLookBack(0),ExitLookBack(0),EntryChannel(0),ExitChannel(0);注釋:定義變量,

Period

用于存儲周期值,

count

用于循環(huán)計(jì)數(shù),

EntryLookBack

ExitLookBack

分別用于存儲入場和出場的回溯周期數(shù),

EntryChannel

ExitChannel

分別用于存儲入場和出場的通道值。Period=HilbertPeriod(Price);注釋:使用

HilbertPeriod

函數(shù)計(jì)算價格的周期值,并存儲在

Period

中。IfEntryVal<>0thenEntryLookBack=EntryValelseEntryLookBack=EntryK*Period;注釋:如果

EntryVal

不為0,則將

EntryLookBack

設(shè)為

EntryVal

,否則設(shè)為

EntryK

乘以周期值

Period

。ifEntryLookBack<1thenEntryLookBack=1;注釋:如果

EntryLookBack

小于1,則將其設(shè)為1。IfExitVal<>0thenExitLookBack=ExitValelseExitLookBack=ExitK*Period;注釋:如果

ExitVal

不為0,則將

ExitLookBack

設(shè)為

ExitVal

,否則設(shè)為

ExitK

乘以周期值

Period

。ifExitLookBack<1thenExitLookBack=1;注釋:如果

ExitLookBack

小于1,則將其設(shè)為1。EntryChannel=0;注釋:初始化入場通道值為0。forcount=1toEntryLookBackbeginifEntryChannel<High[count]thenEntryChannel=High[count];end;注釋:通過循環(huán),在回溯的

EntryLookBack

周期內(nèi),找到最高價格并存儲在

EntryChannel

中。ExitChannel=100000;注釋:初始化出場通道值為一個較大的值。forcount=1toExitLookBackbeginifExitChannel>Low[count]thenExitChannel=Low[count];end;注釋:通過循環(huán),在回溯的

ExitLookBack

周期內(nèi),找到最低價格并存儲在

ExitChannel

中。IfMarketPosition=0andHigh>EntryChannelthenBuy;注釋:如果當(dāng)前沒有持倉,且當(dāng)前最高價大于入場通道值,則買入。IfMarketPosition=1andLow<ExitChannelthenExitLong;注釋:如果當(dāng)前持有多頭倉位,且當(dāng)前最低價小于出場通道值,則平掉多頭倉位。##BeginCmtryvar:textString(“flat.”);IfCheckCommentarythenBEGINifMarketPosition=1thentextString=“l(fā)ong.”;ifMarketPosition=0thentextString=“flat.”;commentary(“Marketpositionis”,textString,NewLine);commentary(“Highis”,high,“,channel”,EntryChannel,“,lookback”,ceiling(EntryLookBack),“bars.”,NewLine);commentary(“Lowis”,low,“,channel”,ExitChannel,“,lookback”,ceiling(ExitLookBack),“bars.”,NewLine);End;##End;注釋:如果

CheckCommentary

為真,則根據(jù)市場持倉狀態(tài)設(shè)置

textString

的值,然后使用

commentary

函數(shù)輸出市場持倉狀態(tài)、當(dāng)前最高價、入場通道值和入場回溯周期數(shù)、當(dāng)前最低價、出場通道值和出場回溯周期數(shù)等信息。函數(shù)HilbertPeriod代碼:Inputs:Price(numeric);Vars:Smoother(0),Detrender(0),I1(0),Q1(0),jI(0),jQ(0),I2(0),Q2(0),X1(0),X2(0),Y1(0),Y2(0),Re(0),Im(0),Period(0);IfCurrentBar>5thenbeginSmoother=(4*Price+3*Price[1]+2*Price[2]+Price[3])/10;Detrender=(.25*Smoother+.75*Smoother[2]-.75*Smoother[4]-.25*Smoother[6])*(.046*Period[1]+.332);Q1=(.25*Detrender+.75*Detrender[2]-.75*Detrender[4]-.25*Detrender[6])*(.046*Period[1]+.332);I1=Detrender[3];jI=.25*I1+.75*I1[2]-.75*I1[4]-.25*I1[6];jQ=.25*Q1+.75*Q1[2]-.75*Q1[4]-.25*Q1[6];I2=I1-jQ;Q2=Q1+jI;I2=.15*I2+.85*I2[1];Q2=.15*Q2+.85*Q2[1];X1=I2*I2[1];X2=I2*Q2[1];Y1=Q2*Q2[1];Y2=Q2*I2[1];Re=X1+Y1;Im=X2-Y2;Re=.2*Re+.8*Re[1];Im=.2*Im+.8*Im[1];IfIm<>0andRe<>0thenPeriod=360/ArcTangent(Im/Re);IfPeriod>1.5*Period[1]thenPeriod=1.5*Period[1];IfPeriod<.67*Period[1]thenPeriod=.67*Period[1];IfPeriod<6thenPeriod=6;IfPeriod>50thenPeriod=50;Period=.2*Period+.8*Period[1];HilbertPeriod=Period;end;指標(biāo)代碼:inputs:Price((H+L)/2),EntryVal(0),EntryK(0),ExitVal(0),ExitK(0);vars:Period(0),count(0),EntryLookBack(0),ExitLookBack(0),EntryChannel(0),ExitChannel(0);Period=HilbertPeriod(Price);IfEntryVal<>0thenEntryLookBack=EntryValelseEntryLookBack=EntryK*Period;ifEntryLookBack<1thenEntryLookBack=1;IfExitVal<>0thenExitLookBack=ExitValelseExitLookBack=ExitK*Period;ifExitLookBack<1thenExitLookBack=1;EntryChannel=0;forcount=1toEntryLookBackbeginifEntryChannel<High[count]thenEntryChannel=High[count];end;ExitChannel=100000;forcount=1toExitLookBackbeginifExitChannel>Low[count]thenExitChannel=Low[count];end;plot1(EntryChannel,“EntryChannel”);plot2(ExitChannel,“ExitChannel”);IfHigh>EntryChannelthenplot3(EntryChannel,“Enter”);IfLow<ExitChannelthenplot4(ExitChannel,“Exit”);策略代碼:inputs:Price((H+L)/2),EntryVal(15),EntryK(0),ExitVal(15),ExitK(0);vars:Period(0),count(0),EntryLookBack(0),ExitLookBack(0),EntryChannel(0),ExitChannel(0);Period

=HilbertPeriod(Price);IfEntryVal<>0thenEntryLookBack=EntryValelseEntryLookBack=EntryK*Period;if

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論