24.01.2022
0
3
146
100

Fiyat Hacim Trendi (VPT)

VPT, para akışını ölçmek için kullanılan momentum temelli bir göstergedir.

VPT, hacim birikimi olması bakımından başka bir teknik analiz aracı olan On Balance Volume (OBV) ile benzerdir.

OBV, yükselen ya da düşen bir gün olup olmadığına bağlı olarak toplam günlük hacmi ekler veya çıkarırken VPT yalnızca günlük hacmin bir bölümünü ekler veya çıkarır. VPT toplamına eklenen veya çıkartılan hacim miktarı, önceki günün kapanışına kıyasla mevcut günün fiyatının yükselme veya düşme miktarına bağlıdır.

VPT öncelikle trendleri teyit etmek için ve ayrıca farklılıklar nedeniyle olası işlem sinyallerini bulmak için kullanılabilir.

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;
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("VPTKripex", IndicatorDrawingArea.NewWindow)]
	//Indikatörün çizgilerinin isimleri
	[IndicatorLineInformationAttribute(new []
		{
			"VPT"
		})]

	public class VPTKripex : MatriksIndicator
	{

		public sealed override void OnInit()
		{
		}

		decimal prevValue = 0,close,volume,prevClose,vpt;
		int lastBar = 0;

		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{			
			if (currentBar<1)
			{
				SetLine(currentBar, 0);
				return ;
			}

			if (Instrument.SymbolBarData.Close.ContainsKey(currentBar -1))
			{
				close = Instrument.SymbolBarData.Close[currentBar];
				volume = Instrument.SymbolBarData.Volume[currentBar];
				prevClose = Instrument.SymbolBarData.Close[currentBar -1];				
			}			

			vpt = prevClose != 0? Value[0][currentBar-1] + volume * (close - prevClose) / prevClose:0;

			SetLine(currentBar, vpt);
		}
	}
}

0 Yorum