On Balance Volume, fiyatlardaki değişimin yönüyle işlem hacmini ilişkilendiren bir göstergedir.
Basit bir şekilde senedin kapanışının bir önceki kapanışın üzerinde olmasıyla o gün yaratılan işlem hacmi
pozitif olarak işleme dahil edilirken, kapanışın bir önceki kapanışın altında kaldığı günlerde hacim
negatif olarak hesaba katılmaktadır.
Hesaplanması ise aşağıdaki şekildedir :
Bugünkü kapanış bir önceki günün kapanışından büyükse ;
OBV = Bir önceki günkü OBV + Bugünkü işlem hacmi
Bugünkü kapanış bir önceki günün kapanışından küçükse ;
OBV = Bir önceki günkü OBV - Bugünkü işlem hacmi
Bugünkü kapanış bir önceki günün kapanışına eşitse ;
OBV = Bir önceki günkü OBV
Genel kanı, OBV deki değişimlerin fiyatlardaki değişimlerden önce olduğu şeklindedir. Bunun ardında
yatan varsayım ise diğer volume index göstergelerinde olduğu gibi fiyatlardaki salınımların ve hacmin
azaldığı dönemlerde bilinçli yatırımcının alıma geçmesi ile OBV nin yükselmeye başlamasıdır. Fiyatların
yükselişi ile senede ilgisi artan küçük yatırımcınında gelmesiyle OBV deki artış hızlanacaktır.
Fiyatların aşırı yükselerek artışın yavaşladığı bölgelerde ise yine ilk satıma geçerek OBV nin düşmesine
sebep olanda yine bilinçli yatırımcıdır. OBV bu döngüyü yakalamak amacındadır.
OBV nin fiyatlarla uyum içinde olması beklenir. Yani OBV deki artışı fiyatlardaki artışın, düşüşü de
fiyatlardaki düşüşün izlemesi gerekir. Gösterge ile fiyatlar arasındaki uyumsuzluklar trendin kısa bir
süre sonra gösterge yönünde değişeceği şeklinde yorumlanır.
Bir diğer uyumsuzluksa fiyatlardaki yükselişe OBV nin yeni tepelerle düşüşe de yeni diplerle eşlik
edememesidir. Çünkü yükselen bir piyasada OBV daki yeni oluşan dip ve tepelerin bir önceki dip ve
tepelerden daha yüksekte oluşması beklenirken, alçalan bir piyasada da OBV daki dip ve tepelerin bir
önceki dip ve tepelerden daha aşağıda oluşması beklenir. Bunun gerçekleşmediği durumlar uyumsuzluk olarak
kabul edilir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
/*
Denge İşlem Hacmi (OBV)
Denge İşlem Hacmi göstergesi (OBV), teknik analizde alım satım baskısını ölçmek için kullanılır.
Kümülatif bir göstergedir; fiyatın yükseldiği günlerde, o günün hacmi toplam OBV toplamına eklenir.
Fiyat düştüyse o günün hacmi OBV toplamından çıkarılır. OBV değeri, daha kolay yorum için bir çizgi olarak çizilir.
Denge İşlem Hacmi öncelikle genel fiyat eğilimlerini teyit etmek veya tanımlamak veya ayrışmalardan sonra fiyat hareketlerini öngörmek için kullanılır.
*/
namespace Matriks.Lean.Algotrader
{
//Ilk parametre indikatörün adı, sınıfın adıyla aynı olmalıdır.
//Ikinci parametre indikatörün Dataserisinin üzerine mi yeni pencereye mi ekleneceğini belirtir. Yeni pencere için ->IndicatorDrawingArea.NewWindow , Data Serisi için IndicatorDrawingArea.OnDataSeries
[IndicatorInformationAttribute("OBVKripex", IndicatorDrawingArea.NewWindow)]
//Indikatörün çizgilerinin isimleri
[IndicatorLineInformationAttribute(new []
{
"OBV"
}
)]
public class OBVKripex : MatriksIndicator
{
public sealed override void OnInit()
{
}
decimal obv = 0;
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
var barDataModel = GetBarData();
if (currentBar < 1)
{
SetLine(0, currentBar, 0);
return ;
}
var close = Instrument.SymbolBarData.Close[currentBar];
var prevClose = Instrument.SymbolBarData.Close[currentBar -1];
var volume = Instrument.SymbolBarData.Volume[currentBar];
if (close>prevClose)
{
obv += volume;
}else if (close<prevClose)
{
obv -= volume;
}
SetLine(currentBar, obv);
}
}
}