19.01.2022
0
2
209
100

Macd Histogram

MACD-Histogram, MACD ile Trigger hattı arasındaki mesafeyi ölçer. MACD gibi, MACD-Histogram da sıfır çizgisinin üstünde ve altında dalgalanmaktadır.

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;
using System.Windows.Media;
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("MacdHistogramKripex", IndicatorDrawingArea.NewWindow)]
	//Indikatörün çizgilerinin isimleri
	[IndicatorLineInformationAttribute(new []
		{
			"Macd(0,1)", "Trigger(2)", "Histogram"
		}, new []
		{
			"#00CCFF", "#e600de", "#e7eb2d"
		}, new []
		{
			false, false, false
		}, new []
		{
			0, 0, 5
		}, new []
		{
			1, 1, 1
		}
	)]


	public class MacdHistogramKripex : MatriksIndicator
	{
		[DefaultValue(26)]
		public int UzunPeriod
		{
			get; set;
		}

		[DefaultValue(12)]
		public int KisaPeriod
		{
			get; set;
		}

		[DefaultValue(9)]
		public int TriggerPeriod
		{
			get; set;
		}
		MACD macd;

		public sealed override void OnInit()
		{
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, UzunPeriod, KisaPeriod, TriggerPeriod);
			DrawHorizantal(0);
		}

		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{
			var macdFark = macd.Macd.CurrentValue - macd.MacdTrigger.CurrentValue;

			SetLine(0, currentBar, macd.Macd.CurrentValue);
			SetLine(1, currentBar, macd.MacdTrigger.CurrentValue);
			SetLine(2, currentBar, macdFark);
			
			var renk3 = Value[2][currentBar] >= 0? (Value[2][currentBar] >Value[2][currentBar -1] ? Colors.LimeGreen.ToString() :Colors.GreenYellow.ToString()) :(Value[2][currentBar] >Value[2][currentBar -1] ? Colors.OrangeRed.ToString() :Colors.Red.ToString());

			PaintPoint(currentBar, renk3, 2);
		}
	}
}

0 Yorum