WR威廉指標(biāo)策略(TB版)_第1頁(yè)
WR威廉指標(biāo)策略(TB版)_第2頁(yè)
WR威廉指標(biāo)策略(TB版)_第3頁(yè)
WR威廉指標(biāo)策略(TB版)_第4頁(yè)
WR威廉指標(biāo)策略(TB版)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

WR威廉指標(biāo)策略(TB版)策略概述WR威廉指標(biāo)策略是一種基于技術(shù)分析的交易策略,通過(guò)結(jié)合威廉指標(biāo)(WR)和相對(duì)強(qiáng)弱指數(shù)(RSI)來(lái)判斷市場(chǎng)的買(mǎi)賣(mài)點(diǎn)。該策略還包括了跟蹤止損和固定止損的設(shè)置,以提高交易的風(fēng)險(xiǎn)管理效率。策略參數(shù)Length1:用于計(jì)算威廉指標(biāo)的周期數(shù),默認(rèn)值為10。Length:用于計(jì)算RSI指標(biāo)的周期數(shù),默認(rèn)值為14。TrailingStart1:第一級(jí)跟蹤止盈啟動(dòng)設(shè)置,默認(rèn)值為50。TrailingStart2:第二級(jí)跟蹤止盈啟動(dòng)設(shè)置,默認(rèn)值為80。TrailingStop1:第一級(jí)跟蹤止盈設(shè)置,默認(rèn)值為30。TrailingStop2:第二級(jí)跟蹤止盈設(shè)置,默認(rèn)值為20。StopLossSet:固定止損點(diǎn)數(shù),默認(rèn)值為30。指標(biāo)計(jì)算威廉指標(biāo)(WR):公式:PRValue=100-((HH-Close)/Divisor)*100其中,HH為過(guò)去Length1天內(nèi)的最高價(jià),Divisor為HH與過(guò)去Length1天內(nèi)的最低價(jià)之差,Close為當(dāng)日收盤(pán)價(jià)。相對(duì)強(qiáng)弱指數(shù)(RSI):通過(guò)計(jì)算價(jià)格變動(dòng)的平均收益與平均損失的比率來(lái)評(píng)估市場(chǎng)的強(qiáng)弱。買(mǎi)賣(mài)規(guī)則買(mǎi)入條件:當(dāng)威廉指標(biāo)(前一日值)大于等于50且RSI指標(biāo)(前一日值)也大于等于50時(shí),買(mǎi)入。賣(mài)出條件:當(dāng)威廉指標(biāo)(前一日值)小于等于50且RSI指標(biāo)(前一日值)也小于等于50時(shí),賣(mài)出(或做空)。止損與止盈固定止損:根據(jù)設(shè)定的StopLossSet值,在達(dá)到設(shè)定的止損點(diǎn)時(shí)進(jìn)行平倉(cāng)。跟蹤止損:第一級(jí):當(dāng)價(jià)格從買(mǎi)入點(diǎn)上漲(或下跌)超過(guò)TrailingStart1MinPoint時(shí),若價(jià)格回落超過(guò)TrailingStop1MinPoint,則觸發(fā)平倉(cāng)。第二級(jí):當(dāng)價(jià)格從買(mǎi)入點(diǎn)上漲(或下跌)超過(guò)TrailingStart2MinPoint時(shí),若價(jià)格回落超過(guò)TrailingStop2MinPoint,則觸發(fā)平倉(cāng)。策略流程計(jì)算威廉指標(biāo)和RSI指標(biāo)。判斷當(dāng)前市場(chǎng)狀況是否符合買(mǎi)入或賣(mài)出條件。若符合條件,則執(zhí)行買(mǎi)入或賣(mài)出操作。監(jiān)控價(jià)格走勢(shì),根據(jù)止損和止盈規(guī)則進(jìn)行平倉(cāng)操作。附加說(shuō)明策略中還包括了對(duì)集合競(jìng)價(jià)和小節(jié)休息的過(guò)濾,以確保交易信號(hào)的準(zhǔn)確性。策略通過(guò)記錄開(kāi)倉(cāng)后的最高價(jià)和最低價(jià),用于后續(xù)的跟蹤止損判斷。提供了詳細(xì)的變量聲明和邏輯判斷,以確保策略的可靠性和執(zhí)行效率。策略信號(hào)代碼:ParamsNumericLength1(10);NumericLength(14);NumericTrailingStart1(50);NumericTrailingStart2(80);NumericTrailingStop1(30);NumericTrailingStop2(20);NumericStopLossSet(30);VarsNumericHH;NumericDivisor;NumericSeriesPRValue;NumericSeriesNetChgAvg(0);NumericSeriesTotChgAvg(0);NumericSF(0);NumericChange(0);NumericChgRatio(0);NumericSeriesRSIValue;NumericSeriesHighestAfterEntry;NumericSeriesLowestAfterEntry;NumericMinPoint;NumericMyEntryPrice;Numericmyprice;Numericmyexitprice;BeginHH=Highest(High,Length1);Divisor=HH-Lowest(Low,Length1);If(Divisor<>0)PRValue=100-((HH-Close)/Divisor)*100;elsePRValue=Divisor;If(CurrentBar<=Length-1){NetChgAvg=(Close-Close[Length])/Length;TotChgAvg=Average(Abs(Close-Close[1]),Length);}Else{SF=1/Length;Change=Close-Close[1];NetChgAvg=NetChgAvg[1]+SF*(Change-NetChgAvg[1]);TotChgAvg=TotChgAvg[1]+SF*(Abs(Change)-TotChgAvg[1]);}If(TotChgAvg<>0)ChgRatio=NetChgAvg/TotChgAvg;elseChgRatio=0;RSIValue=50*(ChgRatio+1);If(!CallAuctionFilter())Return;If(MarketPosition<>1&&PRValue[1]>=50AndRSIValue[1]>=50)Buy(1,Open);If(MarketPosition<>-1&&PRValue[1]<=50AndRSIValue[1]<=50)SellShort(1,Open);If(BarsSinceEntry==0){HighestAfterEntry=Close;LowestAfterEntry=Close;If(MarketPosition<>0){HighestAfterEntry=Max(HighestAfterEntry,AvgEntryPrice);LowestAfterEntry=Min(LowestAfterEntry,AvgEntryPrice);}}else{HighestAfterEntry=Max(HighestAfterEntry,High);LowestAfterEntry=Min(LowestAfterEntry,Low);}MinPoint=MinMove*PriceScale;MyEntryPrice=AvgEntryPrice;If(MarketPosition==1){If(HighestAfterEntry[1]>=MyEntryPrice+TrailingStart2*MinPoint){If(Low<=HighestAfterEntry[1]-TrailingStop2*MinPoint)MyExitPrice=HighestAfterEntry[1]-TrailingStop2*MinPoint;Sell(0,MyExitPrice);}elseif(HighestAfterEntry[1]>=MyEntryPrice+TrailingStart1*MinPoint){If(Low<=HighestAfterEntry[1]-TrailingStop1*MinPoint){MyExitPrice=HighestAfterEntry[1]-TrailingStop1*MinPoint;Sell(0,MyExitPrice);}}elseif(Low<=MyEntryPrice-StopLossSet*MinPoint){MyExitPrice=MyEntryPrice-StopLossSet*MinPoint;Sell(0,MyExitPrice);}}elseif(MarketPosition==-1){If(LowestAfterEntry[1]<=MyEntryPrice-TrailingStart2*MinPoint){If(High>=LowestAfterEntry[1]+TrailingStop2*MinPoint){MyExitPrice=LowestAfterEntry[1]+TrailingStop2*MinPoint;BuyToCover(0,MyExitPrice);}}elseif(LowestAfterEntry[1]<=MyEntryPrice-TrailingStart1*MinPoint){If(High>=LowestAfterEntry[1]+TrailingStop1*MinPoint){MyExitPrice=LowestAfterEntry[1]+TrailingStop1*MinPoint;BuyToCover(0,MyExitPrice);}}elseIf(High>=MyEntryPrice+StopLossSet*MinPoint){MyExitPrice=MyEntryPrice+StopLossSet*MinPoint;BuyToCover(0,MyExitPrice);}}End第一個(gè)求最高函數(shù)Highest,代碼如下:ParamsNumericSeriesPrice(0);//聲明序列參數(shù)Price,賦值0.NumericLength(5);//聲明參數(shù)Length,賦值5。VarsNumericHighestValue;//聲明變量HighestValue.Numerici;//聲明變量i。BeginHighestValue=Price;//變量HighestValue的值等于價(jià)格。fori=1toLength-1//循環(huán)語(yǔ)句,變量i的值從1循環(huán)到參數(shù)Length-1,循環(huán)執(zhí)行花括號(hào)里的語(yǔ)句程序。{If(Price[i]>HighestValue)//假如Price[i]大于變量HighestValue,其實(shí)這當(dāng)前價(jià)格是一個(gè)中間值,作用是為了求前1,2,3,4數(shù)位的價(jià)格哪個(gè)最大。HighestValue=Price[i];//可以看到,假如Price[1]的值大于當(dāng)前價(jià),那么就把Price[1]的值賦予給HighestValue,再把Price[1]跟Price[2]對(duì)比,循環(huán)到Price[4]為止。}ReturnHighestValue;//根據(jù)對(duì)比的這5根k線的價(jià)格,把最大值返回給主函數(shù)。End第二個(gè)求最低函數(shù)Lowest,代碼如下:ParamsNumericSeriesPrice(0);NumericLength(5);VarsNumericLowestValue;Numerici;BeginLowestValue=Price;fori=1toLength-1{If(Price[i]<LowestValue)LowestValue=Price[i];}ReturnLowestValue;End第三個(gè)求威廉指標(biāo)函數(shù)PercentR。算法:N日內(nèi)最高價(jià)與當(dāng)日收盤(pán)價(jià)的差,除以N日內(nèi)最高價(jià)與最低價(jià)的差,結(jié)果放大100倍。代碼如下:ParamsNumericLength(10);//聲明參數(shù)Length,賦值為10,VarsNumericHH;//聲明變量名為HH。NumericDivisor;//聲明變量名為Divisor。NumericPRValue;//聲明變量名為PRValue。BeginHH=Highest(High,Length);//變量HH值等于,調(diào)用函數(shù)Highest,求出10周期內(nèi)的最高價(jià)。Divisor=HH-Lowest(Low,Length);//變量Divisor值等于,10周期內(nèi)的最高價(jià)減去最低價(jià)。If(Divisor<>0)//假如變量Divisor不等于0.PRValue=100-((HH-Close)/Divisor)*100;//變量PRValue值=100-((10周期內(nèi)最高價(jià)-當(dāng)前收盤(pán)價(jià))/變量Divisor值)*100else//假如變量Divisor等于0.PRValue=Divisor;//變量PRValue等于0ReturnPRValue;//把變量PRValue的值返回給主函數(shù)End顯示在k線圖里的威廉指標(biāo)代碼如下:ParamsNumericLength(5);//聲明參數(shù)Length,賦值5.NumericOverSold(20);//聲明參數(shù)OverSold,賦值20.NumericOverBought(80);聲明參數(shù)OverBought,賦值80.VarsNumericWRValue;//聲明變量WRValue。BeginWRValue=PercentR(Length);//變量WRValue值,就是把參數(shù)5帶回函數(shù)PercentR里重新求一遍,再把得到的值返回來(lái)給WRValue。PlotNumeric("WR",WRValue);//畫(huà)線WR,替代WRValue。PlotNumeric("超買(mǎi)",OverBought);//畫(huà)線超買(mǎi),就是初值80.PlotNumeric("超賣(mài)",OverSold);//畫(huà)線超賣(mài),就是初值20.End策略買(mǎi)賣(mài)規(guī)則:跟RSI指標(biāo)共振。即同步穿過(guò)50中間值,買(mǎi)入;同步跌破50中間值,賣(mài)出。固定止損30,止盈分50與80兩級(jí)。策略代碼解釋如下:ParamsNumericLength1(10);NumericLength(14);NumericTrailingStart1(50);//跟蹤止盈啟動(dòng)設(shè)置1NumericTrailingStart2(80);//跟蹤止盈啟動(dòng)設(shè)置2NumericTrailingStop1(30);//跟蹤止盈設(shè)置1NumericTrailingStop2(20);//跟蹤止盈設(shè)置2NumericStopLossSet(30);//固定止損30個(gè)點(diǎn)VarsNumericHH;NumericDivisor;NumericSeriesPRValue;NumericSeriesNetChgAvg(0);NumericSeriesTotChgAvg(0);NumericSF(0);NumericChange(0);NumericChgRatio(0);NumericSeriesRSIValue;NumericSeriesHighestAfterEntry;NumericSeriesLowestAfterEntry;NumericMinPoint;NumericMyEntryPrice;Numericmyprice;Numericmyexitprice;Begin//計(jì)算WR指標(biāo)HH=Highest(High,Length1);Divisor=HH-Lowest(Low,Length1);If(Divisor<>0)PRValue=100-((HH-Close)/Divisor)*100;elsePRValue=Divisor;//計(jì)算RSI指標(biāo)If(CurrentBar<=Length-1){NetChgAvg=(Close-Close[Length])/Length;TotChgAvg=Average(Abs(Close-Close[1]),Length);}Else{SF=1/Length;Change=Close-Close[1];NetChgAvg=NetChgAvg[1]+SF*(Change-NetChgAvg[1]);TotChgAvg=TotChgAvg[1]+SF*(Abs(Change)-TotChgAvg[1]);}If(TotChgAvg<>0){ChgRatio=NetChgAvg/TotChgAvg;}else{ChgRatio=0;}RSIValue=50*(ChgRatio+1);If(!CallAuctionFilter())Return;//集合競(jìng)價(jià)和小節(jié)休息過(guò)濾If(MarketPosition<>1&&PRValue[1]>=50AndRSIValue[1]>=50){Buy(1,Open);}If(MarketPosition<>-1&&PRValue[1]<=50AndRSIValue[1]<=50){SellShort(1,Open);}If(BarsSinceentry==0){HighestAfterEntry=Close;LowestAfterEntry=Close;If(MarketPosition<>0){HighestAfterEntry=Max(HighestAfterEntry,AvgEntryPrice);//開(kāi)倉(cāng)的Bar,將開(kāi)倉(cāng)價(jià)和當(dāng)時(shí)的收盤(pán)價(jià)的較大值保留到HighestAfterEntryLowestAfterEntry=Min(LowestAfterEntry,AvgEntryPrice);//開(kāi)倉(cāng)的Bar,將開(kāi)倉(cāng)價(jià)和當(dāng)時(shí)的收盤(pán)價(jià)的較小值保留到LowestAfterEntry}}else{HighestAfterEntry=Max(HighestAfterEntry,High);//記錄下當(dāng)前Bar的最高點(diǎn),用于下一個(gè)Bar的跟蹤止損判斷LowestAfterEntry=Min(LowestAfterEntry,Low);//記錄下當(dāng)前Bar的最低點(diǎn),用于下一個(gè)Bar的跟蹤止損判斷}Commentary("HighestAfterEntry="+Text(HighestAfterEntry));Commentary("LowestAfterEntry="+Text(LowestAfterEntry));Commentary("MyEntryPrice="+Text(MyEntryPrice));MinPoint=MinMove*PriceScale;MyEntryPrice=AvgEntryPrice;If(MarketPosition==1)//有多倉(cāng)的情況{If(HighestAfterEntry[1]>=MyEntryPrice+TrailingStart2*MinPoint)//第二級(jí)跟蹤止損的條件表達(dá)式{If(Low<=HighestAfterEntry[1]-TrailingStop2*MinPoint){MyExitPrice=HighestAfterEntry[1]-TrailingStop2*MinPoint;Sell(0,MyExitPrice);}}elseif(HighestAfterEntry[1]>=MyEntryPrice+TrailingStart1*MinPoint)//第一級(jí)跟蹤止損的條件表達(dá)式{If(Low<=High

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論