海龜通道策略(TBQ版)_第1頁
海龜通道策略(TBQ版)_第2頁
海龜通道策略(TBQ版)_第3頁
海龜通道策略(TBQ版)_第4頁
海龜通道策略(TBQ版)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

海龜通道策略(TBQ版)海龜通道策略,作為著名的趨勢跟蹤策略之一,其核心思想在于利用市場波動性和趨勢持續(xù)性來實現(xiàn)盈利。該策略通過設(shè)定一系列參數(shù)和條件,自動判斷市場趨勢,并據(jù)此進(jìn)行買賣操作。策略概述海龜通道策略是一種基于技術(shù)分析的趨勢跟蹤策略,它結(jié)合了唐奇安通道、平均波動率(ATR)以及風(fēng)險管理等要素。該策略通過計算特定周期內(nèi)的最高價、最低價和平均波動率,構(gòu)建出上下兩條通道線,以此作為買賣信號的觸發(fā)點。交易邏輯詳解1.頭寸計算:-根據(jù)設(shè)定的頭寸模式(如海龜風(fēng)險度、固定頭寸等),計算出當(dāng)前應(yīng)持有的交易單位數(shù)(TurtleUnits)。這一過程涉及到初始資金、風(fēng)險比例、平均波動率等多個參數(shù)的綜合考量。2.開倉條件:-當(dāng)市場價格突破唐奇安通道的上軌或下軌時,視為買入或賣出的信號。具體來說,若當(dāng)前市場處于多頭趨勢(即價格高于唐奇安通道上軌),且交易單位數(shù)滿足條件,則執(zhí)行買入操作;反之,若市場處于空頭趨勢(即價格低于唐奇安通道下軌),則執(zhí)行賣出操作。3.加倉條件:-在已持有多頭或空頭頭寸的情況下,若市場價格繼續(xù)朝有利方向移動,并超過預(yù)設(shè)的增倉點(如開倉價加上0.5倍的N值),則進(jìn)行加倉操作。這一過程旨在捕捉市場的持續(xù)趨勢,提高盈利空間。4.止損與離市條件:-為了控制風(fēng)險,策略設(shè)定了止損和離市條件。當(dāng)市場價格觸及止損點(如多頭頭寸時價格下跌至開倉價減去2倍的N值)時,策略會自動平倉以鎖定損失。此外,策略還根據(jù)設(shè)定的離市周期(TrailingExitLength)動態(tài)調(diào)整離市點,以適應(yīng)市場波動性的變化。5.風(fēng)險管理:-策略通過多種方式來管理風(fēng)險,包括設(shè)定最大建倉次數(shù)、固定頭寸大小、風(fēng)險比例等。這些參數(shù)共同構(gòu)成了策略的風(fēng)險控制體系,確保在追求盈利的同時,能夠有效控制潛在損失。策略特點1.趨勢跟蹤:-海龜通道策略的核心在于捕捉市場趨勢,并跟隨趨勢進(jìn)行交易。這種策略在趨勢明顯的市場環(huán)境中表現(xiàn)尤為出色,能夠充分把握市場的盈利機(jī)會。2.風(fēng)險管理:-該策略注重風(fēng)險管理,通過設(shè)定止損點、離市點以及頭寸規(guī)模等參數(shù)來控制潛在風(fēng)險。這有助于在市場波動較大時保持穩(wěn)定的收益水平。3.自動化交易:-海龜通道策略是一種自動化交易策略,能夠自動執(zhí)行買賣操作。這降低了人為干預(yù)和情緒影響的可能性,提高了交易的客觀性和準(zhǔn)確性。4.靈活性:-該策略提供了多種頭寸模式和參數(shù)設(shè)置選項,使得投資者可以根據(jù)自己的風(fēng)險承受能力和市場情況靈活調(diào)整策略參數(shù),以適應(yīng)不同的交易需求。海龜通道策略是一種基于技術(shù)分析的趨勢跟蹤策略,它通過結(jié)合唐奇安通道、平均波動率以及風(fēng)險管理等要素來構(gòu)建交易邏輯。該策略具有趨勢跟蹤、風(fēng)險管理、自動化交易以及靈活性等特點,能夠在不同市場環(huán)境下實現(xiàn)穩(wěn)定的盈利。策略代碼:ParamsNumericnEntries(2);//最大建倉次數(shù)NumericATRLength(26);//平均波動周期ATRLengthNumericboLength(20);//短周期BreakOutLengthNumericteLength(10);//離市周期TrailingExitLengthNumericRiskRatio(0.2);//①風(fēng)險度or比例%NumericLots(1);//②固定頭寸NumericFund(50);//③初始資金:萬Enum<String>Pos_Mode(["海龜風(fēng)險度","固定頭寸","固定金額","固定風(fēng)險度"]);//頭寸模式Vars//原參數(shù)NumericfsLength(55);//長周期FailSafeLengthNumericMinPoint;//最小變動單位NumericN;//N值NumericTotalEquity;//按最新收盤價計算出的總資產(chǎn)NumericTurtleUnits;//交易單位NumericExitHighestPrice;//離市時判斷需要的N周期最高價NumericExitLowestPrice;//離市時判斷需要的N周期最低價NumericmyEntryPrice;//開倉價格NumericmyExitPrice;//平倉價格Series<Numeric>AvgTR;//ATRSeries<Numeric>DonchianHi;//唐奇安通道上軌,延后1個BarSeries<Numeric>DonchianLo;//唐奇安通道下軌,延后1個BarSeries<Numeric>fsDonchianHi;//唐奇安通道上軌,延后1個Bar,長周期Series<Numeric>fsDonchianLo;//唐奇安通道下軌,延后1個Bar,長周期Series<Numeric>preEntryPrice(0);//前一次開倉的價格BoolL4En(False);//多進(jìn)BoolL4Ex(False);//賣平BoolS4En(False);//空進(jìn)BoolS4Ex(False);//買平BoolSendOrderThisBar(False);//當(dāng)前Bar有過交易Series<Bool>PreBreakoutFailure(false);//前一次突破是否失敗Defs//集合競價過濾BoolR_JHJJ(){If(BarStatus==2){If(Time==0.090000&&CurrentTime<0.090000)ReturnTrue;If(Time==0.093000&&CurrentTime<0.093000)ReturnTrue;If(Time==0.210000&&CurrentTime<0.210000)ReturnTrue;}ReturnFalse;}//漲跌停板過濾BoolR_ZDT(){If(BarStatus==2&&((Close==Q_LowerLimit)or(Close==Q_UpperLimit))){ReturnTrue;}ReturnFalse;}Events//此處實現(xiàn)事件函數(shù)//初始化事件函數(shù),策略運(yùn)行期間,首先運(yùn)行且只有一次,應(yīng)用在訂閱數(shù)據(jù)等操作OnInit(){//多圖層訂閱行情//freqString訂閱頻率'mon':月,'w':周,'d':日,'h':時,'m':分,'s':秒,'tick':tick,字符串前面可以添加數(shù)字,如'3d'表示周期是3天;//flagIntegerEnum_Data_OnlyNight()表示僅夜盤,Enum_Data_OnlyDay()表示僅日盤,Enum_Data_RolloverBackWard()表示后復(fù)權(quán),可做或運(yùn)算,表示多種情況//SubscribeBar(Data0.Symbol,"1h",Data0.BeginDateTime);//按樣本數(shù)訂閱//SubscribeBarCounts(Data0.Symbol,"1h",1000);//與數(shù)據(jù)源有關(guān)Range[0:DataCount-1]{//=========數(shù)據(jù)源相關(guān)設(shè)置==============AddDataFlag(Enum_Data_RolloverBackWard());//設(shè)置后復(fù)權(quán)AddDataFlag(Enum_Data_RolloverRealPrice());//設(shè)置映射真實價格AddDataFlag(Enum_Data_AutoSwapPosition());//設(shè)置自動換倉AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());//設(shè)置忽略換倉信號計算/*備注:Enum_Data_IgnoreSwapSignalCalc,對于一個策略來說,換倉的這筆交易并不是策略規(guī)則產(chǎn)生的,所以將換倉前后的這兩筆交易合并為一筆能更好的統(tǒng)計策略性能。合并之后,交易盈虧依舊是真實的,只不過換倉前后的這兩筆交易算一筆交易,但是手續(xù)費(fèi)會從測試報告中扣除。忽略換倉時,換倉后的開倉市值為原始的開倉市值。開倉均價按照原始開倉市值計算得來。*/SetSwapPosVolType(2);//換月時頭寸:1=等市值,2=等持倉量//AddDataFlag(Enum_Data_NotGenReport());//設(shè)置數(shù)據(jù)源不參與生成報告標(biāo)志//=========交易相關(guān)設(shè)置==============//SetOrderPriceOffset(2);//設(shè)置委托價為叫買/賣價偏移2跳//SetOrderMap2MainSymbol();//設(shè)置委托映射到主力}//與數(shù)據(jù)源無關(guān)//SetBeginBarMaxCount(10);//設(shè)置最大起始bar數(shù)為10//SetBackBarMaxCount(10);//設(shè)置最大回溯bar數(shù)為10//=========交易相關(guān)設(shè)置==============SetInitCapital(Fund*10000);//設(shè)置初始資金}OnReady(){Array<CodeProperty>props;//獲取指定合約的所有合約屬性Boolret=GetProperty(Symbol,props);Print("GetProperty:"+IIFString(ret,"True","False")+","+TextArray(props));}OnBarOpen(ArrayRef<Integer>indexs){}OnBar(ArrayRef<Integer>indexs){Range[0:DataCount-1]{If(BarStatus==0){preEntryPrice=InvalidNumeric;PreBreakoutFailure=false;}MinPoint=MinMove*PriceScale;AvgTR=XAverage(TrueRange,ATRLength);N=AvgTR[1];//頭寸計算If(Pos_Mode=="海龜風(fēng)險度"){TotalEquity=Portfolio_CurrentCapital()+Portfolio_UsedMargin();TurtleUnits=(TotalEquity*RiskRatio/100)/(N/ROLLOVER*ContractUnit()*BigPointValue());TurtleUnits=IntPart(TurtleUnits);//對小數(shù)取整}ElseIf(Pos_Mode=="固定風(fēng)險度"){TotalEquity=Fund*10000;TurtleUnits=(TotalEquity*RiskRatio/100)/(N/ROLLOVER*ContractUnit()*BigPointValue());TurtleUnits=IntPart(TurtleUnits);//對小數(shù)取整}ElseIf(Pos_Mode=="固定頭寸"){TurtleUnits=Lots;}ElseIf(Pos_Mode=="固定金額"){TurtleUnits=(Fund*10000*RiskRatio/100)/(O/ROLLOVER*MarginRatio*ContractUnit()*BigPointValue());TurtleUnits=IntPart(TurtleUnits);//對小數(shù)取整//Commentary("TT0="+Text((Fund*10000*RiskRatio/100)));//Commentary("TT1="+Text((O/ROLLOVER*MarginRatio*ContractUnit()*BigPointValue())));}Else{//Numericmylots=MAX(1,INTPART(Fund/(C[1]/Rollover()*ContractUnit()*BigPointValue()*0.10)));//簡單的通用性測試保證金比例10%TurtleUnits=0;}TurtleUnits=Max(1,TurtleUnits);//限定最小為1DonchianHi=HighestFC(High[1],boLength);DonchianLo=LowestFC(Low[1],boLength);//fsDonchianHi=HighestFC(High[1],fsLength);//fsDonchianLo=LowestFC(Low[1],fsLength);ExitLowestPrice=LowestFC(Low[1],teLength);ExitHighestPrice=HighestFC(High[1],teLength);//開平條件Booll4e=High>DonchianHi&&TurtleUnits>=1;//多進(jìn)Booll4x=False;//賣平Bools4e=False;//空進(jìn)Bools4x=False;//買平//進(jìn)出場價格Numericl4e_price=min(high,DonchianHi+MinPoint);//開多價格Numericl4x_price=Open;//平多價格Numerics4e_price=Open;//開空價格Numerics4x_price=Open;//平空價格//開平處理//If(MarketPosition!=1&&l4e)//{//Buy(lots,l4e_price);//}If(MarketPosition!=-1&&s4e){SellShort(lots,s4e_price);}If(MarketPosition==1&&BarsSinceEntry>0&&l4x){Sell(0,l4x_price);}If(MarketPosition==-1&&BarsSinceEntry>0&&s4x){BuyToCover(0,s4x_price);}Commentary("N="+Text(N));Commentary("MinPoint="+Text(MinPoint));Commentary("preEntryPrice="+Text(preEntryPrice));Commentary("PreBreakoutFailure="+IIFString(PreBreakoutFailure,"True","False"));PlotNumeric("DonchianHi",DonchianHi);PlotNumeric("DonchianLo",DonchianLo);//設(shè)定畫線類型,如:Enum_Dot,Enum_Line,Enum_Bar,Enum_Cross,默認(rèn)為屬性框中設(shè)定//設(shè)定畫線風(fēng)格,如:Enum_Solid,Enum_Dash,Enum_Broken,Enum_Dash_Dot,默認(rèn)為屬性框中設(shè)定//設(shè)定畫線線寬,如:Enum_1Pix,Enum_2Pix,Enum_3Pix,Enum_4Pix,Enum_5Pix,Enum_6Pix,Enum_7Pix,默認(rèn)為屬性框中設(shè)定//PlotAuto("preEntryPrice",preEntryPrice,0,White,Enum_Line,Enum_Dash,Enum_2Pix);//開倉信號交易處理If(MarketPosition==0){//突破開倉//If(High>DonchianHi&&TurtleUnits>=1)If(l4e){//開倉價格取突破上軌+一個價位和最高價之間的較小值,這樣能更接近真實情況,并能盡量保證成交//myEntryPrice=min(high,DonchianHi+MinPoint);myEntryPrice=l4e_price;myEntryPrice=IIF(myEntryPrice<Open,Open,myEntryPrice);//大跳空的時候用開盤價代替preEntryPrice=myEntryPrice;Buy(TurtleUnits,myEntryPrice);SendOrderThisBar=True;PreBreakoutFailure=False;}If(Low<DonchianLo&&TurtleUnits>=1){//開倉價格取突破下軌-一個價位和最低價之間的較大值,這樣能更接近真實情況,并能盡量保證成交myEntryPrice=max(low,DonchianLo-MinPoint);myEntryPrice=IIF(myEntryPrice>Open,Open,myEntryPrice);//大跳空的時候用開盤價代替preEntryPrice=myEntryPrice;SellShort(TurtleUnits,myEntryPrice);SendOrderThisBar=True;PreBreakoutFailure=False;}}//持倉處理If(MarketPosition==1)//有多倉的情況{Commentary("ExitLowestPrice="+Text(ExitLowestPrice));If(Low<ExitLowestPrice){myExitPrice=max(Low,ExitLowestPrice-MinPoint);myExitPrice=IIF(myExitPrice>Open,Open,myExitPrice);//大跳空的時候用開盤價代替Sell(0,myExitPrice);//數(shù)量用0的情況下將全部平倉}Else{If(preEntryPrice!=InvalidNumeric&&TurtleUnits>=1){If(Open>=preEntryPrice+0.5*N&&CurrentEntries<nEntries)//如果開盤就超過設(shè)定的1/2N,則直接用開盤價增倉。{myEntryPrice=Open;preEntryPrice=myEntryPrice;Buy(TurtleUnits,myEntryPrice);SendOrderThisBar=True;}while(High>=preEntryPrice+0.5*N&&CurrentEntries<nEntries)//以最高價為標(biāo)準(zhǔn),判斷能進(jìn)行幾次增倉{myEntryPrice=preEntryPrice+0.5*N;preEntryPrice=myEntryPrice;if(False==Buy(TurtleUnits,myEntryPrice)){break;}SendOrderThisBar=True;}}//止損指令I(lǐng)f(Low<=preEntryPrice-2*N&&SendOrderThisBar==false)//加倉Bar不止損{myExitPrice=preEntryPrice-2*N;myExitPrice=IIF(myExitPrice>Open,Open,myExitPrice);//大跳空的時候用開盤價代替Sell(0,myExitPrice);//數(shù)量用0的情況下將全部平倉PreBreakoutFailure=True;}}}ElseIf(MarketPosition==-1)//有空倉的情況{//求出持空倉時離市的條件比較值Commentary("ExitHighestPrice="+Text(ExitHighestPrice));If(High>ExitHighestPrice){myExitPrice=Min(High,ExitHighestPrice+MinPoint);myExitPrice=IIF(myExitPrice<Open,Open,myExitPrice);//大跳空的時候用開盤價代替BuyToCover(0,myExitPrice);//數(shù)量用0的情況下將全部平倉}Else{If(preEntryPrice!=InvalidNumeric&&TurtleUnits>=1){If(Open<=preEntryPrice-0.5*N&&CurrentEntries<

溫馨提示

  • 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

提交評論