2015年2月9日 星期一

●OBV 能量潮指標 [程式碼]

EasyTrader ArtNo 245
     能量潮指標(On Balance Volume,OBV)是葛蘭維(Joe Granville)於本世紀60年代提出的,並被廣泛使用。股市技術分析的四大要素:價、量、時、空。OBV指標就是從“量”這個要素作為突破口,來發現熱門股票、分析股價運動趨勢的一種技術指標。它是將股市的人氣—成交量與股價的關係數字化、直觀化,以股市的成交量變化來衡量股市的推動力,從而研判股價的走勢。關於成交量方面的研究,OBV能量潮指標是一種相當重要的分析指標之一。
能量潮理論成立的依據重要是:
1、投資者對股價的評論越不一致,成交量越大;反之,成交量就小。因此,可用成交量來判斷市場的人氣和多空雙方的力量。
2、重力原理。上升的物體遲早會下跌,而物體上升所需的能量比下跌時多。涉及到股市則可解釋為:一方面股價遲早會下跌;另一方面,股價上升時所需的能量大,因此股價的上升特別是上升初期必須有較大的成交量相配合;股價下跌時則不必耗費很大的能量,因此成交量不一定放大,甚至有萎縮趨勢。
3、慣性原則——動則恆動、靜則恆靜。只有那些被投資者或主力相中的熱門股會在很大一段時間內成交量和股價的波動都比較大,而無人問津的冷門股,則會在一段時間內,成交量和股價波幅都比較小。

OBV指標的計算比較簡單,主要是計算累積成交量。
其計算公式為:當日OBV=本日值+前一日的OBV值
如果本日收盤價或指數高於前一日收盤價或指數,本日值則為正;
如果本日的收盤價或指數低於前一日的收盤價,本日值則為負值;
如果本日值與前一日的收盤價或指數持平,本日值則不於計算,然後計算累積成交量。這裡的成交量是指成交股票的手數。


OBV線的應用原則:
1)OBV線呈N字形波動,當OBV線超越前一次N字形的高點時,則記下一個向上的箭頭;當OBV線跌破前一次N的低點時,就記下一個向下的箭頭。
2)當OBV線連續形成N字形上漲狀態,則上漲的股價將要出現反轉。
3)當OBV線在連續小N字形上漲時,又出現大N字形上漲狀態,則行情隨時可能出現反轉。
4)OBV線的走向與股價曲線產生"背離"時,說明當時的走勢是虛假的,不管當時股價是上漲行情還是下跌行情,都隨時有反轉的可能,需要格外留心。
5)OBV線如果持續一個月以上橫向移動後突然上沖,預示大行情隨時可能發生。如圖OBV經過長達一個月的橫盤突然上沖,在成交量的配合下,股價一路上揚。

能量潮指標的一般研判標準
1、當OBV線下降而股價卻上升,預示股票上升能量不足,股價可能隨時下跌,是賣出股票的信號。
2、當OBV線上升而股價卻小幅下跌,說明市場上人氣旺盛,下檔承接力較強,股價的下跌只是暫時的技術性回調,股價可能即將止跌回升。

3、當OBV線呈緩慢上升而股價也同步上漲時,表示行情穩步向上,股市中長期投資形勢尚好,股價仍有上升空間,投資者應持股待漲。
4、當OBV線呈緩慢下降而股價也同步下跌時,表示行情逐步盤跌,股市中長期投資形勢不佳,股價仍有下跌空間,投資者應以賣出股票或持幣觀望為主。
5、一般情況下,當OBV線出現急速上升的現象時,表明市場上大部分買盤已全力涌進,而買方的能量的爆發不可能持續太久,行情可能將會出現回檔,投資者應考慮逢高賣出。尤其在OBV線急速上升後不久,而在盤面上出現鋸齒狀曲線並有掉頭向下跡象時,表明行情已經漲升乏力,行情即將轉勢,為更明顯的賣出信號。這點對於短期急升並漲幅較大的股票的研判更為準確。
6、一般情況下,當OBV線出現急速下跌的現象時,表明市場上大量賣盤洶涌而出,股市行情已經轉為跌勢,行價將進入一段較長時期的下跌過程中,此時,投資者還是應以持幣觀望為主,不要輕易搶反彈。只有當OBV線經過急跌後,在低部開始形成鋸齒狀的曲線時,才可以考慮進場介入,作短期反彈行情。
7、OBV線經過長期累積後的大波段的高點(即累積高點),經常成為行情再度上升的大阻力區,股價常在這區域附近遭受強大的上升壓力而反轉下跌。而一旦股價突破這長期阻力區的話,其後續漲勢將更加強勁有力。
8、OBV線經過長期累積後的大波段的低點(即累積低點),則常會形成行情下跌的大支撐區,股價會在這區域附近遇到極強的下跌支撐而止跌企穩。而一旦股價向下跌破這長期支撐區的話,其後續跌勢將更猛。
資料參考來源 - MBA智庫
測試程式碼
input:EntryType(1),ExitType(1);
input:NBarL(30),NBarS(18),TradeProfit(0.045),TradeStopLoss(0.01),ATRs_L(12.7),ATRs_S(4.6);
vars: IsBalanceDay(False),MP(0),PF(0),PL(0),HLRange(100);
input: Length(9),Frac(1.25), BarsBack(13), NewHighs(3), NewLows(4),SWLength(16);
Vars: MyOBV(0),Vol(0),BuyPrice(0),SellPrice(0);

MP = MarketPosition ;

if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3 then isBalanceDay = True else isBalanceDay =False ;

PF = AvgPrice*TradeProfit ;
PL = AvgPrice*TradeStopLoss ;

{ OBV 計算 - 日K/分K皆可使用 }
Vol = iff(DataCompression > 1 , Volume,Ticks) ;
if AbsValue(Close-Close[1]) <> 0 then
MyOBV = MyOBV[1]+Sign(Close-Close[1])*Vol ;
{ Sign 函數介紹 , Sign(N) 如果 N大於零 回傳 1 , N小於零回傳 -1,N等於零回傳 0}

元素 – 量先價行
if EntryType = 1 then Begin
{OBV 創新低/價格未創低作空 }
if MP <> 1 and MyOBV < Lowest(MyOBV,Length)[1] and Low > Lowest(Low,Length)[1] then Sell next bar at Lowest(Low,3) stop ;

{OBV 創新高/價格未創高作多}

if MP <> -1 and MyOBV > Highest(MyOBV,Length)[1] and High < Highest(High,Length)[1] then Buy next bar at Highest(High,3) stop ;
end;

元素 – 背離
if EntryType = 2 then Begin
OBV N型突破均線 但價格創低進場作空
if MP <> -1 and MyOBV Cross over XAverage(MyObV,Length) then sell next bar at Lowest(Low,NewLows) stop;

OBV N型跌破均線但價格創高進場作多
if MP <> 1 and MyOBV Cross under XAverage(MyObV,BarsBack) then Buy next bar at Highest(High,NewHighs) stop ;
end;

if ExitType = 1 then SetStopLoss(PL * BigPointValue) ;

if ExitType = 2 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
end;

if ExitType = 3 then Begin
if MP > 0 and BarsSinceEntry = NBarL then ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then ExitShort next bar at Market ;
end;

if ExitType = 4 then Begin
SetStopLoss(PL * BigPointValue) ;
setProfitTarget(PF * BigPointValue) ;
if MP > 0 and BarsSinceEntry = NBarL then {Sell } ExitLong next bar at Market ;
if MP < 0 and BarsSinceEntry = NBarS then {Buy} ExitShort next bar at Market ;
end;

if IsBalanceDay then setExitonClose ;
元素 – 量先價行 台指期 日 K 留倉 交易期間 2004/12/31 ~ 2014/12/31 交易成本 1200



元素 – 背離 台指期 60 min K 留倉 交易期間 2004/12/31 ~ 2014/12/31 交易成本 1200

0 留言:

張貼留言

如果有私人問題想請教,請透過網站右方『與站長聯絡』之表單,謝謝!

----------------------------------------------------------------------------------------------------
網站聲明(Disclaimer)
本教學網站內所提供之程式碼(包括函數、指標、訊號)屬開放程式碼,用意在於讓使用者學習程式語法之撰寫,使用者可以任意修改語法內容並調整參數。本網站所有之內容(包括文章、影片、歷史紀錄、程式碼、教材)限用於個人學習使用,請勿轉寄、濫用,嚴禁私自串接帳戶交易。
-------------------------------------------------------------------------------------------------