0 beğenilme 0 beğenilmeme
821 kez görüntülendi
Merhaba, Üssel iki hateketli ortalamanın 5 ve 21 (aynı zamanda periotlarını değiştirebilceğimiz şekilde) bar data üstünde al ve sat  kesişimlerine göre advisorPmax de yapıldığı gibi AL ve SAT renkli bar olarak gözüken bir kullanıcı indikatör tasarlayabilirmiyiz Çift çizgili tek bir indikatör.

Yardımlarınızı rica ederim. İyi çalışmalar.
Indikator Builder kategorisinde (83 puan) tarafından | 821 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba,

linkteki indikatörü inceleyebilirsiniz.

https://destek.matriksdata.com/?qa=blob&qa_blobid=6050992541059443533

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
	[IndicatorInformation("SablonAdvisor", IndicatorDrawingArea.OnDataSeries)]
	//Indikatörün çizgilerinin isimleri
	[IndicatorLineInformation(new []
		{
			"mov(0,1,2,3)"
		})]
		public class SablonAdvisor : MatriksIndicator
	{
		[DefaultValue(5)]
		public int KisaPeriod
		{
			get; set;
		}

		[DefaultValue(MovMethod.Exponential)]
		public MovMethod KisaMethod
		{
			get; set;
		}

		[DefaultValue(21)]
		public int UzunPeriod
		{
			get; set;
		}

		[DefaultValue(MovMethod.Exponential)]
		public MovMethod UzunMethod
		{
			get; set;
		}

		MOV movKisa, movUzun;

		//Indicator değerleri hesaplanmadan önce yaratılacak indikatörler burda tanımlanıyor.
		public override void OnInit()
		{
			movKisa = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, KisaPeriod, KisaMethod);
			movUzun = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, UzunPeriod, UzunMethod);

			PointTitle.Add(0, new Dictionary<int, IIndicatorIcons>());
		}

		public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
		{
			//SetLine, indikatörü grafiğe çizdirdiğimiz fonksiyondur
			SetLine(0, currentBar, 0);

			//Seçilen sembolün bardatasına Instrument.SymbolBarData şeklinde ulaşabiliriz.
			var barDataModel = Instrument.SymbolBarData;

			// Bar Boyama
			if (movKisa.CurrentValue > movUzun.CurrentValue)
			{
				PaintBar(currentBar, Colors.Green.ToString());
			}
			if (movKisa.CurrentValue < movUzun.CurrentValue)
			{
				PaintBar(currentBar, Colors.Red.ToString());
			}

			// Al ikonu
			if (CrossAbove(movKisa, movUzun))
			{
				var iconkonum = barDataModel.Low[currentBar];
				SetPointTitle(0, currentBar, "AL", IconLocation.BelowTheChart, iconkonum, true, "GREEN");
				SetLine(0, currentBar, 1);
			}

			// sat ikonu
			if (CrossBelow(movKisa, movUzun))
			{
				var iconkonum = barDataModel.High[currentBar];
				SetPointTitle(0, currentBar, "SAT", IconLocation.AboveTheChart, iconkonum, true, "RED");
				SetLine(0, currentBar, -1);
			}

		}

	}
}

 

(15,422 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



7,516 soru
7,519 cevap
4,405 yorum
8,752 kullanıcı